• python操作docker


    python操作docker

    安装

    pip3 install docker

    基本使

    import docker
    client = docker.from_env()  # 创建一个docker客户端
    client.containers.run(image_name,   # image_name 是我们docker镜像的name 
                          detach=True,   # detach=True,是docker run -d 后台运行容器
                          remove=True,  # 容器如果stop了,会自动删除容器
                          tty=True,      # 分配一个tty  docker run -t
                          volumes=volumes, # 与宿主机的共享目录, docker run -v /var/:/opt
                          command=command)  # The command to run in the container
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里我们启动一个tar镜像[^本地大的包],这时执行docker images 就可以看到tar已经转成docker镜像
    docker load --input /home/uos/test/mytest.tar
    docker images
    我们需要记住docker images返回的REPOSITORY 和 TAG 来组成image_name = ‘mytest:v1’
    有了这个信息,我们就可以启动docker 容器了

    container = client.containers.run( 'mytest:v1', detach=True, remove=True, tty=True, volumes=['/home/uos/test/:/opt'], command='/bin/bash')  # 返回一个容器对象。有了这个容器对象我们就可以操作容器了
    
    
    • 1
    • 2

    操作容器对象

    在容器中执行命令

    • 在容器中执行命令
    cmd = 'ls'
    code,stream = container.exec_run(cmd, stream=True)  # 返回一个元祖 (exit_code, output)   stream就是我们的ls的返回值,但是需要decode一下
    s = ''   
    for x in stream:
        print(x.decode(), end='')
        s += x.decode()
        logger.info(s)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 停止、启动容器
    container.stop()
    container.start()
    
    • 1
    • 2

    参考

    https://docker-py.readthedocs.io/en/stable/

  • 相关阅读:
    冒泡排序算法
    利用Elasticsearch提升Java应用的搜索能力
    从零开始配置vim(24)——自动补全
    Temporal线上部署
    svg路径动画
    基于SSM框架开发的教务管理系统(毕业设计,期末设计)
    Amazon云计算AWS之[1]基础存储架构Dynamo
    change_link解决NDM更新pin对应不上的问题
    Python 3速查表
    移植SQLite3、OpenCV到RV1126开发板上开发人脸识别项目
  • 原文地址:https://blog.csdn.net/weixin_42486623/article/details/127938788