启动监听特定端口的 docker 守护程序的正确方法
Correct way to start docker daemon listening to specific port
我是 docker 的新手,想以守护进程模式启动它,监听特定的 IP 地址和端口。在documentation中据说可以通过写sudo /usr/bin/docker daemon -H 0.0.0.0:5555
来完成。然后它说我可以使用此命令 docker ps
列出 运行ning 容器。如果我尝试这样做,我会收到以下消息:
Get http:///var/run/docker.sock/v1.20/containers/json?all=1: dial unix /var/run/docker.sock: no such file or directory.
- Are you trying to connect to a TLS-enabled daemon without TLS?
- Is your docker daemon up and running?
我无法与之互动。我在寻找解决方案,但没有运气。有什么建议吗?
P.S。我如何在后台 运行 这个守护进程?我尝试附加一个 & 但我一直停留在输出上,直到按下 ctrl+c。
提前致谢
在 Mac OSX 你会 运行 Docker Quickstart Terminal App 看到:
Machine default already exists in VirtualBox.
Starting machine default...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
Setting environment variables for machine default...
...
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
现在
docker ps
应该可以
在 Linux 例如Ubuntu 可能需要在前面加上 sudo。
例如。
docker ps
将导致:
Get http:///var/run/docker.sock/v1.20/containers/json: dial unix /var/run/docker.sock: permission denied.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?
但是
sudo docker ps
会起作用。
见
https://docs.docker.com/articles/basics/
要检查您的 docker 服务是否 运行ning 您可以调用
sudo service --status-all 2>&1 | grep docker
它应该显示:
[ - ] docker
有时您的 docker 安装可能已损坏
参见:Docker daemon does not start or restart
我找到了解决问题的方法。我在 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
出于某种原因,Phoenix 的解决方案给我错误。所以我找到了另一种方法-
我编辑了 /etc/sysconfig/docker 并更改了 OPTIONS 参数
OPTIONS='--selinux-enabled -H=unix:///var/run/docker.sock -H=0.0.0.0:2375'
然后我重新启动了 docker 守护程序
systemctl restart docker
成功了。
在 Ubuntu (16.04 LTS) 上使用 docker-ce (17.03.1~ce-0~ubuntu-xenial
) 执行以下操作以使 docker 监听 TCP 端口而不是套接字。
添加一个文件/etc/systemd/system/docker.service.d/override.conf
,内容如下:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
添加一个文件/etc/docker/daemon.json
,内容如下
{
"hosts": [
"tcp://127.0.0.1:2375"
]
}
重新加载 (systemctl daemon-reload
) 并重新启动 (systemctl restart docker.service
) docker.
供参考:https://github.com/moby/moby/issues/25471
编辑:
小心,恶魔只会监听那个网络端口而忽略本地请求。
要使 docker 同时监听远程和本地,请编辑 daemon.json 但保留标准 unix 套接字
{
"hosts" : [
"unix:///var/run/docker.sock",
"tcp://<docker-host-ip-or-localhost>:2375"
]
}
Docker 守护程序连接选项 docs
这个线程非常有用,所以我想贡献如何让它在 Ubuntu 14.04.1 LTS
和 docker 1.12.6-cs13
上工作( 可能 也可以与 docker-ce 版本一起使用)。 systemd
方法(也 /etc/sysconfig/docker
)对于这个 Ubuntu 年份是不可能的,官方 docker 文档在撰写本文时没有 post 安装指南使用 upstart
为 Ubuntu 14.04.1 LTS
使 docker 守护程序在网络上侦听。我发现以下方法效果很好:
创建/etc/default/docker
包含内容的文件
DOCKER_OPTS = "-H tcp://MACHINE-IP:2375 -H unix:///var/run/docker.sock"
重新启动 docker 服务 sudo service docker restart
。这样做之后,docker 守护进程开始监听网络并且守护进程日志看起来很干净。如果有更好的方法,也许更有经验的 docker 用户可以提出意见。
我是 docker 的新手,想以守护进程模式启动它,监听特定的 IP 地址和端口。在documentation中据说可以通过写sudo /usr/bin/docker daemon -H 0.0.0.0:5555
来完成。然后它说我可以使用此命令 docker ps
列出 运行ning 容器。如果我尝试这样做,我会收到以下消息:
Get http:///var/run/docker.sock/v1.20/containers/json?all=1: dial unix /var/run/docker.sock: no such file or directory.
- Are you trying to connect to a TLS-enabled daemon without TLS?
- Is your docker daemon up and running?
我无法与之互动。我在寻找解决方案,但没有运气。有什么建议吗?
P.S。我如何在后台 运行 这个守护进程?我尝试附加一个 & 但我一直停留在输出上,直到按下 ctrl+c。
提前致谢
在 Mac OSX 你会 运行 Docker Quickstart Terminal App 看到:
Machine default already exists in VirtualBox.
Starting machine default...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
Setting environment variables for machine default...
...
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
现在
docker ps
应该可以
在 Linux 例如Ubuntu 可能需要在前面加上 sudo。 例如。
docker ps
将导致:
Get http:///var/run/docker.sock/v1.20/containers/json: dial unix /var/run/docker.sock: permission denied.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?
但是
sudo docker ps
会起作用。
见 https://docs.docker.com/articles/basics/
要检查您的 docker 服务是否 运行ning 您可以调用
sudo service --status-all 2>&1 | grep docker
它应该显示:
[ - ] docker
有时您的 docker 安装可能已损坏 参见:Docker daemon does not start or restart
我找到了解决问题的方法。我在 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
出于某种原因,Phoenix 的解决方案给我错误。所以我找到了另一种方法-
我编辑了 /etc/sysconfig/docker 并更改了 OPTIONS 参数
OPTIONS='--selinux-enabled -H=unix:///var/run/docker.sock -H=0.0.0.0:2375'
然后我重新启动了 docker 守护程序
systemctl restart docker
成功了。
在 Ubuntu (16.04 LTS) 上使用 docker-ce (17.03.1~ce-0~ubuntu-xenial
) 执行以下操作以使 docker 监听 TCP 端口而不是套接字。
添加一个文件/etc/systemd/system/docker.service.d/override.conf
,内容如下:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
添加一个文件/etc/docker/daemon.json
,内容如下
{
"hosts": [
"tcp://127.0.0.1:2375"
]
}
重新加载 (systemctl daemon-reload
) 并重新启动 (systemctl restart docker.service
) docker.
供参考:https://github.com/moby/moby/issues/25471
编辑:
小心,恶魔只会监听那个网络端口而忽略本地请求。 要使 docker 同时监听远程和本地,请编辑 daemon.json 但保留标准 unix 套接字
{
"hosts" : [
"unix:///var/run/docker.sock",
"tcp://<docker-host-ip-or-localhost>:2375"
]
}
Docker 守护程序连接选项 docs
这个线程非常有用,所以我想贡献如何让它在 Ubuntu 14.04.1 LTS
和 docker 1.12.6-cs13
上工作( 可能 也可以与 docker-ce 版本一起使用)。 systemd
方法(也 /etc/sysconfig/docker
)对于这个 Ubuntu 年份是不可能的,官方 docker 文档在撰写本文时没有 post 安装指南使用 upstart
为 Ubuntu 14.04.1 LTS
使 docker 守护程序在网络上侦听。我发现以下方法效果很好:
创建/etc/default/docker
包含内容的文件
DOCKER_OPTS = "-H tcp://MACHINE-IP:2375 -H unix:///var/run/docker.sock"
重新启动 docker 服务 sudo service docker restart
。这样做之后,docker 守护进程开始监听网络并且守护进程日志看起来很干净。如果有更好的方法,也许更有经验的 docker 用户可以提出意见。