### Полезные источники - [**Базовые команды Docker**](https://github.com/python-dev-blog/docker-demo) - [**Базовые команды docker-compose**](https://github.com/python-dev-blog/docker-compose-demo) - [**Линтер для Docker**](https://github.com/hadolint/hadolint) ### Команды - **`docker ps --format "{{.Names}}"`** - только имена контейнеров - `docker volume ls` - список всех Docker томов на хосте - `docker volume inspect ` - информацию о конкретном docker томе, например, его местоположение, размер и настройки и тп - `docker inspect | grep -i volumes` - ищет информацию о томах, которые примонтированы к контейнеру - `docker port ` - показывает маппинг портов - `docker inspect | grep -i port` - подробности о проброшенных портах - `docker inspect | grep -i mount` - показывает информацию о монтированиях (volumes, bind mounts, tmpfs) ??? tip "Монтирования в Docker" 1. Named Volume - создаётся и управляется Docker. Хранится в `/var/lib/docker/volumes/` ```yaml services: db: image: postgres volumes: - db_data:/var/lib/postgresql/data volumes: db_data: ``` 2. Anonymous Volume - создаётся и управляется Docker. Хранится в `/var/lib/docker/volumes/`, но вместо имени хэш, например, `/var/lib/docker/volumes/2f4b7c3e8e1a7d9b8b12d34c7e4b1234/` ```yaml services: app: image: nginx volumes: - /usr/share/nginx/html 3. Bind Mount - привязка к директории или файлу на хосте. Если мы прокидываем файл и его не существует Docker создаст каталог. ```yaml services: web: image: nginx volumes: - ./html:/usr/share/nginx/html:ro ``` `:ro` - контейнеру том доступен только для чтения, по умолчанию доступен и на запись (`:rw`) 4. Tmpfs Mount - данные хранятся в оперативке (RAM), а не на диске, при перезапуске, удалении контейнера данные будут потеряны. ```yaml services: cache: image: redis tmpfs: - /tmp ``` 5. External Volume - внешний том, например, NFS. ```yaml services: app: image: nginx volumes: - nfs_data:/usr/share/nginx/html volumes: nfs_data: driver: local driver_opts: type: nfs o: addr=192.168.1.100,rw device: :/exported/path ``` - `docker stats` - статистика по запущенным контейнерам - CONTAINER ID - Уникальный идентификатор контейнера. - NAME - Имя контейнера. - CPU % - Использование CPU в процентах. - MEM USAGE / LIMIT - Использование памяти / установленный лимит. - MEM % - Доля использования памяти от лимита. - NET I/O - Сетевой ввод/вывод данных. - BLOCK I/O - Объем операций ввода/вывода на диске. - PIDS - Количество процессов внутри контейнера. - `docker info` - инфа о докер (docker info --format '{{json .}}' - в json) - Параметры для `restart` - `no` (или не указывать restart вовсе) — контейнер не будет перезапускаться автоматически. Это значение по умолчанию - `always` — контейнер будет автоматически перезапущен при любом завершении работы (даже при ручной остановке через docker stop). Он также перезапустится после перезагрузки Docker или хоста - `on-failure` — контейнер будет перезапущен только в случае выхода с ненулевым статусом (ошибкой). Вы можете также указать максимальное количество перезапусков, например,`on-failure:3` - `unless-stopped` — контейнер будет автоматически перезапущен при сбоях и после перезагрузки Docker или системы, но не перезапустится, если его остановили вручную.