我已经安装了Ubuntu和Docker.我正在尝试启动Raik容器:
$ DOCKER_RIAK_AUTOMATIC_CLUSTERING=1 DOCKER_RAIK_CLUSTER_SIZE=5 DOCKER_RIAK_BACKEND=leveldb make start-cluster ./bin/start
Run Code Online (Sandbox Code Playgroud)
并收到错误消息:
看起来环境变量DOCKER_HOST尚未设置.除非已正确设置,否则无法启动Riak群集.例如:
export DOCKER_HOST ="tcp://127.0.0.1:2375"
如果我订
export DOCKER_HOST="tcp://127.0.0.1:2375"
Run Code Online (Sandbox Code Playgroud)
我所有的其他容器都停止工作并说,找不到Docker守护进程.
看起来我的Docker Damon使用的不是2375端口.我怎么检查呢?
Chr*_*nel 48
默认情况下,docker守护程序将使用unix套接字unix:///var/run/docker.sock(您可以通过执行a来检查这种情况,sudo netstat -tunlp并注意没有docker守护程序进程侦听任何端口).出于安全原因,建议保留此设置,但听起来Riak要求守护程序在TCP套接字上运行.
要使用任何人都可以连接的TCP套接字启动docker守护程序,请使用以下-H选项:
sudo docker -H 0.0.0.0:2375 -d &
Run Code Online (Sandbox Code Playgroud)
警告:这意味着可以通过该TCP套接字与守护进程通信的计算机可以获得对主机的root访问权限.
相关文档:
http://basho.com/posts/technical/running-riak-in-docker/
chi*_*kar 37
/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
Run Code Online (Sandbox Code Playgroud)
请注意,如果没有目录
docker.service.d或命名文件docker.conf,则应创建它.
重启Docker.保存此文件后,重新加载配置 systemctl daemon-reload并重新启动Docker systemctl restart docker.service.
检查你的Docker守护进程.重启docker服务后,可以在输出中看到systemctl status docker.service
类似的端口 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock.
希望这可能有所帮助
谢谢!
Her*_*arn 14
docker的参考文档:https://docs.docker.com/install/linux/linux-postinstall/#configure-where-the-docker-daemon-listens-for-connections
配置docker守护程序端口有两种方法
1)在/ etc/default/docker文件中配置:
DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)
2)在/etc/docker/daemon.json配置:
{
"debug": true,
"hosts": ["tcp://127.0.0.1:5000", "unix:///var/run/docker.sock"]
}
Run Code Online (Sandbox Code Playgroud)
如果没有配置docker默认套接字,Docker将等待无限期.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
Run Code Online (Sandbox Code Playgroud)
注意:但是不要配置配置文件,可能会出现以下错误:
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)
Run Code Online (Sandbox Code Playgroud)
添加用户端口[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?
Run Code Online (Sandbox Code Playgroud)
此错误不是因为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
Run Code Online (Sandbox Code Playgroud)
适用于Docker版本17.04,可能因docker的不同版本而异.
由于我也遇到了“如何检测 docker daemon 端口”的相同问题,但是我在 OSX 上遇到过,经过一番深入研究后,我找到了答案。我想在这里为来自 osx 的人分享答案。
如果您访问docker for mac 和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
Run Code Online (Sandbox Code Playgroud)
进而
export DOCKER_HOST=tcp://localhost:2375
Run Code Online (Sandbox Code Playgroud)
但是对于 mac os 上的本地客户端,您不需要导出 DOCKER_HOST 变量来测试 api。
| 归档时间: |
|
| 查看次数: |
82212 次 |
| 最近记录: |