【问题标题】:Unable to change the working directory inside a docker container using python script无法使用 python 脚本更改 docker 容器内的工作目录
【发布时间】:2016-03-17 04:33:18
【问题描述】:

我可以使用以下命令进入 docker 容器

os.system('docker exec -ti $(docker ps -q -a --filter "name=XXXXX") /bin/bash')

然后我需要切换到容器中的以下目录。

/u01/oracle/weblogic/*****

当我使用os.chdir("/u01/oracle/weblogic/*****") 时,我得到No such Directory error

我可以看到os.getcwd() 仍在打印运行 python 脚本的上一个目录而不是 docker 目录。

有人可以告诉我我缺少什么吗?

【问题讨论】:

  • 当您依次运行这两个命令时,您将更改脚本所在主机上的工作目录,而不是在容器内
  • 那么,如何进入容器文件夹结构,类似于/u01/oracle/weblogic
  • 使用 subprocess 模块而不是 os.system() 并通过管道传递您要使用的命令。但一般来说:您不应该从 docker 容器外部执行自动化任务,这会破坏概念码头工人。
  • 非常感谢@KlausD。我会以码头工人的方式思考!

标签: python python-2.7 docker


【解决方案1】:

为什么不使用容器名称作为 exec 参数,而不是使用查询来获取 id?

你可以使用bash的-c参数来执行多个命令。喜欢:

os.system('docker exec -ti XXXXX /bin/bash -c "cd /tmp;ls -alrt"')

【讨论】:

  • 这太棒了! -c 标志为我做了魔法。谢谢罗伯特 :) 就我而言,docker 容器名称和 id 不一致。只有一致的部分是图像。但我无法根据 IMAGE 进行过滤。图像将是这样的systemname.com:xxxx/xxx/xxxx:latest
  • 看到这个帖子也解决了我的其他问题 :) stackoverflow.com/questions/29406871/…
猜你喜欢
  • 2011-04-16
  • 2010-11-28
  • 1970-01-01
  • 2010-10-13
  • 2021-11-24
  • 1970-01-01
  • 2018-03-17
  • 2012-09-01
  • 1970-01-01
相关资源
最近更新 更多