docker: поддержка nfs томов
This commit is contained in:
parent
239832b1f0
commit
73fb121fda
|
@ -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 <ip-address>(rw,sync,insecure,all_squash,anonuid=1000,anongid=1000,no_subtree_check,nohide,fsid=1)
|
||||
```
|
||||
|
||||
где `<ip-address>` необходимо указать IP-адрес или подсеть
|
||||
|
||||
Установить права `1000:1000` на расшариваемый каталог:
|
||||
|
||||
```sh
|
||||
chown 1000:1000 /volumes/gitea
|
||||
```
|
||||
|
||||
**Для проверки** можно произвести монтирование каталога в `host` системе, где установлен `docker`. К примеру, каталог для монтирования указан в `/mnt/volumes/gitea`:
|
||||
|
||||
```sh
|
||||
mount -t nfs <ip-address>:/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"
|
||||
|
||||
...
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue