91 lines
5.0 KiB
Markdown
91 lines
5.0 KiB
Markdown
### Полезные источники
|
||
|
||
- [**Базовые команды 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 <volume_name>` - информацию о конкретном docker томе, например, его местоположение, размер и настройки и тп
|
||
- `docker inspect <container_name> | grep -i volumes` - ищет информацию о томах, которые примонтированы к контейнеру
|
||
- `docker port <container_name>` - показывает маппинг портов
|
||
- `docker inspect <container_name> | grep -i port` - подробности о проброшенных портах
|
||
- `docker inspect <container_name> | 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 или системы, но не перезапустится, если его остановили вручную.
|
||
|