Docker 远程 python API 操作容器一例

网友投稿 322 2023-05-25

Docker-py 作为官方推出的客户端 API ,功能可以满足我们大部分操作需求,API涉及镜像(images)及容器(CONTAINER)的功能操作,利用docker-py可以轻松开发出Docker的管理平台,以便维护大规模的Docker集群,本文介绍如何通过DockerFile创建一个WEB服务的镜像,再通过远程API对容器进行管理。

一、环境准备

1.环境说明

192.168.1.20 #Docker python API主机 192.168.1.22 #Docker服务主机

2.Docker环境部署(略)

3.修改自启动服务文件,支持远程TCP接口与本地SOCK连接;

# vi /etc/init.d/docker

复制$exec -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -d &>> $logfile &   1.

#service docker restart

二、创建镜像

1.获取最新的centos镜像

# docker pull centos:latest

编写Dockerfile(支持apache+ssh服务)

# mkdir /home/Dockerfile/webserver

# cd /home/Dockerfile/webserver

# vi Dockerfile

复制# This is a base comment  FROM centos:latest  MAINTAINER yorko Liu <liutiansi@gmail.com>  #yum install Package  RUN yum -y install net-tools  RUN yum -y install iputils iproute man vim-minimal openssh-server openssh-clients  RUN yum -y install httpd  RUN yum -y install python-setuptools  RUN easy_install supervisor  #set sshd  RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key  RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key  RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" RUN sed -ri s/session required pam_loginuid.so/#session required pam_loginuid.so/g /etc/pam.d/sshd  RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh  RUN echo root:Ksjhg34TDju | chpasswd  #set supervisor  RUN mkdir -p /var/log/supervisor  ADD supervisord.conf /etc/supervisord.conf  #set port  EXPOSE 22 EXPOSE 80 #set ENV  ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8 #run supervisor  CMD ["/usr/bin/supervisord -c /etc/supervisord.conf"]   1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.

通过supervisord来维护Docker容器中服务进程,编写 supervisord.conf

# vi supervisord.conf`

复制[supervisord]  nodaemon=true [program:sshd]  command=/usr/sbin/sshd -D  [program:httpd]  command=/usr/sbin/httpd -DFOREGROUND   1.2.3.4.5.6.7.8.

创建镜像,运行:

# docker build -t yorko/webserver:v1 .`

注:最后有一个.,别遗漏。

镜像生成完毕后运行docker images查看,见下图:

三、编写操作 API

登录 192.168.1.20 服务器

# mkdir /home/test/docker-py

# cd /home/test/docker-py

1.安装 docker-py

# wget https://github.com/docker/docker-py/archive/master.zip

# unzip master

# cd docker-py-master/

# python setup.py install

如正常导入模块(import docker)说明安装成功。

2.创建容器 docker_create.py

复制import docker  c = docker.Client(base_url=tcp://192.168.1.22:2375,version=1.14,timeout=10 c.create_container(image="yorko/webserver:v1",stdin_open=True,tty=True,command="/usr/bin/supervisord -c /etc/supervisord.conf",volumes=[/data],ports=[80,22],name="webserver11" #通过create_container方法创建容器,指定"yorko/webserver:v1"镜像名称,使用supervisord接管进程服务,挂载主宿机/data作为数据卷,容器监听8022端口,容器的名称为webserver11  print str(r)   1.2.3.4.5.6.

3.运行容器docker_start.py

复制import docker  c = docker.Client(base_url=tcp://192.168.1.22:2375,version=1.14,timeout=10 r=c.start(container=webserver11, binds={/data:{bind/data,ro: False}}, port_bindings={80:80,22:2022}, lxc_conf=None,  publish_all_ports=True, links=None, privileged=False,  dns=None, dns_search=None, volumes_from=None, network_mode=None,  restart_policy=None, cap_add=None, cap_drop=None)  #通过start方法启动容器,指定数据卷的挂载关系及权限,以及端口与主宿机的映射关系等  print str(r)   1.2.3.4.5.6.7.8.9.

4.运行

# python docker_create.py

# python docker_start.py

更多 API 参考 https://github.com/docker/docker-py

5.在 Docker 主机观察结果,见下图:

三、校验服务

1.校验 SSH 服务

2.校验 WEB 服务

3.检查数据卷

原文出自:https://docker.cn/p/docker-remote-python-api-container

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:APISpace 脑筋急转弯API
下一篇:APISpace 笑话大全API
相关文章

 发表评论

暂时没有评论,来抢沙发吧~