【问题标题】:Docker daemon on FreeBSD fails to start: issue with graphdriver and zfsFreeBSD 上的 Docker 守护进程无法启动:graphdriver 和 zfs 的问题
【发布时间】:2020-08-21 10:32:40
【问题描述】:

我在 x86 FreeBSD 上。我按照这里的说明进行操作:https://wiki.freebsd.org/Docker

当我启动 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

【问题讨论】:

  • 你可以尝试创建一个额外的挂载zfs create -o mountpoint=/var/lib/docker zroot/docker2
  • 感谢您的想法...看起来这让我更接近但尚未开始 - 我在帖子的编辑中发布了调试消息...如果您有任何想法...跨度>
  • 试试这些dockerd -dD --exec-opt native.cgroupdriver=systemddockerd -dD --exec-opt native.cgroupdriver=cgroupfs
  • 不幸得到bash: dockerd: command not found ...
  • docker -dD --exec-opt native.cgroupdriver=systemd(无 dockerd)运行这些命令会得到与上面的编辑相同的结果(未知的 exec 驱动程序),但这可能与使用 dockerd 的命令不同(它不与 FreeBSD 安装一起存在)

标签: docker freebsd zfs


【解决方案1】:

这里有几个部分。首先,您确实需要将 /var/lib/docker 安装在 ZFS 上。

其次,你需要在/etc/group中创建一个docker组。

pw groupadd docker

它看起来还试图点击 procfs,这在 FreeBSD 的几个版本中默认未启用。将此添加到 /etc/fstab

proc            /proc   procfs  rw 0 

您还需要使用足够新的 FreeBSD 版本。我记得它需要 10.x 或更高版本。

docker 项目不想为 FreeBSD 支持获取上游补丁。在那之后,支持 docker 的努力就分崩离析了。微软甚至试图在 FreeBSD 上为 docker 举办一些黑客马拉松来鼓励它。建议不要在 FreeBSD 上使用 docker,尤其是在生产环境中。事实上,在撰写本文时,docker-freebsd 端口自 2018 年以来就没有被修改过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多