有沒有一種方法可以從命令行完全構建docker容器?也就是說,我需要能夠設置像FROM
,RUN
和CMD
之類的東西。docker純粹從命令行構建
我是一個場景,我必須使用Docker容器運行一切(git
,npm
等),我想建立一個有準備工作做在飛行容器(如一個與npm install
已經運行)。
有很多不同的情況,並且爲每個創建實際的Dockerfile
是矯枉過正。相反,我希望能夠在腳本中創建命令行命令。
有沒有一種方法可以從命令行完全構建docker容器?也就是說,我需要能夠設置像FROM
,RUN
和CMD
之類的東西。docker純粹從命令行構建
我是一個場景,我必須使用Docker容器運行一切(git
,npm
等),我想建立一個有準備工作做在飛行容器(如一個與npm install
已經運行)。
有很多不同的情況,並且爲每個創建實際的Dockerfile
是矯枉過正。相反,我希望能夠在腳本中創建命令行命令。
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剛剛發佈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
爲什麼你不能從CLI響應線路到臨時Dockerfile? – BMitch
我正在考慮這樣做,但是如果可以的話,我不想將文件寫入系統。我嘗試了'cmd <(echo'message')'的語法,但是看起來Dockerfile有些繁榮。 – samanime