我已经安装了Ubuntu和Docker。我正在尝试推出Raik容器:
$ DOCKER_RIAK_AUTOMATIC_CLUSTERING=1 DOCKER_RAIK_CLUSTER_SIZE=5 DOCKER_RIAK_BACKEND=leveldb make start-cluster ./bin/start
并收到错误消息:
看起来环境变量DOCKER_HOST尚未设置。 除非已设置,否则无法启动Riak群集 适当。例如:
导出DOCKER_HOST =" tcp://127.0.0.1:2375"
如果我设置
export DOCKER_HOST="tcp://127.0.0.1:2375"
我所有其他容器都停止工作并说,找不到Docker守护进程。
看起来我的Docker Damon使用的不是2375端口。我怎么检查呢?
答案 0 :(得分:45)
默认情况下,docker守护程序将使用unix socket unix:///var/run/docker.sock
(您可以通过执行sudo netstat -tunlp
检查是否存在这种情况,并注意没有docker守护程序进程侦听任何端口)。出于安全原因,建议保留此设置,但听起来Riak要求守护程序在TCP套接字上运行。
要使用任何人都可以连接的TCP套接字启动docker守护程序,请使用-H
选项:
sudo docker -H 0.0.0.0:2375 -d &
警告:这意味着可以通过该TCP套接字与守护进程通信的计算机可以获得对主机的root访问权。
相关文档:
答案 1 :(得分:33)
/etc/systemd/system/docker.service.d/docker.conf
的文件。在文件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。保存此文件后,按systemctl daemon-reload
重新加载配置,然后按systemctl restart docker.service
重新启动Docker。
检查您的Docker守护程序。重新启动docker服务后,您可以在systemctl status docker.service
的输出中看到该端口
比如/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
。
希望这可能会有所帮助
谢谢!
答案 2 :(得分:14)
配置docker守护程序端口有 2种方法
1)在 / etc / default / docker 文件中配置:
DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
2)在 /etc/docker/daemon.json 配置:
{
"debug": true,
"hosts": ["tcp://127.0.0.1:5000", "unix:///var/run/docker.sock"]
}
如果未配置docker默认套接字,Docker将等待无限期.i.e
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
注意:但不要配置文件,可能会出现以下错误:
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 socket [unix:///var/run/docker.sock]的原因是用户端口允许访问docker API,而默认套接字启用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未启用。
启用配置后,重新启动docker服务并验证是否启用了docker端口:
# netstat -tunlp | grep -i 5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 31661/dockerd
适用于Docker版本17.04,可能因docker的不同版本而异。
答案 3 :(得分:3)
由于我也遇到了“如何检测docker守护程序端口”相同的问题,但是我在OSX上遇到了问题,经过一番挖掘,我找到了答案。我想在这里为osx的人分享答案。
如果您从docker访问Mac的known-issues和github issue,您会发现默认情况下docker守护进程仅在unix套接字/var/run/docker.sock
上侦听,而在tcp上侦听。 Docker的默认端口是2375(未加密)和2376(加密)通过tcp的通信(尽管您可以选择任何其他端口)。
在OSX上,不能直接在tcp端口上运行守护程序。为此,一种方法是使用socat
容器将unix域套接字上公开的Docker API重定向到OSX上的主机端口。
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock
然后
export DOCKER_HOST=tcp://localhost:2375
但是,对于Mac OS上的本地客户端,您无需导出DOCKER_HOST变量即可测试api。
答案 4 :(得分:1)
尝试添加 firewalls:
main:
...
remember_me:
secret: "%secret%"
lifetime: 2592000
path: /
domain: ~
user_provider: fos_userbundle
(-H tcp://0.0.0.0:2375
行末尾)而不是Execstart
。
答案 5 :(得分:0)
如果您运行 ps -aux | grep dockerd
,您应该会看到它正在运行的端点。