我如何在Centos 7上公开Docker Remote API?

时间:2016-10-25 14:20:18

标签: docker centos7 docker-api

在ubuntu上,我可以进入/etc/init/docker.conf并输入DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'以获取我的浏览器上显示的json数据,但我该如何为Centos执行此操作?

我尝试在/etc/sysconfig/docker中创建一个文件并将other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"放在文件中并重新启动docker但它没有做任何事情。

3 个答案:

答案 0 :(得分:12)

Docker corp软件包安装的systemd单元硬编码用于启动docker守护程序的命令行:

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
[...]

不支持从/etc/sysconfig或其他地方读取文件来修改命令行。幸运的是,systemd为我们提供了改变这种行为所需的工具。

最简单的解决方案可能是使用以下内容创建文件/etc/systemd/system/docker.service.d/docker-external.conf(确切的文件名无关紧要;它只需以.conf结尾):

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock

然后:

systemctl daemon-reload
systemctl restart docker

这实际上记录在Docker网站this document中,其中包含更灵活的解决方案的说明,允许您使用/etc/sysconfig中的文件来控制守护程序。

答案 1 :(得分:0)

是的,你可以做配置的事情。但码头工人解决码头问题怎么样?

docker run -d \
--name sherpa \                 
-v /var/run/docker.sock:/tmp/docker.sock \
-p 2375:4550 \
djenriquez/sherpa --allow

代理通过localhost上的端口2375访问套接字。

答案 2 :(得分:-1)

1,编辑/usr/lib/systemd/system/docker.service在服务部分添加两个参数:

# vim /usr/lib/systemd/system/docker.service

[服务]

ExecStart =

ExecStart = / usr / bin / dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

2,重新加载配置,然后重启docker。

# systemctl daemon-reload
# systemctl restart docker

3,检查是否成功,看看是否返回以下响应。

# ps -ef|grep docker

root 26208 1 0 23:51? 00:00:00 / usr / bin / dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

来自Expose the Docker Remote API on Centos 7?

的参考资料