首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从容器执行主机的Docker命令?

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

Stack Overflow用户
提问于 2015-07-25 10:49:31
回答 3查看 8.6K关注 0票数 4

我想用Python编写Docker容器管理脚本。但是,由于我使用的是CoreOS,所以它不作为标准命令包括在内。因此,我正在考虑使用Python容器(/python/)来执行我的脚本。但是,在这种情况下,脚本将在容器的VM中执行,后者无法访问主机的Docker。

是否有一种方法可以使用Python (或其他未打包在CoreOS中的编程语言)来管理主机环境,而不将其安装在主机上?

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

docker run/rm/stop <another container>;

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-25 12:04:52

如果您使Docker守护进程可以通过HTTPS访问,那么您可以通过远程机器或在Docker容器中与守护进程进行通信。在守护进程中启用HTTPS的说明如下所示:https://docs.docker.com/articles/https/

简而言之,它包括创建客户端和服务器证书(为了安全),并使用命令运行Docker守护进程,如

代码语言:javascript
复制
docker -d --tlsverify --tlscacert=ca.pem \
--tlscert=server-cert.pem --tlskey=server-key.pem \
-H=0.0.0.0:2376

在此模式下运行时,可以为您选择的图书馆/编程语言使用适当的客户端库。

对于python,我还没有尝试过,但是可以说,根据经验,这种方法使用了docker-py客户机库,在容器中有一个docker-java程序,停止并启动其他容器。

票数 5
EN

Stack Overflow用户

发布于 2015-07-25 11:25:18

您可以将对接器二进制文件和套接字安装到容器中:

代码语言:javascript
复制
$ 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

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

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

票数 6
EN

Stack Overflow用户

发布于 2015-07-25 17:21:34

另一种方法是使用CoreOS工具箱访问。例如,我的CoreOS机器从CoreOS运行一个简单的python命令来查看对接进程状态“:

代码语言:javascript
复制
core@zz1 ~ $ toolbox python -c 'import os;os.system("/media/root/usr/bin/docker -H unix:///media/root/var/run/docker.sock ps")'
CONTAINER ID        IMAGE                                            COMMAND                CREATED             STATUS              PORTS               NAMES
2f5480ebc129        gcr.io/google_containers/etcd:2.0.12             "/usr/local/bin/etcd   47 minutes ago      Up 46 minutes                           k8s_etcd.3a160ccf_kube-dns-45.55.230.109_kube-system_790a48cfb2e2a5ae0abfcb6e3221275f_9d4fc659                   
ddbbc5e5033c        gcr.io/google_containers/skydns:2015-03-11-001   "/skydns -addr=0.0.0   47 minutes ago      Up 47 minutes                           k8s_skydns.db942972_kube-dns-45.55.230.109_kube-system_790a48cfb2e2a5ae0abfcb6e3221275f_59835376                 
...

-g

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31625679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档