如果文件/etc/docker/daemon.json存在,则无法启动Docker守护程序

时间:2018-08-20 01:16:05

标签: docker

/etc/docker/daemon.json存在,但Docker不再启动!

我从snap安装了docker,因此服务docker restart无法正常工作。
我从

开始docker
sudo snap start docker

journalctl -xe的输出为:

Aug  20 09:08:44 user-TV kernel: aufs aufs_fill_super:912:mount[1404]: no arg
Aug  20 09:08:44 user-TV kernel: overlayfs: missing 'lowerdir'
Aug  20 08:55:29 user-TV audit[644]: AVC apparmor="DENIED" operation="open" profile="snap.docker.dockerd" name="/etc/docker/daemon.json" pid=644 comm="dockerd" requested_mask="r" denied_mask="r" fsuid=0 ouid=1000
Aug  20 08:55:29 user-TV docker.dockerd[644]: unable to configure the Docker daemon with file /etc/docker/daemon.json: open /etc/docker/daemon.json: permission denied
Aug  20 08:55:29 user-TV kernel: audit: type=1400 audit(1534726529.513:7216): apparmor="DENIED" operation="open" profile="snap.docker.dockerd" name="/etc/docker/daemon.json" pid=644 comm="dockerd" requested_mask="r" denied_mask="r" fsuid=0 ouid=1000
Aug  20 08:55:29 user-TV systemd[1]: snap.docker.dockerd.service: Main process exited, code=exited, status=1/FAILURE

为什么打开/etc/docker/daemon.json失败:即使我将chmod 777拒绝,第4行的权限也被拒绝?

文件内容为:

{
    "experimental": true
}

docker版本为17.06.2-ce

2 个答案:

答案 0 :(得分:1)

您有一个AppArmor策略,该策略阻止了对此文件的访问。

  

8月20日08:55:29用户电视审核[644]:AVC apparmor =“ DENIED” operation =“ open” profile =“ snap.docker.dockerd” name =“ / etc / docker / daemon.json” pid = 644 comm =“ dockerd” request_mask =“ r”否认_mask =“ r” fsuid = 0 ouid = 1000

修改装甲以允许这样做,您应该没事

答案 1 :(得分:0)

我将Docker配置为侦听Unix套接字(默认)和全接口TCP端口。更新为Docker version 18.09.0, build 4d60db4后,我无法再在/etc/docker/daemon.json上使用Centos 7.5时启动Docker。

journalctl -xe报告:

Nov 12 08:58:45 my.dev dockerd[6778]: unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: hosts: (from flag: [unix://],

在systemd系统上,daemon.json的配置选项为no longer supported。相反:

  1. sudo rm /etc/daemon/daemon.json
  2. sudo systemctl编辑docker.service [Service] ExecStart= ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:1234
  3. sudo systemctl守护程序重新加载
  4. sudo systemctl重新启动docker.service