在contanier中访问docker守护程序远程API

我在centos7中使用docker-ce的正式版本,在容器中启动一个docker守护进程:

[root@5cae7be526b4 /]# rpm -qa docker-ce docker-ce-17.09.0.ce-1.el7.centos.x86_64 

这是我的守护进程configuration

 { "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:5555"], "live-restore": true, "insecure-registries": ["172.17.0.6:9980"] } 

在不改变configuration的情况下,docker守护进程可以在容器中启动并重启:

 [root@5cae7be526b4 /]# docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 17.09.0-ce Storage Driver: vfs Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0 runc version: 3f2f8b84a77f73d38244dd690525642a72156c64 init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 3.10.0-514.el7.x86_64 Operating System: CentOS Linux 7 (Core) (containerized) OSType: linux Architecture: x86_64 CPUs: 16 Total Memory: 31.26GiB Name: 5cae7be526b4 ID: N3Y4:VTIJ:WCHK:AQL3:MU3F:DNHE:BIXO:7ISI:4D4V:Q4IG:VYIT:FOH3 Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled 

但改变configuration,它失败了:

 [root@5cae7be526b4 /]# systemctl restart docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. [root@5cae7be526b4 /]# systemctl status docker -l ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: failed (Result: start-limit) since Thu 2017-11-02 05:51:02 UTC; 2s ago Docs: https://docs.docker.com Process: 260 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE) Main PID: 260 (code=exited, status=1/FAILURE) Nov 02 05:51:02 5cae7be526b4 systemd[1]: Failed to start Docker Application Container Engine. Nov 02 05:51:02 5cae7be526b4 systemd[1]: Unit docker.service entered failed state. Nov 02 05:51:02 5cae7be526b4 systemd[1]: docker.service failed. Nov 02 05:51:02 5cae7be526b4 systemd[1]: docker.service holdoff time over, scheduling restart. Nov 02 05:51:02 5cae7be526b4 systemd[1]: start request repeated too quickly for docker.service Nov 02 05:51:02 5cae7be526b4 systemd[1]: Failed to start Docker Application Container Engine. Nov 02 05:51:02 5cae7be526b4 systemd[1]: Unit docker.service entered failed state. Nov 02 05:51:02 5cae7be526b4 systemd[1]: docker.service failed. 

当然,这个守护进程configuration可以在主机上运行。

我已经启动了容器,使用--privileged-v /sys/fs/cgroup:/sys/fs/cgroup来启用在容器中使用systemctl

根本原因是"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:5555"] ,我不知道如何解决,但我需要设置主持人确实。

我想将这个容器作为回购,并启动其他容器来执行docker操作,就像从这个docker守护进程中pull一样。

我如何启用它?

我在这里分享我的解决scheme,请告诉我是否错误或有更好的方法。

首先,检查docker版本,只有新的正式版本可以在容器中运行。 对于centos,这意味着docker-ce,请参阅https://docs.docker.com/engine/installation/linux/docker-ce/centos/

其次,检查启动容器时主机端口是否设置为-p 。 docker守护进程可以监听它,并用-p指定会发生冲突。

第三,在容器中启动docker守护进程应该分配一个卷来存储。 否则,存储选项只能是vfs