- dockerfile基本語法規(guī)則
- dockerfile的結(jié)構(gòu)
主要包含四部分,基礎(chǔ)鏡像补胚,即該dockerfile基于何種基礎(chǔ)鏡像創(chuàng)建码耐,隨后是維護(hù)者信息,然后是鏡像的操作指令糖儡,最后是鏡像啟動時需要執(zhí)行的命令伐坏,看下面的例子# httpd dockerfile based on centos FROM centos MAINTAINER xiaozhifc 1786614260@qq.com RUN yum install --nogpgcheck httpd vim sed net-tools -y RUN sed -i 's/# ServerName www.example.com:80/ServerName localhost/' /etc/httpd/conf/httpd.conf EXPOSE 80 CMD /usr/sbin/httpd -X
docker build -t centos:httpd path_to_dockfile
查看構(gòu)建成功的images
創(chuàng)建容器$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos httpd 61cee0059221 7 minutes ago 364 MB docker.io/centos latest 49f7960eb7e4 11 days ago 200 MB
$ docker run -P --name web centos:httpd
查看端口映射$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7b7c6c9149f centos:httpd "/bin/sh -c '/usr/..." 33 seconds ago Up 31 seconds 0.0.0.0:32769->80/tcp web
訪問32769
- dockerfile的結(jié)構(gòu)
- 基本指令
- RROM
表示鏡像的基礎(chǔ)鏡像怔匣,比如ubuntu握联,centos等
FROM image[:tag]
- MAINTAINER USER
指定維護(hù)者信息 - RUN
前者默認(rèn)使用/bin/sh -c在shell中執(zhí)行,如使用其他shell每瞒,RUN command para1 para2 ... RUN ["command", "para1", "para2"]
RUN ["/bin/bash","-c","echo hello"]
- CMD
CMD指定容器開始時運(yùn)行的命令CMD ["executable", "param1", "param2"]金闽,使用exec執(zhí)行 CMD command param1 param2
- EXPOSE
將暴露指定端口列表
EXPOSE 80 443 8080
在啟動容器時,使用-P選項(xiàng)將其映射進(jìn)主機(jī)端口 - ENV
ENV指令可以設(shè)置容器環(huán)境變量
ENV <key> <value>
- ADD
添加指定的src到dest中剿骨,src可以是文件代芜、目錄、tar
ADD src dest
- COPY
復(fù)制本機(jī)src到容器dest
COPY src dest
- ENTRYPOINT
配置容器運(yùn)行時執(zhí)行的命令浓利,不可被run參數(shù)覆蓋挤庇,并且一個dockfile僅能使用一次,如果配置了多次贷掖,僅有最后一次會生效ENTRYPOINT ["COMMAND", "PARAM1", "PARAM2"] ENTRYPOINT COMMAND PARAM1 PARAM2
- VOLUME
創(chuàng)建數(shù)據(jù)卷嫡秕,用于掛載本地目錄或用作數(shù)據(jù)卷容器
VOLUME ["/data"]
- USER
指定容器運(yùn)行時的用戶
USER username
- WORKDIR
為后續(xù)命令指定工作目錄,如果指定了相對路徑苹威,則相對于之前路徑
WORKDIR PATH
- ONBUILD
使用該關(guān)鍵詞來修飾一條命令昆咽,我們在鏡像A的創(chuàng)建過程中使用ONBUILD標(biāo)識了一些命令,現(xiàn)在我們創(chuàng)建image B牙甫,以A為基礎(chǔ)鏡像時掷酗,使用ONBUILD修飾的命令會再次得到執(zhí)行。
- RROM
- 創(chuàng)建鏡像
docker build -t repo[:tag] path_to_dockfile