我已经使用/root/目录下的put_archive将example.py文件从本地系统复制到了容器中。我想在容器中运行文件。在容器中找不到该文件。这是我的代码:我的代码出了什么问题?我希望put_archive应该将example.py文件复制到/root目录下。在容器中找不到该文件
import docker
import os
import tarfile
import time
import json
from io import BytesIO
client = docker.from_env()
image = client.images.pull("malark79/ibm-cloud-python-sdk")
container = client.containers.run("malark79/ibm-cloud-python-sdk", "pwd", detach=True)
print("Docker logs: " + str(container.logs()))
print(container.id)
print(container.name)
print(container.image)
f = open("example.py", "w") //open local file
with tarfile.open("example.py.tar.gz", "w:gz") as tar:
tar.add(f.name, arcname=os.path.basename(f.name))
t = open("example.py.tar.gz", "rb")
works = container.put_archive("/root/", data=t)
t.close()
if not works:
print("Can't create file in container")
container = client.containers.run("malark79/ibm-cloud-python-sdk", "ls -al /root", detach=True)
print("Docker logs: " + str(container.logs())) ### does not display file example.py
container = client.containers.run("malark79/ibm-cloud-python-sdk", "/usr/bin/python3 /root/example.py", detach=True)
print("Docker logs: " + str(container.logs())) ### [Errno 2] No such file or directory\n"
我在工作一天后发现了这个问题。容器应该运行put_archive()命令才能工作
我的容器没有运行,因此无法工作
以下是工作代码:
如果您试图将代码复制到Docker空间并运行它,Docker映像是更好的技术匹配。此Python代码与Dockerfile几乎完全对应:
通常,我会运行} 方法可以执行此操作
docker build
并在最终代码中引用构建的映像,而不尝试在中手动复制脚本。如果每次需要重建映像时都有^{在您的示例代码中,每次调用
client.containers.run()
,您都在创建一个新的容器。如果运行docker ps -a
(或调用client.containers.list(all=True)
),您应该能够看到这一点。最后两个命令在未修改的基本映像上运行,没有复制应用程序代码相关问题 更多 >
编程相关推荐