- CMD:用于指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令
CMD ["/bin/bash"] #等同于docker run 后接的/bin/bash
注意:
a.docker run命令可以覆蓋CMD命令;
b.在dockerfile中只能指定一條CMD指令,多條CMD指令也只有最后一條會(huì)被執(zhí)行
- ENTRYPOINT:不容易在啟動(dòng)容器時(shí)被覆蓋;docker run命令行中指定的任何參數(shù)會(huì)被當(dāng)作參數(shù)再次傳遞給ENTRYPOINT
ENTRYPOINT ["/usr/sbin/nginx"]
docker build -t="roubin/static_web" . #構(gòu)建鏡像
docker run -i -t roubin/static_web -g "daemon off;" #參數(shù)會(huì)傳遞給ENTRYPOINT,從而以后臺(tái)方式啟動(dòng)Nginx
- WORKDIR:在容器內(nèi)部設(shè)置一個(gè)工作目錄,ENTRYPOINT或CMD等指令會(huì)在這個(gè)目錄下執(zhí)行
WORKDIR /opt/webapp/db
RUN bundle install
WORKDIR /opt/webapp
ENTRYPOINT [ "rackup" ]
注意:可以通過(guò)-w標(biāo)志在運(yùn)行時(shí)覆蓋目錄docker run -i -t -w /var/log ubuntu pwd
- ENV:用來(lái)在鏡像構(gòu)建過(guò)程中設(shè)置環(huán)境變量;這個(gè)新的環(huán)境變量可以在后續(xù)任何RUN指令中使用
ENV RVM_PATH /home/rvm/
RUN gem install unicorn
也能在其他指令中直接調(diào)用環(huán)境變量
ENV TARGET_DIR /opt/app
WORKDIR $TARGET_DIR
這些環(huán)境變量也會(huì)被持久保存到從我們的鏡像創(chuàng)建的任何容器中;也可使用docker run命令行的-e 標(biāo)志來(lái)傳遞環(huán)境變量
- USER:用來(lái)指定該鏡像會(huì)以什么用戶去運(yùn)行(不指定,默認(rèn)為root)
USER nginx
USER user:group
USER uid:gid
也可以在docker run命令中通過(guò)-u選項(xiàng)來(lái)覆蓋
- VOLUME:用來(lái)向基于鏡像創(chuàng)建的容器添加卷
a.卷可以在容器間共享和重用
b.對(duì)卷的修改是立時(shí)生效的
c.對(duì)卷的修改不會(huì)對(duì)更新鏡像產(chǎn)生影響
d.卷會(huì)一直存在直到?jīng)]有任何容器使用它
VOLUME ["/opt/project"] #創(chuàng)建一個(gè)名為/opt/project的掛載點(diǎn)
- ADD:用來(lái)將構(gòu)建環(huán)境下的文件和目錄復(fù)制到鏡像中。
ADD software.lic /opt/application/software.lic #將構(gòu)建目錄下的software.lic復(fù)制到鏡像中的/opt/application/software.lic
如果源文件是gzip/bzip2/xz等歸檔文件,會(huì)自動(dòng)解開并添加到目的地
ADD latest.tar.gz /var/www/wordpress/
注意:
a.不能對(duì)構(gòu)建目錄或上下文之外的文件進(jìn)行ADD操作
b.如果目的位置不存在,會(huì)自動(dòng)創(chuàng)建
c.ADD指令會(huì)使得構(gòu)建緩存無(wú)效
- COPY:只關(guān)心在構(gòu)建上下文中復(fù)制本地文件,不會(huì)去作文件提取和解壓
COPY conf.d/ /etc/apache2/ #將本地conf.d目錄中的文件復(fù)制到/etc/apache2目錄中
- ONBUILD:為鏡像添加觸發(fā)器,當(dāng)該鏡像被用作其他鏡像的基礎(chǔ)鏡像時(shí),觸發(fā)器會(huì)被執(zhí)行;可作鏡像模板功能
ONBUILD ADD . /app/src
ONBUILD RUN cd /app/src && make
ONBUILD ADD . /var/www/ #將構(gòu)建環(huán)境所在目錄下的內(nèi)容全部添加到鏡像中的/var/www/目錄下
注意:
a.使用docker inspect可查看
b.該命令只能被繼承使用一次
c.FROM、MAINTAINER和ONBUILD本身無(wú)法被調(diào)用
除非注明,肉餅博客文章均為原創(chuàng),轉(zhuǎn)載請(qǐng)以鏈接形式標(biāo)明本文地址
本文地址:http://roubin.me/post/dockerfile-command/