Docker build
docker build -t docker2.io/ubuntu-clean .
要注意的是,這個命令會把當(dāng)前文件夾內(nèi)的所有文件包括子文件夾都傳遞給docker程序,于是,最好的辦法是新建一個空文件夾,然后寫Dockerfile,然后再執(zhí)行該命令。
-t xxx來給該鏡像打個標(biāo)簽
1. FROM
FROM <image> OR
FROM <image>:<tag>
都可以用,例如FROM ubuntu 和 FROM docker.cn/docker/ubuntu:14.04.1
如果構(gòu)建的時候沒有傳遞tag給它,默認(rèn)用latest做為tag
如果需要創(chuàng)建多個鏡像,F(xiàn)ROM可以在Dockerfile中出現(xiàn)多次的
2. MAINTAINER
這個命令用來寫自己的名字,是誰創(chuàng)建的這個鏡像
MAINTAINER <name>
MAINTAINER tech pdhh@test.com
3. RUN
RUN命令是用來做具體的操作,它有兩種形式
RUN <command> (the command is run in a shell - /bin/sh -c - shell form)
RUN ["executable", "param1", "param2"] (exec form)
RUN命令執(zhí)行完之后會被commit,就跟源代碼管理一樣,會有個commit的編號,方便后續(xù)從任何一個命令之后checkout出來。
RUN命令會帶cache,例如執(zhí)行 RUN apt-get dist-upgrade -y, 如果不想用cache,可以這樣docker build --no-cache
每一條語句在Dockerfile中都是獨立的,也就是說,如果第一條語句寫RUN cd /tmp,對第二條語句是沒有作用的。
RUN cd /home
RUN touch test1.txt
最終test1.txt是在/目錄下,而不是在/home
所以每次RUN 都要使用絕對路徑
或者一次寫完
RUN cd /home && touch test1.txt
4. CMD
CMD命令有三種格式
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
但是,CMD只能在Dockerfile中出現(xiàn)一次,如果你寫了多次,也只有最后一個生效
CMD主要是是用來啟動該容器下需要執(zhí)行的那個程序,作為main入口用。
如果CMD執(zhí)行的命令式shell,那么會默認(rèn)用/bin/sh -c 例如:
FROM ubuntu
CMD echo "This is a test1." | wc -
如果不想用shell執(zhí)行,需要寫成json格式
FROM ubuntu
CMD ["/usr/bin/wc","--help"]