如何从容器执行主机的Docker命令?

Pah*_*iya 4 python docker coreos

我想用Python编写Docker容器管理脚本.但是,由于我使用CoreOS,因此不包含Python作为标准命令.所以,我正在考虑使用Python Docker容器(https://registry.hub.docker.com/_/python/)来执行我的脚本.但是,在这种情况下,脚本将在容器的VM中执行,该VM无法访问主机的Docker CLI.

有没有办法使用Python(或其他未编译在CoreOS中的编程语言)来管理主机环境而无需在主机上安装它?

PS,脚本将执行以下操作:

docker run/rm/stop <another container>;

Adr*_*uat 5

您可以将docker binary和socket挂载到容器中:

$ docker run -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock debian docker --version
Docker version 1.7.0, build 0baf609
Run Code Online (Sandbox Code Playgroud)

或者设置docker以允许远程访问(我在一分钟内找不到一个好的参考).

您还应该考虑使用Docker API而不是进行命令行调用.有一个python库可以帮助您.


mat*_*its 5

如果您通过HTTPS访问Docker守护程序,则可以从远程计算机或Docker容器内与守护程序进行通信.在守护程序中启用HTTPS的说明在https://docs.docker.com/articles/https/

简而言之,它涉及创建客户端和服务器证书(用于安全性)以及使用诸如的命令运行Docker守护程序

docker -d --tlsverify --tlscacert=ca.pem \
--tlscert=server-cert.pem --tlskey=server-key.pem \
-H=0.0.0.0:2376
Run Code Online (Sandbox Code Playgroud)

在此模式下运行时,您可以使用适当的客户端库来选择您所选择的编程语言https://docs.docker.com/engine/reference/api/remote_api_client_libraries/

有一个python docker-py我没有尝试过,但可以说从经验来看,这种方法使用docker-java客户端库,在容器内部有一个Java程序停止并启动其他容器.