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

How do i expose the Docker Remote API on Centos 7?

在 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 但它没有任何作用。

由 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

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

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

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

[服务]

执行开始=

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、检查是否成功,看是否有return下面的响应。

# 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?

是的,您可以进行配置。但是 docker 问题的 docker 解决方案怎么样?

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

代理通过本地主机上的端口 2375 访问套接字。