共計(jì) 1282 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
這篇文章主要為大家展示了“Docker 中寫 Dockerfile 的 Tips 有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Docker 中寫 Dockerfile 的 Tips 有哪些”這篇文章吧。
寫 Dockerfile 的一些小 tips:
在之前我使用 Dockerfile 創(chuàng)建了一個(gè)使用國內(nèi)源的 ubuntu 鏡像,雖然可以直接改運(yùn)行容器,改源再 commit 一下即可。但是正規(guī)的方法是交給 Dockerfile 處理。因此,我用了這么一個(gè)簡單的例子:
#my test image
FROM dbehnke/ubuntu1404:latest
MAINTAINER Hochikong
RUN mkdir -p /home/backup
RUN mv /etc/apt/sources.list /home/backup
RUN wget http://172.16.77.157/sources.list -P /etc/apt
RUN apt-get update
可以看到,我每條命令中,凡是涉及文件操作的都使用了絕對路徑。在 Dockerfile 中,我們寫命令并不能像操作 bash 那樣,直接
mkdir -p /home/backup
cd /home/backup
touch hello.txt
你可以試試在上面的創(chuàng)建 hello.txt 的命令前加上 RUN,寫進(jìn) Dockerfile。hello.txt 絕對不會(huì)在 /home/backup 中出現(xiàn)喲!
我直接這么干了:
#just for fun
FROM training/webapp:latest
MAINTAINER hochikong
RUN mkdir -p /home/backup
RUN cd /home/backup
RUN touch hello.txt
docker build -t= justfor/fun .
順利創(chuàng)建了這么一個(gè) image:
啟動(dòng)一下容器,發(fā)現(xiàn)命令是執(zhí)行了,但是發(fā)現(xiàn) hello.txt 并不在 /home/backup 中,而是在進(jìn)入容器時(shí)的缺省目錄:
也就是說,在 Dockerfile 編寫時(shí),一條 RUN 執(zhí)行完,就會(huì)回到缺省目錄中,因此不能跨多條命令進(jìn)行一個(gè)目標(biāo)操作,也就是說:比如你要切換到某些目錄,再修改文件的操作,必須在一條 RUN 中完成,或者在多行命令中依靠絕對路徑進(jìn)行文件操作(我的第一個(gè)例子)。
你也可以使用這樣的寫法:
#my test image
FROM dbehnke/ubuntu1404:latest
MAINTAINER Hochikong
RUN mkdir -p /home/backup;cd /home/backup;echo Hello test.txt
使用逗號(hào)隔開命令,但是還是在同一個(gè) RUN 行中。
這樣的編寫方法也是可以接受的,減少了 RUN 的行數(shù)。
以上是“Docker 中寫 Dockerfile 的 Tips 有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!