码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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/

  • 相关阅读:
    【论文阅读-PRIVGUARD】Day4:3节
    利用redis 的原子性生成不重复编号
    PHP基础笔记-NO.3
    MASM32v11编程调用Process32First失败: 程序发出命令,但命令长度不正确
    分享三款AI智能修图工具,超实用!
    java计算机毕业设计Web产品管理系统MyBatis+系统+LW文档+源码+调试部署
    select完成服务器并发
    Spring Security实现基于RBAC的权限表达式动态访问控制
    最大似然估计(MLE)入门教程
    新版本WPS不登录无法编辑的解决办法
  • 原文地址:https://blog.csdn.net/weixin_42486623/article/details/127938788
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号