有没有办法从命令行完全构建docker容器?也就是说,我需要能够设置FROM
,RUN
和CMD
等内容。
我必须使用docker容器来运行所有内容(git
,npm
等),并且我想在运行中构建容器完成准备工作(例如已经运行npm install
的工作)。
有很多不同的情况,为每个案例创建一个实际Dockerfile
是过度的。我想改为在我的脚本中创建命令行命令。
答案 0 :(得分:3)
docker build
要求Dockerfile为实际文件。您可以使用不同的文件名:
docker build -f Dockerfile.temp .
它们允许构建上下文(也称为.
或当前目录)通过标准输入传递,但尝试使用此语法传递Dockerfile将失败:
$ docker build -t test-no-df -f - . <<EOF
FROM busybox:latest
CMD echo just a test
EOF
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/bmitch/data/docker/test/-: no such file or directory
2017-05-05更新:Docker刚刚发布了包含此PR #31236的17.05.0-ce。现在上面的命令创建了一个图像:
$ docker build -t test-no-df -f - . <<EOF
FROM busybox:latest
CMD echo just a test
EOF
Sending build context to Docker daemon 23.34MB
Step 1/2 : FROM busybox:latest
---> 00f017a8c2a6
Step 2/2 : CMD echo just a test
---> Running in 45fde3938660
---> d6371335f982
Removing intermediate container 45fde3938660
Successfully built d6371335f982
Successfully tagged test-no-df:latest