我正在为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
答案 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)
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
并保存文件sudo systemctl daemon-reload
sudo systemctl restart docker
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
将显示正在运行的容器