使用守护程序启动在Ubuntu 14.04上启用Docker Remote API

时间:2016-07-20 13:12:42

标签: docker proxy docker-api

我正在为docker激活远程API。

已尝试通过以下命令设置配置:

DOCKER_OPTS =“ - H tcp://127.0.0.1:2375”

在以下文件中:

/etc/default/docker

/etc/init.d/docker.conf

然后由pkill重启守护进程并由docker daemon&但仍然没有为我工作。我错过了什么?

root@ubuntu:~# docker info
 Containers: 7
 Running: 1
 Paused: 0
 Stopped: 6
 Images: 24
 Server Version: 1.11.2
 Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 139
 Dirperm1 Supported: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins: 
 Volume: local
 Network: bridge null host
 Kernel Version: 4.2.0-36-generic
 Operating System: Ubuntu 14.04.4 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 7.78 GiB
 Name: ubuntu
enter code here

3 个答案:

答案 0 :(得分:2)

手动运行docker daemon &会忽略所有配置文件。使用OS upstart命令或/etc/init.d/docker start启动Docker时会引用这些文件。要在手动启动时绑定到端口,您需要在其中传递参数:docker daemon -H tcp://127.0.0.1:2375。请注意,这允许任何有权访问本地网络的人在您的计算机上进行完全root访问。

答案 1 :(得分:1)

您可以使用Sherpa通过远程代理打开远程API的路径,而不是更改docker守护程序配置并重新启动它。类似的东西:

docker run -d \
--name sherpa \
-e CONFIG='[
    { 
        "Path" : "/",
        "Access": "allow",
        "Addresses": ["10.0.0.0/8"]
    }
]' \
-v /var/run/docker.sock:/tmp/docker.sock \
-p 4550:4550 \
djenriquez/sherpa --allow

将允许您访问端口4550并仅接受来自10.0.0.0/8空间中的源客户端的请求。您也可以为远程API自定义各种ACL。如果这更容易,您可以在启动时运行docker run脚本。

在此处查看介绍性帖子:https://www.linkedin.com/pulse/easily-enable-docker-remote-api-sherpa-dj-enriquez或直接查看此处的回购:https://hub.docker.com/r/djenriquez/sherpa/

答案 2 :(得分:0)

  1. 更新/lib/systemd/system/docker.service
  • sudo vim /lib/systemd/system/docker.service 在 [Service] 部分,将 ExecStart 的值更改为:
  • ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 并保存文件
  1. 重启 docker 服务:
  • sudo systemctl daemon-reload
  • sudo systemctl restart docker
  1. 验证
    运行以下命令之一:
  • ps aux | grep dockerd
    预期结果如下:
    root 4522 0.0 2.0 417112 81476 ? Ssl 20:36 0:00 /usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

  • curl 127.0.0.1:2375/info 预期的结果将是一个很长的 json 字符串

  • netstat -nlp
    将显示以下内容:
    tcp6 0 0 :::2375 :::* LISTEN -

  • sudo docker -H tcp://127.0.0.1:2375 ps
    将显示正在运行的容器


以上适用于 Ubuntu 14.04