![docker 容器无法在主机上写入](https://linux22.com/image/1056924/docker%20%E5%AE%B9%E5%99%A8%E6%97%A0%E6%B3%95%E5%9C%A8%E4%B8%BB%E6%9C%BA%E4%B8%8A%E5%86%99%E5%85%A5.png)
如果我运行以下代码,我可以将 csv 文件转换为我需要的格式。
import csv
import json
csvfile = open('/tmp/head.csv', 'r')
jsonfile = open('/tmp/file.json', 'w')
fieldnames = ("user","messageid","destination","col1", "col2", "code1","code2", "mydate", "status")
reader = csv.DictReader( csvfile, fieldnames)
for row in reader:
jsonfile.write(json.dumps(row))
当我在命令提示符下运行代码时,它可以工作。
python covert.py
但是如果我创建 docker 容器,ubuntu 会拒绝写入磁盘。
alias python34='docker run -i -v "$(pwd)":/tmp/ --rm shantanuo/pyrun:3.4 python "$@"'
python34 /tmp/convert.py
我遇到了分段错误。我尝试使用以下方法禁用 ubuntu 防火墙
sudo ufw disable
我尝试删除 apparmour。但我仍然无法通过 python 容器写入主机的 /tmp/ 文件夹。
这是 ubuntu 特有的问题。我可以在 Amazon Linux ec2 实例上使用相同的别名。
答案1
这是因为我使用的容器 (pyrun) 未针对处理大文件进行优化。当我使用默认的 python 镜像时,它可以正常工作。
docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:3 python convert.py