容器学习 之 dockerfile 命令(七)
生活随笔
收集整理的這篇文章主要介紹了
容器学习 之 dockerfile 命令(七)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
dockerfile中常用的命令
- FROM
指定 base 鏡像。 - MAINTAINER
設(shè)置鏡像的作者,可以是任意字符串。
COPY將文件從 build context 復(fù)制到鏡像。 - COPY 支持兩種形式:
- ADD
與 COPY 類似,從 build context 復(fù)制文件到鏡像。不同的是,如果 src 是歸檔文件(tar, zip, tgz, xz 等),文件會(huì)被自動(dòng)解壓到 dest。 - ENV
設(shè)置環(huán)境變量,環(huán)境變量可被后面的指令使用。例如:
…
- EXPOSE
指定容器中的進(jìn)程會(huì)監(jiān)聽某個(gè)端口,Docker 可以將該端口暴露出來。我們會(huì)在容器網(wǎng)絡(luò)部分詳細(xì)討論。 - VOLUME
將文件或目錄聲明為 volume。我們會(huì)在容器存儲(chǔ)部分詳細(xì)討論。 - WORKDIR
為后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令設(shè)置鏡像中的當(dāng)前工作目錄。 - RUN
在容器中運(yùn)行指定的命令。 - CMD
容器啟動(dòng)時(shí)運(yùn)行指定的命令。
Dockerfile 中可以有多個(gè) CMD 指令,但只有最后一個(gè)生效。CMD 可以被 docker run 之后的參數(shù)替換。 - ENTRYPOINT
設(shè)置容器啟動(dòng)時(shí)運(yùn)行的命令。
Dockerfile 中可以有多個(gè) ENTRYPOINT 指令,但只有最后一個(gè)生效。CMD 或 docker run 之后的參數(shù)會(huì)被當(dāng)做參數(shù)傳遞給 ENTRYPOINT。
下面我們來看一個(gè)較為全面的 Dockerfile:
root@ubuntu:/home/yj/docker/test1# ls bunch.tar.gz dockerfile tmpfile2 root@ubuntu:/home/yj/docker/test1# vim dockerfile # my dockerfile FROM centos MAINTAINER yangjin@qq.com WORKDIR /testdir RUN touch tmpfile1 COPY ["tmpfile2","."] ADD ["bunch.tar.gz","."] ENV WELCOME "you are in mu container,welcome!"- 讓centos鏡像作為base鏡像
- 設(shè)置鏡像的作者
- 設(shè)置工作目錄
- 把build context 中的tmpfile2移到鏡像當(dāng)前目錄
- 把build context的bunch.tar.gz解壓并移到當(dāng)前目錄
- 設(shè)置WELCOME環(huán)境變量
結(jié)果展示:
[root@8af6a35aa71e testdir]# cd /testdir/ [root@8af6a35aa71e testdir]# ls bunch tmpfile1 tmpfile2Shell 和 Exec 格式
CMD echo "Hello world" CMD ["/bin/echo", "Hello world"]CMD 和 ENTRYPOINT 推薦使用 Exec 格式,因?yàn)橹噶羁勺x性更強(qiáng),更容易理解。RUN 則兩種格式都可以。
RUN,CMD,ENTRYPOITN的使用方法
總結(jié)
以上是生活随笔為你收集整理的容器学习 之 dockerfile 命令(七)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 容器学习 之 镜像的分层结构(六)
- 下一篇: 容器学习 之 容器命令(八)