Docker中Dockerfile怎么用

這篇文章主要介紹了Docker中Dockerfile怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)建站2013年開(kāi)創(chuàng)至今,先為莒南等服務(wù)建站,莒南等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為莒南企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

Dockerfile文件的說(shuō)明:

格式:

INSTRUCTION arguments

雖然指令忽略大小寫(xiě),但建議用大寫(xiě)

# 是注釋

MAINTAINER命令:

MAINTAINER命令用來(lái)指定維護(hù)者的姓名和聯(lián)系方式

FROM命令:

FROM <image>/<image>:<tag>

這個(gè)是設(shè)置基本的鏡像,為后續(xù)的命令使用,所以應(yīng)該作為Dockerfile的第一條指令

比如:

FROM centos6-base

RUN 命令:

會(huì)上面FROM 指定的鏡像里執(zhí)行任何命令,然后提交(commit)結(jié)果,提交的鏡像會(huì)在后面繼續(xù)用到

格式:

RUN <command> (這個(gè)命令運(yùn)行一個(gè)shell中 - '/bin/sh -c')

或:

RUN ["executable", "param1", "param2"]

RUN 命令等價(jià)于:

docker run image_name command

CMD  and  ENTRYPOINT

命令設(shè)置在容器啟動(dòng)時(shí)執(zhí)行命令

ENTRYPOINT,表示鏡像在初始化時(shí)需要執(zhí)行的命令,不可被重寫(xiě)覆蓋,需謹(jǐn)記

CMD,表示鏡像運(yùn)行默認(rèn)參數(shù),可被重寫(xiě)覆蓋

ENTRYPOINT/CMD都只能在文件中存在一次,并且最后一個(gè)生效 多個(gè)存在,只有最后一個(gè)生效,其它無(wú)效!

需要初始化運(yùn)行多個(gè)命令,彼此之間可以使用 && 隔開(kāi),但最后一個(gè)須要為無(wú)限運(yùn)行的命令,需切記!

ENTRYPOINT/CMD,一般兩者可以配合使用,比如:

ENTRYPOINT ["/usr/sbin/sshd"]

CMD ["-D"]

** 在Docker daemon模式下,無(wú)論你是使用ENTRYPOINT,還是CMD,最后的命令,一定要是當(dāng)前進(jìn)程需要一直運(yùn)行的,才能夠防容器退出。***

以下無(wú)效方式:

ENTRYPOINT service tomcat7 start #運(yùn)行幾秒鐘之后,容器就會(huì)退出

CMD service tomcat7 start #運(yùn)行幾秒鐘之后,容器就會(huì)退出

這樣有效:

ENTRYPOINT service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out

# 或者

CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out

這樣也有效:

ENTRYPOINT ["/usr/sbin/sshd"]

CMD ["-D"]

USER 命令

比如指定 memcached 的運(yùn)行用戶,可以使用上面的 ENTRYPOINT or CMD來(lái)實(shí)現(xiàn):

ENTRYPOINT ["memcached", "-u", "daemon"]

更好的方式:

ENTRYPOINT ["memcached"]

USER daemon

EXPOSE 命令

EXPOSE 命令可以設(shè)置一個(gè)端口在運(yùn)行的鏡像中暴露在外

在docker使用--link來(lái)鏈接兩容器時(shí)會(huì)用到相關(guān)端口

EXPOSEd <port>

ENV命令:

用于設(shè)置環(huán)境變更

使用此dockerfile生成的image新建container,可以通過(guò) docker inspect CONTAINER ID  看到這個(gè)環(huán)境變量

也可以通過(guò)在docker run時(shí)設(shè)置或修改環(huán)境變量

ADD 命令:

從src復(fù)制文件到container的dest路徑:

ADD <src> <dest>

<src> 是相對(duì)被構(gòu)建的源目錄的相對(duì)路徑,可以是文件或目錄的路徑,也可以是一個(gè)遠(yuǎn)程的文件url

<dest> 是container中的絕對(duì)路徑

VOLUME 命令

VOLUME ["<mountpoint>"]

如:

VOLUME ["/data"]

創(chuàng)建一個(gè)掛載點(diǎn)用于共享目錄

WORKDIR 命令

WORKDIR /path/to/workdir

配置RUN, CMD, ENTRYPOINT 命令設(shè)置當(dāng)前工作路徑

可以設(shè)置多次,如果是相對(duì)路徑,則相對(duì)前一個(gè) WORKDIR 命令

比如:

WORKDIR /a WORKDIR b WORKDIR c RUN pwd

其實(shí)是在 /a/b/c 下執(zhí)行 pwd

Dockerfile文件到此介紹完畢。

下面是一個(gè)完整的Dockerfile文件

#Dockerfile
FROM centos6-base
MAINTAINER zhou_mfk <zhou_mfk@163.com>
RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
RUN echo 'root:redhat' | chpasswd
RUN yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
RUN yum install tar gzip gcc vim wget -y
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
CMD /usr/sbin/sshd -D
#End

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Docker中Dockerfile怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

網(wǎng)站欄目:Docker中Dockerfile怎么用
地址分享:http://bm7419.com/article22/pdhscc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、域名注冊(cè)、外貿(mào)建站、關(guān)鍵詞優(yōu)化、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)