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

Enabling Docker Remote API on Ubuntu 14.04 with daemon startup

我正在为 docker 激活远程 API 而苦恼。

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

DOCKER_OPTS="-H tcp://127.0.0.1:2375"

在以下文件中:

/etc/default/docker

/etc/init.d/docker.conf

然后通过 pkill 重新启动守护进程并通过 docker 守护进程再次启动 & 但仍然不适合我。我错过了什么?

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

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

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

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 space 中的源客户端的请求。您还可以为远程 API 自定义各种 ACL。如果这样更容易,您可以 运行 在启动时使用 docker run 脚本。

在此处查看介绍性 post:https://www.linkedin.com/pulse/easily-enable-docker-remote-api-sherpa-dj-enriquez or directly to the repo here: https://hub.docker.com/r/djenriquez/sherpa/

  1. 更新/lib/systemd/system/docker.服务
  • 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
    将显示 运行ning 个容器


以上适用于 Ubuntu 14.04