5.7 KiB
Docker
Работа с image, container, volume и network
Удаление всех image, container, volume, network:
docker system prune -a
image
Список загруженных image:
docker images -a
или
docker image ls -a
Удаление выбранных image:
docker rmi image image
Удаление всех image:
docker rmi $(docker images -a -q)
Выгрузка image в файл:
docker save repository:tag | gzip > image.tar.gz
или
docker save -o image.tar repository:tag
или
docker save image > image.tar
где
repository:tag- образ выгружаемогоimage
Например:
docker save nginx:alpine | gzip > nginx_alpine.tar.gz
Загрузка image из файла:
docker load < image.tar.gz
или
docker load --input image.tar
container
Список контейнеров:
docker ps -a
или
docker container ls -a
Удаление выбранных контейнеров:
docker rm ID_or_Name ID_or_Name
Удаление всех контейнеров:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Запуск контейнера:
docker run --restart always --name mynginx -p 8080:80 -d nginx:alpine
где
run- запуск контейнера--restart- всегда (always) стартовать автоматически контейнер после запускаdocker--name- установить имя (mynginx) контейнера-p- пробросить порт80из контейнера в хост порт8080-d- запустить контейнер в фоновом режиме (detached mode)nginx:alpine- имя образаimage, на основе которого запускается контейнер
volume
Список volume:
docker volume ls
Удаление выбранных volume:
docker volume rm volume_name volume_name
Удаление всех volume:
docker volume prune
Монтирование volume
Использование nfs
При монтировании сетевого volume типа nfs необходимо убедиться, что права (uid и gid) расшариваемого каталога, установленные на сервере, совпадают с правами пользователя, от которого выполняется запуск контейнера, а также выставлены правильные права на расшариваемый каталог в файле /etc/exports на сервере nfs.
Т.е., необходимо, чтобы на сервере, где поднят nfs-server в файле /etc/exports были правильно указаны права (uid и gid) каталогу, который будет расшариваться и использоваться в качестве volume, и сам расшариваемый каталог обладал соответствующими правами (uid и gid).
Например:
Необходимо поднять контейнер gitea с использованием nfs тома. Т.к. gitea запускается с правами 1000:1000 - то и производит запись в volume от этих же прав.
К примеру, на nfs сервере необходимо использовать каталог /volumes/gitea в качестве расшариваемого ресурса для использования в качестве volume для gitea.
В файле /etc/exports внести запись:
/volumes/gitea <ip-address>(rw,sync,insecure,all_squash,anonuid=1000,anongid=1000,no_subtree_check,nohide,fsid=1)
где <ip-address> необходимо указать IP-адрес или подсеть
Установить права 1000:1000 на расшариваемый каталог:
chown 1000:1000 /volumes/gitea
Для проверки можно произвести монтирование каталога в host системе, где установлен docker. К примеру, каталог для монтирования указан в /mnt/volumes/gitea:
mount -t nfs <ip-address>:/volumes/gitea /mnt/volumes/gitea
Каталог в host системе будет смонтирован с правами 1000:1000.
Создание volume вручную
Создание volume с использованием nfs тома:
docker volume create --driver local --opt type=nfs --opt o=addr=192.168.1.1,nfsvers=4,rw,async,rw --opt device=:/volumes/gitea gitea_data
Создание volume в compose
Для использования nfs тома в docker-compose необходимо указать в секции volume свой том и в сервисе указать используемый volume:
...
services:
gitea:
...
volumes:
- type: volume
source: gitea
target: /data
- /etc/timezone:/etc/timezone:ro
...
...
volumes:
gitea:
driver: local
driver_opts:
type: nfs
o: addr=192.168.1.1,nfsvers=4,rw,async
device: ":/volumes/gitea"
...