如何获取 docker 运行 主机生成的文件

How to get files generated by docker run to host

我有运行docker运行生成文件

sudo docker run -i --mount type=bind,src=/home/mathed/Simulation/custom_desman/1/Strains/Simulation2/Assembly,target=/home/mathed/Simulation/custom_desman/1/Strains/Simulation2/Assembly 990210oliver/mycc.docker:v1 MyCC.py /home/mathed/Simulation/custom_desman/1/Strains/Simulation2/Assembly/final_contigs_c10K.fa

这是我执行后得到的消息。

20181029_0753
4mer
1_rename.py /home/mathed/Simulation/custom_desman/1/Strains/Simulation2/Assembly/final_contigs_c10K.fa 1000
Seqs >= 1000 : 32551
Minimum contig lengh for first stage clustering: 1236
run Prodigal.
/opt/prodigal.linux -i My.fa -a gene.aa -d gene.nuc -f gbk -o output -s potential_genes.txt
run fetchMG.
run UCLUST.
Get Feature.
2_GetFeatures_4mer.py for fisrt stage clustering
2_GetFeatures_4mer.py for second stage clustering
3_GetMatrix.py 1236 for fisrt stage clustering 
 22896 contigs entering first stage clustering
Clustering...
1_bhsne.py 20
2_ap.py /opt/ap 500 0
Cluster Correction.
to Split and Merge.
1_ClusterCorrection_Split.py 40 2
2_ClusterCorrection_Merge.py 40
Get contig by cluster.
20181029_0811

我现在想把 MyCC.py 生成的文件放到主机上。
看完Copying files from Docker container to host,我试了一下,

sudo docker cp 642ef90103be:/opt /home/mathed/data

但是我收到一条错误消息

mkdir /home/mathed/data/opt: permission denied

有没有办法将生成的文件放到目录/home/mathed/data?
谢谢。

我假设你的目标路径不存在。 Docker cp doc 在这种情况下的统计数据:

SRC_PATH specifies a directory
    DEST_PATH does not exist
        DEST_PATH is created as a directory and the contents of the source directory are copied into this directory

因此它试图从 DEST_PATH... 创建一个目录,并且 docker 必须有权这样做。 根据 DEST_PATH 顶级现有目录的所有者,您可能必须

  • 首先创建目录,这样它就不会被 docker 创建,并使用 sudo chown {user} 赋予它正确的权限(看起来它没有这样做的权限) :{文件夹} + chmod +x {文件夹}
  • 更改现有父目录的权限(再次chown + chmod),
  • 切换到允许docker写入的路径。