正确启动docker守护进程监听特定端口的方法

sen*_*atz 7 ubuntu port daemon bind docker

我是docker的新手,想要以守护进程模式启动它,听取特定的IP地址和端口.在文档中,据说这可以通过写作来完成sudo /usr/bin/docker daemon -H 0.0.0.0:5555.然后它说我可以使用此命令列出正在运行的容器docker ps.如果我尝试这个,我收到以下消息:

获取http:///var/run/docker.sock/v1.20/containers/json?all = 1:拨打unix /var/run/docker.sock:没有这样的文件或目录.

  • 您是否尝试在没有TLS的情况下连接到启用TLS的守护程序?
  • 您的docker守护程序是否正常运行?

我无法与之互动.我找了一个解决方案,但没有运气.有什么建议?

PS如何在后台运行此守护程序?我尝试附加一个&但是我一直停留在输出上,直到按下ctrl + c.

提前致谢

Ort*_*ier 7

在带有docker-ce(17.03.1~ce-0~ubuntu-xenial)的Ubuntu(16.04 LTS)上执行以下操作,使docker侦听TCP端口而不是套接字.

添加/etc/systemd/system/docker.service.d/override.conf包含以下内容的文件:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
Run Code Online (Sandbox Code Playgroud)

添加/etc/docker/daemon.json包含以下内容的文件

{
    "hosts": [
        "tcp://127.0.0.1:2375"
    ] 
}
Run Code Online (Sandbox Code Playgroud)

重新加载(systemctl daemon-reload)并重启(systemctl restart docker.service)泊坞窗.

供参考:https://github.com/moby/moby/issues/25471

编辑:

小心,所以恶魔只会听取该网络端口忽略本地请求.要使docker同时监听远程和本地,请编辑daemon.json但保留标准的unix套接字

{
        "hosts" : [
                "unix:///var/run/docker.sock",
                "tcp://<docker-host-ip-or-localhost>:2375"
        ]
}
Run Code Online (Sandbox Code Playgroud)

Docker守护程序连接选项文档


sen*_*atz 4

我找到了解决问题的方法.我指定在IP x和端口y上运行的docker,但docker只监听该套接字.我必须使用unix套接字添加另一个-H标志,以便侦听本地请求:

sudo /usr/bin/docker daemon -H tcp://0.0.0.0:5555 -H unix:///var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)