Запуск отдельного контейнера - это лишь верхушка айсберга. Когда сервисы зависят друг от друга (например, веб‑приложение + БД), лучше описать их в docker‑compose.yaml и запустить одной командой docker compose up.
services:
app:
image: my/app:latest
ports: ["8080:80"]
depends_on: [db]
db:
image: postgres:14
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: secret
POSTGRES_DB: appdb
volumes: ["pgdata:/var/lib/postgresql/data"]
volumes:
pgdata:
По умолчанию контейнеры используют UID 0 хоста. Если в образе есть уязвимость, злоумышленник может "выпрыгнуть" из контейнера и получить root‑доступ к системе.
Что делать:
| Способ | Как включить | Когда подходит |
|---|---|---|
| Rootless‑режим Docker | dockerd-rootless-setuptool.sh install |
Если хотите полностью избавиться от root‑прав |
Флаг --user |
docker run --user 1000:1000 ... |
Для простых контейнеров, где нужен обычный пользователь |
| USER в Dockerfile | USER appuser |
При построении собственного образа |
| Podman | podman run ... |
Если хотите "из коробки" без root |
Длинные команды (например, запуск Pi‑hole) быстро "засоряют" терминал.
lazydocker показывает контейнеры, образы, тома и сети в виде панелей, позволяя управлять ими клавишами.source /usr/share/bash-completion/completions/docker) и получайте подсказки по опциям и именам контейнеров нажатием Tab.alias dps='docker ps'
alias dcu='docker compose up -d'
alias dcl='docker compose down'
--user или Podman.Эти простые приёмы избавят от большинства "болей" при первом знакомстве с Docker и помогут быстрее перейти к продуктивной работе.
Добавить комментарий