用python脚本在docker中创建目录

用python脚本在docker中创建目录,python,docker,Python,Docker,我尝试用python脚本在docker中创建一个目录 我试过: import os def create_table(table_name, csv_path): os.system("docker cp " + csv_path + " 429c027af50d:/root/go/src/github.com/uber/aresdb/examples/") os.system("cd aresdb-docker") os.system("docker start 42

我尝试用python脚本在docker中创建一个目录

我试过:

import os

def create_table(table_name, csv_path):
    os.system("docker cp " + csv_path + " 429c027af50d:/root/go/src/github.com/uber/aresdb/examples/")
    os.system("cd aresdb-docker")
    os.system("docker start 429c027af50d")
    os.system("docker exec -it 429c027af50d bash")
    os.system("cd /root/go/src/github.com/uber/aresdb/examples/")
    os.system("mkdir " + table_name)

create_table("detections", "detections.csv")
问题是目录是在docker外部创建的


如何在docker中创建目录?

您正在主机操作系统上运行mkdir

您不需要
docker exec-it 429c027af50d bash

只需执行“docker exec 429c027af50d mkdir”+table_name,其中table name是目录的完整路径


FWIW,对于在主机操作系统上运行mkdir的简单bash命令,我建议使用shell脚本而不是python

您不需要
docker exec-it 429c027af50d bash

只需执行“docker exec 429c027af50d mkdir”+table_name,其中table name是目录的完整路径


FWIW,对于这样简单的bash命令,我建议使用shell脚本而不是python

为什么要在docker容器外部创建目录?
-这一行
os.system(“docker exec-it 429c027af50d bash”)
在子shell中执行,一旦成功,子shell将被销毁,而在cli上,我们看到,we正在更改为容器的shell。因此,上述行之后的任何内容都只是在系统外壳上运行,而不是在容器外壳中运行

  • 要创建文件夹,请使用以下命令:

    os.system(“docker exec-it 429c027af50d mkdir/root/go/src/github.com/uber/aresdb/examples/”+表名)


为什么在docker容器外部创建目录?
-这一行
os.system(“docker exec-it 429c027af50d bash”)
在子shell中执行,一旦成功,子shell将被销毁,而在cli上,我们看到,we正在更改为容器的shell。因此,上述行之后的任何内容都只是在系统外壳上运行,而不是在容器外壳中运行

  • 要创建文件夹,请使用以下命令:

    os.system(“docker exec-it 429c027af50d mkdir/root/go/src/github.com/uber/aresdb/examples/”+表名)


将指令放在docker文件中?切勿使用字符串插值来构造传递给
os.system()
:如果我有动力,我可以构造一个
csv\u路径
,它将给我对系统的无限根访问权限(特别是如果我知道我可以运行
docker
命令)。查看
子流程
模块及其调用路径,该模块使用一个单词数组,这样更安全。将指令放入docker文件中?切勿使用类似的字符串插值构造命令以传递给
os.system()
:如果我有动力,我可以构造一个
csv_路径
,该路径将为我提供对系统的无限根访问权限(特别是如果我知道我可以运行
docker
命令)。查看
子流程
模块及其调用路径,它采用一个字数组,这样更安全。