【发布时间】:2018-10-19 12:16:09
【问题描述】:
我在尝试创建一个脚本来创建和构建一个 docker 文件时遇到了一些困难,该文件获取当前用户的 uid 和 gid,并在容器内设置用户 vagrant 的 uid 和 gid 以匹配主机。
output = "FROM %s\nUSER root\nRUN usermod --uid %s vagrant && groupmod --gid %s vagrant && chown -R vagrant:vagrant /home/vagrant\nUSER vagrant" % (build_image, uid, gid)
f = open("Dockerfile", "w")
f.write(output)
f.close
# Build the image using the created Dockerfile
build_command = "docker build -t %s . --pull" % args.name
print("\nRunning: " + build_command)
subprocess.call(['bash', '-c', build_command])
docker build -t test-image . --pull 在命令行上工作,但在运行脚本时我得到:“来自守护进程的错误响应:Dockerfile (Dockerfile) 不能为空”
有人知道为什么会发生这种情况吗?
【问题讨论】:
-
顺便说一句,将字符串传递给
['bash', '-c', cmd]只是重新实现cmd, shell=True的一种迂回方式。你想避免两者;直接传递['docker', 'build', '-t', args.name, '.', '--pull']。 -
与脚本相比,您是否在命令行上的不同工作目录中?
-
@tripleee 谢谢,很高兴知道,我会改的
-
@Bernhard 不,它都在同一个目录中
-
文件是否已创建,是否包含您所期望的内容?