0

我正在为 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
4

3 回答 3

2

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

于 2016-07-20T13:27:07.893 回答
1

您可以使用 Sherpa 通过 remote-proxy 打开远程 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/夏尔巴/

于 2016-10-19T06:35:26.670 回答
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
于 2021-03-26T03:45:07.190 回答