有没有办法完全从命令行构建 docker 容器?也就是说,我需要能够设置诸如FROM、RUN和 之类的东西CMD。
我的场景是,我必须使用 docker 容器来运行所有内容(git、npm等),并且我想动态构建已完成准备工作的容器(例如npm install已经运行的容器)。
有很多不同的情况,Dockerfile为每个情况创建一个实际的情况就太过分了。我希望能够在我的脚本中创建命令行命令。
BMi*_*tch 10
2017-05-05 更新:Docker 刚刚发布了 17.05.0-ce,其中包含此PR #31236。现在上面的命令创建了一个图像:
$ 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
Run Code Online (Sandbox Code Playgroud)
可以通过以下命令在一行中实现相同的效果:
$ printf 'FROM busybox:latest\nCMD echo just a test' | docker build -t test-no-df -f - .
Run Code Online (Sandbox Code Playgroud)
原始回应
docker build要求 Dockerfile 是一个实际文件。您可以使用不同的文件名:
docker build -f Dockerfile.temp .
Run Code Online (Sandbox Code Playgroud)
它们允许通过标准输入传递构建上下文(也称为.当前目录),但尝试使用此语法传递 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5471 次 |
| 最近记录: |