docker build纯粹来自命令行

时间:2017-03-02 15:15:14

标签: docker dockerfile

有没有办法从命令行完全构建docker容器?也就是说,我需要能够设置FROMRUNCMD等内容。

我必须使用docker容器来运行所有内容(gitnpm等),并且我想在运行中构建容器完成准备工作(例如已经运行npm install的工作)。

有很多不同的情况,为每个案例创建一个实际Dockerfile是过度的。我想改为在我的脚本中创建命令行命令。

1 个答案:

答案 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