农民 发表于 2024-10-8 09:03:34

Docker exec bash -c 利用详解与 Python 封装示例

简介:docker exec 是 Docker 的一个实用命令,允许在正在运行的容器中实验命令。通过 bash -c 选项,可以实验复杂的命令串。
汗青攻略:
go:远程实验系统命令
Python:subprocess模块
Python-subprocess激活远程conda
利用 docker exec bash -c 的利益:

[*] 灵活实验: 允许在容器内实验复杂命令或脚本。
[*] 便捷调试: 快速在容器内验证和调试配置。
[*] 不干扰主历程: 在容器内运行命令而不会影响主历程。
[*] 服从提升:无需进入容器即可直接实验命令。
[*] 自定义扩展: 封装脚本支持灵活自定义和扩展。
案例源码:
# -*- coding: utf-8 -*-
# time: 2024/09/03 20:37
# file: bash_command.py
# author: tom
# 微信公众号: 玩转测试开发
import subprocess


def execute_in_container(container_name: str, command: str) -> None:
    """
    在指定的 Docker 容器内执行命令。
    :param container_name: 容器名称或 ID
    :param command: 要执行的命令
    """
    full_command = ["docker", "exec", container_name, "bash", "-c", command]
    try:
      # 执行命令并获取输出
      result = subprocess.run(full_command, check=True, text=True, capture_output=True)
      print(f"命令输出:\n{result.stdout}")
    except subprocess.CalledProcessError as e:
      print(f"命令执行失败:\n{e.stderr}")


if __name__ == "__main__":
    # 示例调用
    execute_in_container("mydocker_command", "echo 'Hello, Docker!'")
    execute_in_container("mydocker_command", "cd /home && touch aaa.txt && ls -al /home/")
运行效果:
# python main.py
命令输出:
Hello, Docker!

命令输出:
total 8
drwxr-xr-x 1 root root 4096 Sep3 16:58 .
drwxr-xr-x 1 root root 4096 Sep3 16:57 ..
-rw-r--r-- 1 root root    0 Sep3 16:59 aaa.txt
留意事项:
1、确保容器名称或 ID 精确且容器正在运行。
2、实验的命令需审慎,避免实验不安全的命令。
3、确保容器内的用户具有实验命令的权限。
4、命令需与容器内的操作系统和环境兼容。
5、处理命令实验错误并获取详细信息以帮助排错。
小结:通过上述 Python 封装,可以更加灵活地在 Docker 容器中实验命令,提升操作的服从和便捷性。
https://i-blog.csdnimg.cn/direct/ccf6f00f6c914903a119e3ba6f832839.png
在这里插入图片形貌](https://i-blog.csdnimg.cn/direct/36417af5f5504d8b9a668c4a3c6dda61.png)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Docker exec bash -c 利用详解与 Python 封装示例