wiki/docs/docker/Команды.md
2025-02-09 20:47:57 +03:00

91 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Полезные источники
- [**Базовые команды 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 или системы, но не перезапустится, если его остановили вручную.