【问题标题】:Cannot connect to docker daemon无法连接到 docker 守护进程
【发布时间】:2016-08-16 09:48:58
【问题描述】:

我已经尝试了一切:添加用户,用 sudo 尝试过,但我没有修复它。

我试过了:sudo docker ps 和 docker ps

Docker 版本:1.11.2 操作系统/Archlinux

给出错误:无法连接到 Docker 守护程序。 docker daemon 是否在此主机上运行?

systemctl status docker :
 ● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service;  enabled;   vendor preset: disabled)
Active: active (running) since Tue 2016-08-16 12:34:14 UTC; 13min ago
 Docs: https://docs.docker.com
Main PID: 2323 (docker)
Tasks: 21 (limit: 4915)
Memory: 24.2M
  CPU: 649ms
CGroup: /system.slice/docker.service
       ├─2323 /usr/bin/docker daemon -H fd://
       └─2339 docker-containerd -l /var/run/docker/libcontainerd /docker-containerd.sock --runtime docker-run
Aug 16 12:34:13 localhost docker[2323]: time="2016-08-16T12:34:13.730808484Z" level=info msg="[graphdriver] usin
Aug 16 12:34:13 localhost docker[2323]: time="2016-08-16T12:34:13.762838102Z" level=info msg="Graph migration to
Aug 16 12:34:13 localhost docker[2323]: time="2016-08-16T12:34:13.769883452Z" level=info msg="Firewalld running:
Aug 16 12:34:14 localhost docker[2323]: time="2016-08-16T12:34:14.023823826Z" level=info msg="Default bridge (do
Aug 16 12:34:14 localhost docker[2323]: time="2016-08-16T12:34:14.179897054Z" level=info msg="Loading containers
Aug 16 12:34:14 localhost docker[2323]: time="2016-08-16T12:34:14.179994020Z" level=info msg="Loading containers
Aug 16 12:34:14 localhost docker[2323]: time="2016-08-16T12:34:14.180008132Z" level=info msg="Daemon has complet
Aug 16 12:34:14 localhost docker[2323]: time="2016-08-16T12:34:14.180026066Z" level=info msg="Docker daemon" com
Aug 16 12:34:14 localhost docker[2323]: time="2016-08-16T12:34:14.187118716Z" level=info msg="API listen on 0.0.
Aug 16 12:34:14 localhost systemd[1]: Started Docker Application Container Engine.


ps aux | grep docker
root      2681  0.1  0.9 553580 35416 ?        Ssl  12:59   0:00 /usr/bin/docker daemon -H fd://
root      2694  0.0  0.3 287016 11724 ?        Ssl  12:59   0:00 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
cuneyt    2835  0.0  0.0  11056  2228 pts/1    S+   13:01   0:00 grep docker

编辑:当我手动运行时,docker 守护进程正在工作并且 API 监听 /var/run/docker.sock

当我使用 systemctl start docker API Listen on 0.0.0.0:3000 启动它时,我认为这是问题所在,但我不知道如何解决它?

systemctl cat docker.service

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/docker daemon -H fd://
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

[Install]
WantedBy=multi-user.target

【问题讨论】:

  • 您是否遵循了安装过程? wiki.archlinux.org/index.php/Docker
  • 是的:/它正在我们的另一台计算机上工作
  • 请粘贴systemctl cat docker.service的输出
  • @Boynux 添加日志
  • 我没有修复它并重新安装操作系统,所以如果有人无法修复它,重新安装是个好主意:)

标签: docker


【解决方案1】:

安装documentation 状态:

docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。经过 默认Unix socket归root用户所有,其他用户可以 使用 sudo 访问它。出于这个原因,docker daemon 总是作为 根用户。

所以,为了避免在使用 docker 命令时必须使用 sudo, 创建一个名为 docker 的 Unix 组并向其添加用户。当码头工人 守护进程启动,它使 Unix 套接字的所有权可读/写 由码头工人组。

创建 docker 组并添加您的用户:

以具有 sudo 权限的用户身份登录。 (你用来安装docker的那个) 创建 docker 组。

$ sudo groupadd docker

将您的用户添加到 docker 组。

$ sudo usermod -aG docker $USER

退出并重新登录。 这可确保您的用户以正确的权限运行。 通过不使用 sudo 运行 docker 来验证您的工作。

$ docker run hello-world

如果您仍然遇到相同的错误,请检查是否没有为您的 shell 设置 DOCKER_HOST 环境变量。如果是,请取消设置。

$ unset DOCKER_HOST

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2017-06-14
    • 2016-04-04
    • 2020-06-03
    • 2016-10-25
    • 2021-10-27
    • 2016-02-07
    相关资源
    最近更新 更多