From 73fb121fda598d068b777e94f9f88502aaaafae9 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Fri, 24 Jun 2022 10:22:34 +0300 Subject: [PATCH] =?UTF-8?q?docker:=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=D0=B6=D0=BA=D0=B0=20nfs=20=D1=82=D0=BE=D0=BC=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- program/src/docker.md | 80 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 3 deletions(-) diff --git a/program/src/docker.md b/program/src/docker.md index 2771b8e..0f0a45b 100644 --- a/program/src/docker.md +++ b/program/src/docker.md @@ -8,7 +8,7 @@ docker system prune -a ``` -### image +## image Список загруженных `image`: @@ -74,7 +74,7 @@ docker load < image.tar.gz docker load --input image.tar ``` -### container +## container Список контейнеров: @@ -116,7 +116,7 @@ docker run --restart always --name mynginx -p 8080:80 -d nginx:alpine - `-d` - запустить контейнер в фоновом режиме (*detached mode*) - `nginx:alpine` - имя образа `image`, на основе которого запускается контейнер -### volume +## volume Список `volume`: @@ -135,3 +135,77 @@ docker volume rm volume_name volume_name ```sh 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` внести запись: + +```sh +/volumes/gitea (rw,sync,insecure,all_squash,anonuid=1000,anongid=1000,no_subtree_check,nohide,fsid=1) +``` + +где `` необходимо указать IP-адрес или подсеть + +Установить права `1000:1000` на расшариваемый каталог: + +```sh +chown 1000:1000 /volumes/gitea +``` + +**Для проверки** можно произвести монтирование каталога в `host` системе, где установлен `docker`. К примеру, каталог для монтирования указан в `/mnt/volumes/gitea`: + +```sh +mount -t nfs :/volumes/gitea /mnt/volumes/gitea +``` + +Каталог в `host` системе будет смонтирован с правами `1000:1000`. + +##### Создание `volume` вручную + +Создание `volume` с использованием `nfs` тома: + +```sh +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`: + +```sh +... + +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" + +... +```