微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Docker容器中运行命令的Python脚本

如何解决在Docker容器中运行命令的Python脚本

我目前正在使用主机上的Python脚本来自动化Docker容器的命令。目前,此Python脚本可构建并运行docker-compose文件,并将用于容器的命令写入docker-compose文件Dockerfile本身。

我想做的是让Python脚本操作所有要在容器内运行的命令,因此,如果我要运行的脚本不同,则无需更改容器。我尝试了两种方法

首先是在Python脚本中运行os.system()命令,但是,这仅在打开容器的外壳时有效,os.system()命令不会在Docker容器本身中执行代码

第二种方法Dockerfile中使用CMD,但是,这是有限的,并且已硬编码到容器中。如果我有多个脚本,则必须更改Dockerfile,但我不希望这样做。我想要的是构建一个运行所有服务的认容器,然后在主机上运行Python脚本以在容器上运行一系列命令。

我对Docker来说还很陌生,我认为在容器上运行脚本命令时,我必须忽略一些东西。我遇到的一种可能的解决方案是nsenter。这是一个可靠的解决方案,它如何工作?还是有更简单的方法?我还使用过docker-volume将python文件复制到要在构建中运行的容器中,但是,我仍然找不到解决方案来自动从主机访问和运行这些python脚本。

解决方法

如果需要将脚本复制到正在运行的容器中,则可以通过docker cp命令执行此操作。例如docker cp myscript.sh mycontiainer:/working/dir

一旦脚本在容器中,您就可以通过docker exec命令运行它们。例如docker exec -it mycontainer /working/dir/myscript.sh

注意,这不是常见的做法。通常,您需要的脚本将被构建(而不是复制)到容器映像中。然后,当您想在容器中执行脚本时,可以通过docker run命令运行容器。例如docker run -it mycontainerimage /working/dir/myscript.sh

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?