如何检测docker守护进程端口
我已经安装了Ubuntu和Docker。 我正在尝试启动Raik容器:
$ DOCKER_RIAK_AUTOMATIC_CLUSTERING=1 DOCKER_RAIK_CLUSTER_SIZE=5 DOCKER_RIAK_BACKEND=leveldb make start-cluster ./bin/start
并得到错误信息:
它看起来像环境variablesDOCKER_HOST尚未设置。 除非已经正确设置,否则Riak集群无法启动。 例如:
export DOCKER_HOST =“tcp://127.0.0.1:2375”
如果我设置
export DOCKER_HOST="tcp://127.0.0.1:2375"
我所有的其他容器停止工作,并说,找不到Docker守护进程。
看起来像我的docker达蒙使用其他塔恩2375端口。 我如何检查它?
默认情况下, unix:///var/run/docker.sock
守护进程将使用unix套接字unix:///var/run/docker.sock
(您可以通过执行sudo netstat -tunlp
来检查是否存在这种情况,并注意没有sudo netstat -tunlp
守护进程进程侦听在任何端口上)。 为安全起见,build议保留此设置,但听起来Riak要求守护程序在TCP套接字上运行。
要使用任何人都可以连接的TCP套接字启动docker守护程序,请使用-H
选项:
sudo docker -H 0.0.0.0:2375 -d &
警告:这意味着可以通过TCP套接字与守护进程交谈的机器可以获得对主机的根访问权限。
相关文档:
在/etc/systemd/system/docker.service.d/docker.conf
创build一个文件
在docker.conf
里面粘贴下面的内容
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
请注意,如果没有像docker.service.d
和文件docker.conf
目录, docker.conf
创build它。
保存这个文件后重新加载configurationsystemctl daemon-reload
并重新启动systemctl restart docker.service
重启后你可以看到systemctl status docker.service
的端口像/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
希望这可能有帮助
谢谢!
有两种configurationdocker守护进程的方法
1)在/ etc / default / docker文件中configuration:
DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
2)在/etc/docker/daemon.jsonconfiguration:
{ "debug": true, "hosts": ["tcp://127.0.0.1:5000", "unix:///var/run/docker.sock"] }
如果docker的默认套接字没有configuration,Docker会等待无限的period.ie
Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock
注意: 但不要configuration两个configuration文件 ,可能会出现以下错误:
Waiting for /var/run/docker.sock 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: [tcp://127.0.0.1:5000 unix:///var/run/docker.sock], from file: tcp://127.0.0.1:5000)
添加用户端口[tcp://127.0.0.1:5000]和默认docker套接字[unix:///var/run/docker.sock]的原因是用户端口允许访问dockerAPI,而默认套接字启用CLI。 如果/ etc / default / docker文件中没有提到默认端口[unix:///var/run/docker.sock],则可能会出现以下错误:
# docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
这个错误不是因为docker没有运行,而是因为默认的docker socket没有启用。
一旦configuration启用重新启动docker服务,并validationdocker端口是否启用:
# netstat -tunlp | grep -i 5000 tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 31661/dockerd
适用于Docker版本17.04,可能因Docker的不同版本而异。
试试:-H tcp://0.0.0.0:2375而不是-H 0.0.0.0:2375