ошибка создания оверлея для монтирования nfs - PullRequest
0 голосов
/ 16 января 2019

Я использую докер версии 17.05.0.

Вместо использования корневого каталога Docker: /var/lib/docker, я использую каталог /u01, который монтируется на виртуальной машине с помощью общего ресурса NFS.

Docker Root Dir: / u01 / docker

Драйвер хранилища: оверлей2

# cat daemon.json
{
  "data-root": "/u01/docker",
  "storage-driver": "overlay2"
}

Теперь, когда я запускаю демон, команда docker pull работает нормально, но когда я пытаюсь создать образ, выдается следующее сообщение об ошибке:

Step 2/14 : MAINTAINER RK
error creating overlay mount to /u01/docker/overlay2/f5aebc4aa90797ccfab90bfb17a44314041b4694b26aa5a1e82eba95384f9924-init/merged: invalid argument

Не уверен, что здесь не так.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Вы действительно не должны запускать Docker с сервером NFS в качестве резервной файловой системы. Даже если бы вы могли заставить его работать, это было бы медленно, и проблема распределения образов на несколько хостов уже была решена с помощью серверов реестра и многоразовых слоев.

Сама файловая система overlay2 задокументирована как требующая xfs с ftype = 1 или ext4 в качестве резервной файловой системы, а не NFS.

Где вы можете использовать NFS с томами, установленными в контейнеры для постоянных данных. Эти тома будут существовать вне контейнера и не будут сохраняться в реестре, поэтому их перенос в NFS имеет смысл. Вот несколько примеров различных способов монтирования тома с помощью NFS:

  # create a reusable volume
  $ docker volume create --driver local \
      --opt type=nfs \
      --opt o=nfsvers=4,addr=nfs.example.com,rw \
      --opt device=:/path/to/dir \
      foo

  # or from the docker run command
  $ docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
    foo

  # or to create a service
  $ docker service create \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
    foo

  # inside a docker-compose file
  ...
  volumes:
    nfs-data:
      driver: local
      driver_opts:
        type: nfs
        o: nfsvers=4,addr=nfs.example.com,rw
        device: ":/path/to/dir"
  ...
0 голосов
/ 16 января 2019

Давайте рассмотрим пару вещей:

  1. overlay2 является драйвером хранилища по умолчанию, но, как видно из документации драйвера хранилища докеров , действительно только для xfs с ftype = 1, ext4 Возможно, ваш /u01/docker находится в другой файловой системе.

  2. Если ваш /u01/docker является xfs с типом ftype = 1 или ext4, проверьте, отключены ли selinux.

Чтобы проверить совместимость системы поддержки с вашим оверлеем2, вы можете выполнить:

$ docker info

Containers: 0
Images: 0
Storage Driver: overlay2
 Backing Filesystem: xfs
<output truncated>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...