Демон Docker во FreeBSD не запускается: проблема с графическим драйвером и zfs

Я на x86 FreeBSD. Я следовал инструкциям здесь: https://wiki.freebsd.org/Docker.

Когда я запускаю докер, я получаю

[root@udoo:dev ]# docker run -it quay.io/skilbjo/router-logs bash
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

Поэтому я перезапускаю демон...

[root@udoo:dev ]# service docker start && docker -dD
Starting docker...
DEBU[0000] Registering GET, /info
DEBU[0000] Registering GET, /images/search
DEBU[0000] Registering GET, /containers/ps
... etc ....
DEBU[0000] Registering POST, /containers/{name:.*}/pause
DEBU[0000] Registering POST, /containers/{name:.*}/exec
DEBU[0000] Registering POST, /containers/{name:.*}/rename
DEBU[0000] Registering DELETE, /containers/{name:.*}
DEBU[0000] Registering DELETE, /images/{name:.*}
DEBU[0000] Registering OPTIONS,
WARN[0000] Kernel version detection is available only on linux
DEBU[0000] Warning: could not change group /var/run/docker.sock to docker: Group docker not found
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
FATA[0000] Error starting daemon: error initializing graphdriver: Failed to find zfs dataset mounted on '/var/lib/docker' in /proc/mounts

некоторая другая полезная информация (точно так, как описано в документах):

[root@udoo:dev ]# zfs list
NAME           USED  AVAIL  REFER  MOUNTPOINT
zroot         10.6M  3.74G    23K  /zroot
zroot/docker  10.4M  3.74G  10.4M  /usr/docker
[root@udoo:dev ]# zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zroot  3.88G  10.6M  3.86G         -     0%     0%  1.00x  ONLINE  -
[root@udoo:dev ]# docker version
Client version: 1.7.0-dev
Client API version: 1.19
Go version (client): go1.8.3
Git commit (client): 582db78
OS/Arch (client): freebsd/amd64
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

Что тут происходит? Почему демон docker не загружается? Я нашел очень мало, исследуя "/var/lib/docker in /proc/mounts".

РЕДАКТИРОВАТЬ: предложение @tarun-lalwani приближает меня, но еще не совсем началось...

DEBU[0000] Warning: could not change group /var/run/docker.sock to docker: Group docker not found
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
DEBU[0000] [zfs] zfs get -rHp -t filesystem all zroot/docker2
DEBU[0000] Using graph driver zfs
DEBU[0000] Using default logging driver json-file
DEBU[0000] Creating images graph
DEBU[0000] Restored 0 elements
DEBU[0000] Creating repository list
DEBU[0000] [bridge] init driver
WARN[0000] port allocator - using fallback port range 49153-65535 due to error: open /proc/sys/net/ipv4/ip_local_port_range: no such file or directory
DEBU[0000] [bridge] found ip address: 172.17.42.1/16
FATA[0000] Error starting daemon: unknown exec driver native

person John Skilbeck    schedule 02.09.2017    source источник
comment
Можешь попробовать создать дополнительное крепление zfs create -o mountpoint=/var/lib/docker zroot/docker2   -  person Tarun Lalwani    schedule 02.09.2017
comment
Спасибо за идею... похоже, это приближает меня, но еще не началось - я разместил отладочное сообщение в редактировании сообщения... если у вас есть какие-либо мысли...   -  person John Skilbeck    schedule 02.09.2017
comment
Попробуйте эти dockerd -dD --exec-opt native.cgroupdriver=systemd или dockerd -dD --exec-opt native.cgroupdriver=cgroupfs   -  person Tarun Lalwani    schedule 02.09.2017
comment
К сожалению, получение bash: dockerd: command not found ...   -  person John Skilbeck    schedule 02.09.2017
comment
Выполнение этих команд как docker -dD --exec-opt native.cgroupdriver=systemd (без dockerd) дает тот же результат, что и при редактировании выше (неизвестный драйвер exec), но это может быть не та же команда, что и с dockerd (которого нет при установке FreeBSD)   -  person John Skilbeck    schedule 02.09.2017
comment
Тогда, вероятно, попросите помощи на форумах докеров или подождите, пока кто-нибудь не вмешается. Докер переключился на свой собственный драйвер. Возможно, этого не хватает во FreeBSD? blog.docker.com/2014 /03/   -  person Tarun Lalwani    schedule 02.09.2017
comment
Да, я заметил, что установочный пакет докера из менеджера пакетов FreeBSD имеет временную метку 2015_06_15... так что это очень старый... разработчики докера, возможно, больше не поддерживают его. Но я попробую на форумах докеров и сообщу здесь!   -  person John Skilbeck    schedule 02.09.2017
comment
Давайте продолжим обсуждение в чате.   -  person Tarun Lalwani    schedule 02.09.2017
comment
Похоже, что родной докер на FreeBSD сильно альфа-версия и очень устарел... я рекомендую запустить небольшую виртуальную машину Linux на FreeBSD и запустить docker-machine на виртуальной машине Linux...   -  person John Skilbeck    schedule 26.09.2017


Ответы (1)


Здесь есть несколько штук. Во-первых, вам нужно смонтировать /var/lib/docker на ZFS.

Во-вторых, вам нужно создать группу докеров в /etc/group.

pw groupadd docker

Также похоже, что он пытается поразить procfs, который не включен по умолчанию во FreeBSD для нескольких выпусков. Добавьте это в /etc/fstab

proc            /proc   procfs  rw 0 

Вы также должны иметь достаточно новую версию FreeBSD. Насколько я помню, для этого требовалась версия 10.x или выше.

Проект Docker не хотел принимать исправления для поддержки FreeBSD. После этого усилия по поддержке докеров развалились. Microsoft даже пыталась поощрять это с помощью некоторых хакатонов по докеру на FreeBSD. Не рекомендуется использовать докер, особенно для производства, на FreeBSD. Фактически, на момент написания этой статьи порт docker-freebsd не менялся с 2018 года.

person Lucas Holt    schedule 21.08.2020