目錄
DockerFile
一、是什么
二、構(gòu)建步驟
DockerFile構(gòu)建過程
一、DockerFile基礎(chǔ)
二、Docker執(zhí)行DockerFile的流程
三、總結(jié)
DockerFile常用保留字
零、參考Tomcat的DockerFile
一、FROM
二、MAINTAINER
三、RUN
1.shell
2.exec
四、EXPOSE
五、WORKDIR
六、USER
七、ENV
八、ADD
九、COPY
十、VOLUME
十一、CMD
1.舉個栗子
2.CMD和RUN之間的區(qū)別
十二、ENTRYPOINT
1.舉個栗子
2.優(yōu)點
3.注意
舉例
零、需求和準備
一、編寫Dockerfile文件
二、構(gòu)建
UnionFS聯(lián)合文件系統(tǒng)
DockerFile
一、是什么
DockerFile是用來構(gòu)建Docker鏡像的文本文件,其中包括了一條條構(gòu)建鏡像所需要的指令和參數(shù)。
二、構(gòu)建步驟
編寫DockerFile文件 ---> Docker build構(gòu)建鏡像 ---> Docker run以鏡像運行容器實例。
DockerFile構(gòu)建過程
一、DockerFile基礎(chǔ)
1.每條保留字(至于保留字是什么后面會提)必須為大寫字母且后面要跟隨至少一個參數(shù)
2.指令按照從從上到下,依次執(zhí)行
3.#表示注釋
4.每條指令都會創(chuàng)建一個新的鏡像層,并對鏡像進行提交
二、Docker執(zhí)行DockerFile的流程
1.docker以基礎(chǔ)鏡像運行一個容器
#以鏡像啟動容器,“有了類,才能new一個對象”
2.執(zhí)行一條指令并對容器做出修改
3.執(zhí)行類似于Docker commit的操作提交一個新的鏡像層
4.Docker再基于剛剛提交的鏡像運行一個新的容器
5.執(zhí)行DockerFile中的下一條指令,直到所有指令執(zhí)行完成
三、總結(jié)
從應(yīng)用軟件的角度來看,DockerFile、Docker鏡像與Docker容器分別代表軟件的三個不同階段,可以看做是它的生命周期。
1.DockerFile是軟件的原材料
2.Docker鏡像是軟件的交付品
3.Docker容器則可以認為是軟件鏡像的運行態(tài),也即依照鏡像運行的容器實例
DockerFile面向開發(fā),Docker鏡像成為交付標準,Docker容器則涉及部署與運維,三者缺一不可,合力充當Docker體系的基石。
1 DockerFile,需要定義一個DockerFile,Dockerfile定義了進程需要的一切東西。Dockerfile涉及的內(nèi)容包括執(zhí)行代碼或者是文件、環(huán)境變量、依賴包、運行時環(huán)境、動態(tài)鏈接庫、操作系統(tǒng)的發(fā)行版、服務(wù)進程和內(nèi)核進程(當應(yīng)用進程需要和系統(tǒng)服務(wù)和內(nèi)核進程打交道,這時需要考慮如何設(shè)計namespace的權(quán)限控制)等等;
2 Docker鏡像,在用Dockerfile定義一個文件之后,docker build時會產(chǎn)生一個Docker鏡像,當運行 Docker鏡像時會真正開始提供服務(wù);
3 Docker容器,容器是直接提供服務(wù)的。
DockerFile常用保留字
零、參考Tomcat的DockerFile
這里去DockerHub中去看看tomcat:Docker Hub
然后隨便選一個看看
這里可能有人會連不上GitHub,復(fù)制了部分過來。其DockerFile內(nèi)容如下:
...此處省略...
FROM amazoncorretto:8-al2-jdk
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME
# let "Tomcat Native" live somewhere isolated
ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR
# see https://www.apache.org/dist/tomcat/tomcat-10/KEYS
# see also "versions.sh" (https://github.com/docker-library/tomcat/blob/master/versions.sh)
ENV GPG_KEYS A9C5DF4D22E99998D9875A5110C01C5A2F6059E7
ENV TOMCAT_MAJOR 10
ENV TOMCAT_VERSION 10.0.23
ENV TOMCAT_SHA512 0e0263e8280f2ccfb4bef916444a6105fef689a3d95c334c8a7bfe59f1e3966d48ea624727f1818a4df331a603f1ac5e21b908dda3cae676ddc1aef90c2d12ab
...內(nèi)容過多,此處省略...
# verify Tomcat Native is working properly
RUN set -eux; \
nativeLines="$(catalina.sh configtest 2>&1)"; \
nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')"; \
nativeLines="$(echo "$nativeLines" | sort -u)"; \
if ! echo "$nativeLines" | grep -E 'INFO: Loaded( APR based)? Apache Tomcat Native library' >&2; then \
echo >&2 "$nativeLines"; \
exit 1; \
fi
EXPOSE 8080
CMD ["catalina.sh", "run"]
這里官網(wǎng)上標紅的部分如FROM? ENV? RUN? WORKDIR? EXPOSE? CMD這些就是上面提到的保留字,可以看做是命令關(guān)鍵字。例如最后所提到的
EXPOSE 8080
這也就是tomcat所暴露的默認端口8080。在官網(wǎng)How to use this image.這一節(jié)中有提到:
運行默認的Tomcat服務(wù),相當于在啟動后默認添加一段:
CMD ["catalina.sh", "run"]
這一段就來自于剛剛所看的DockerFile的結(jié)尾。
一、FROM
基本上都會出現(xiàn)在DockerFile的第一行。代表你目前的鏡像來自于哪,它的基礎(chǔ)鏡像是什么,有點類似于繼承的哪個父類。比如上面看的Tomcat中的第一行:
FROM amazoncorretto:8-al2-jdk
意思為,他的基礎(chǔ)鏡像是亞馬遜...,然后在此基礎(chǔ)之上添加了下面的內(nèi)容。?
二、MAINTAINER
維護者,用于標注鏡像的作者,和TA的聯(lián)系方式。
三、RUN
容器構(gòu)建時所需要的命令(也就是說DockerFile變成Docker鏡像的build過程中,會讀取你DockerFile中用RUN這個關(guān)鍵字所編寫的命令),一種是shell一種是exec。
1.shell
RUN <命令行命令>
<命令行命令>等同于在終端中的shell命令
例子:
當我們要在容器中添加一個vim功能時,要使用到y(tǒng)um。而以下的命令則是告訴你:在基礎(chǔ)鏡像之上,我們添加了一個安裝vim的功能。
RUN yum -y install vim
2.exec
RUN ["可執(zhí)行文件","參數(shù)1","參數(shù)2"]
#RUN ["./123.sh","1","2"] 等價于RUN ./123.sh 1 2
四、EXPOSE
當前容器對外曝露的端口,類似于運行容器時添加的 -p 和 -P 。
五、WORKDIR
在容器創(chuàng)建以后,終端默認登陸進來的工作目錄就是一個落腳點。
舉例:咱們在容器里運行個Ubuntu看看:
docker run -it ubuntu bash
在運行后緊接著pwd查看一下當先位置:
pwd
可以看到當前在根目錄,所以說Ubuntu的默認落腳點為自身的根目錄。
咱們換一個看看其它情況(這里故意加了一個bash,以用作演示):
docker run -it -p 8080:8080 tomcat:8 bash
接著pwd:
pwd
可以看到這里的落腳點為 /usr/local/tomcat 。
至于為什么咱們的Ubuntu和tomcat的落腳點會不同,就是因為tomcat的DockerFile中用WORKDIR自己定義了一個落腳點。?在后面的七、ENV那塊還會提一嘴。
六、USER
指定該鏡像以什么樣的用戶去執(zhí)行,若不指定,則默認為root。
七、ENV
運行時環(huán)境。用來在構(gòu)建鏡像過程中設(shè)置環(huán)境變量。
再來看看之前看tomcat的DockerFile這張圖:
比如這里的:
ENV CATALINA_HOME /usr/local/tomcat
格式有點類似于kv鍵值對,用于定義一個變量并以在后面進行引用。這里的意思是定義了一個CATALINA_HOME變量,它所指的是/usr/local/tomcat的這個路徑。圖中的:
WORKDIR $CATALINA_HOME
?這里是引用了這個CATALINA_HOME變量作為它的落腳點。 也就是上面提到的WORKDIR。這也正是tomcat的落腳點為啥會是/usr/local/tomcat的原因。
八、ADD
將宿主機目錄下的文件拷貝到鏡像。且會自動處理URL和解壓tar壓縮包。相當于下面的COPY加上一個解壓功能。
九、COPY
拷貝文件和目錄到鏡像中。類似于docker基礎(chǔ)命令中的cp。
COPY ["src","dest"]
#src:源文件或源目錄
#dest:容器內(nèi)指定的路徑,若所指定的路徑不存在,則會自動創(chuàng)建好。
十、VOLUME
容器數(shù)據(jù)卷,相當于運行容器時的 -v 。關(guān)于容器數(shù)據(jù)卷的詳解可以查看之間的博客:Docker容器數(shù)據(jù)卷
十一、CMD
指定容器在啟動后要進行的操作。CMD和RUN一樣,也同樣支持?shell 和 exec 格式。
CMD <shell命令>
#shell格式
CMD ["可執(zhí)行文件","參數(shù)1","餐數(shù)2"]
#exec格式
CMD ["參數(shù)1","餐數(shù)2","餐數(shù)3"...]
#參數(shù)列表格式
這里新提到的?參數(shù)列表格式?:當在指定了ENTRYPOINT后,CMD用于指定具體參數(shù)。
簡單來說也就是在有了ENTRYPOINT之后,CMD就變成用來給它傳參的了。
一個DockerFile中可以有多個CMD指令,但是只有最后一個會生效。這里我們來看看tomcat的DockerFile最后兩行:
EXPOSE 8080
CMD ["catalina.sh", "run"]
先曝露出8080端口,然后最后一行是一個運行操作。若在后面繼續(xù)添加一個CMD,則此處的 CMD ["catalina.sh", "run"] 將會直接失效。
1.舉個栗子
docker run -it -p 8080:8080 tomcat:8
這回咱們正常啟動,后面沒有加之前bash
然后我們?nèi)フTL問8080,可以正??吹皆蹅兊?span style="background-color:#fbd4d0;">貓貓(如果你訪問8080報錯404可以看看這篇:Docker容器安裝Tomcat高版本,解決訪問8080報錯404):
這里一切都是正常的。然后咱們?nèi)?span style="background-color:#fbd4d0;">搞點事情。
咱們這回在后面給它加上 /bin/bash :
docker run -it -p 8080:8080 tomcat:8 /bin/bash
這就相當于給它的DockerFile多加了一行,變成了以下的樣子:
EXPOSE 8080
CMD ["catalina.sh", "run"]
CMD ["/bin/bash","run"]
咱們這時候再去看看8080的貓貓還在不在:?
這時候貓貓就不見了(連不上8080)。 這也就是咱們上面提到的:CMD可以允許有多個,但是只有最后一個會正常執(zhí)行,這里的 CMD ["/bin/bash","run"] 將之前的?CMD ["catalina.sh", "run"] 給覆蓋了,所以貓貓不見了。
2.CMD和RUN之間的區(qū)別
CMD在docker run時運行
RUN在docker build時運行
十二、ENTRYPOINT
同樣也是定容器在啟動后要進行的操作。與CMD類似,但是ENTRYPOINT不會被docker run后面的命令覆蓋,而且這些命令行參數(shù)會被當做參數(shù)傳給ENTRYPOINT指定的程序。
命令格式:
ENTRYPOINT ["<可執(zhí)行文件>","<參數(shù)1>","<參數(shù)2>"...]
?ENTRYPOINT?可以和?CMD?一起用,這里的??CMD 等于是在給?ENTRYPOINT 傳參。
簡單來說?ENTRYPOINT?的優(yōu)先級比?CMD 跟高一些,一起使用時會變成:
<ENTRYPOINT>"<CMD>"
1.舉個栗子
假設(shè)用DockerFile來構(gòu)建Nginx的鏡像:
FROM nginx
ENTRYPOINT?["nginx","-c"]
#定參
CMD ["/etc/nginx/nginx.conf"]
#變參
上述DockerFile衍生出的實際命令如下:
nginx -c /etc/nginx/nginx.conf
那如果在運行時添加了參數(shù),如下:
docker run? nginx -c /etc/nginx/new.conf
這里因為在運行時,添加了一個新的conf,也就相當于在DockerFile中添加了一段新的CMD。咱們在上面有提到,CMD會被最后的CMD代替掉(也就是只有最后一個CMD能正常運行),那么以上代碼在實際運行時其實如下:
nginx -c /etc/nginx/new.conf
即便在DockerFile中寫了??ENTRYPOINT+CMD ,但是還是會被run后面新加的參數(shù)代替。
2.優(yōu)點
在執(zhí)行docker run的時候可以給ENTRYPOINT添加所需要的參數(shù)
3.注意
若DockerFile中存在多個ENTRYPOINT,僅最后一個生效
舉例
零、需求和準備
需求:使用DockerFile給CentOS鏡像上添加vim+ifconfig+jdk8,啟動一下(但是我這里建議各位在拉centos鏡像的時候加上版本號7,后面會提到):
docker run -it 5d0da3dc9764 /bin/bash
?咱么剛剛拉取下來的Centos鏡像是不具備上述功能的,咱們查看一下:
vim 1.txt
ifconfig
java -version
我們現(xiàn)在去下一個jdk的gz包(隨便選一個即可,這里我用的是171):jdk鏡像下載
一、編寫Dockerfile文件
在宿主機的根目錄下創(chuàng)建一個新目錄,叫做myfile然后使用xftp等工具將上面下載的包傳進去:
mkdir /myfile
?然后在此目錄下用vim新建文件Dockerfile,注意:這里的D要大寫,f要小寫:
vim Dockerfile
注意點:因為CentOS8已經(jīng)停止維護了,所以這里的第一行FROM后面需要加上7的版本號,否則后面會報錯,將以下內(nèi)容復(fù)制進去:
FROM centos:7
#基礎(chǔ)鏡像
MAINTAINER van<123@123.com>
#維護者和聯(lián)系方式
ENV MYPATH /usr/local
WORKDIR $MYPATH
#以變量的形式給到一個落腳點
RUN yum -y install vim
#安裝vim編輯器
RUN yum -y install net-tools
#安裝ifconfig命令查看網(wǎng)絡(luò)IP
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#安裝java8及l(fā)ib庫
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#ADD 是相對路徑j(luò)ar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安裝包必須要和Dockerfile文件在同一位置
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
#配置java環(huán)境變量
EXPOSE 80
#centos也不需要去曝露什么端口,這里是隨便寫的
CMD echo $MYPATH
CMD echo "success###############ok"
CMD /bin/bash
二、構(gòu)建
讓在當前目錄下進行構(gòu)建:
docker build -t centosjava8:1.5 .
.號是指鏡像構(gòu)建時打包上傳到Docker引擎中的文件的目錄,不是本機目錄。這里要注意的是:版本號后面有一個空格,之后再加上.
過程可能會比較漫長,運行結(jié)果如下:
可以看到,所有的Dockerfile指令都已經(jīng)構(gòu)建成功。
咱們docker images查看一下:
docker images
(我這里出現(xiàn)了一個虛懸鏡像,留到下一篇博客再講吧。已經(jīng)寫完了:Docker容器:虛懸鏡像) 可以看到新的鏡像大小有整整1.22個G比原先的200多M大了不少。運行一下(注意一下自己的鏡像ID):
docker run -it 24af206ac896 /bin/bash
pwd查看一下落腳點在哪?
pwd
和我們之前設(shè)置的WORKDIR落腳點一致,沒有問題。
再來看看其它功能是否正常
vim 1.txt
ifconfig
java -version
?試驗成功!
UnionFS聯(lián)合文件系統(tǒng)
這里我把整個構(gòu)建的過程復(fù)制過來:
[root@vanqiyeah myfile]# docker build -t centosjava8:1.5 .
Sending build context to Docker daemon 190.9MB
Step 1/17 : FROM centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:7
---> eeb6ee3f44bd
Step 2/17 : MAINTAINER van<123@123.com>
---> Running in bedec783f19e
Removing intermediate container bedec783f19e
---> 3d5b6d941195
Step 3/17 : ENV MYPATH /usr/local
---> Running in f08acf892bbe
Removing intermediate container f08acf892bbe
---> d892076f0380
Step 4/17 : WORKDIR $MYPATH
---> Running in da6bfab459dc
Removing intermediate container da6bfab459dc
---> a9b042242153
Step 5/17 : RUN yum -y install vim
---> Running in 1f31b178d7b0
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
* base: mirrors.cn99.com
* extras: mirrors.nju.edu.cn
* updates: mirrors.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package vim-enhanced.x86_64 2:7.4.629-8.el7_9 will be installed
--> Processing Dependency: vim-common = 2:7.4.629-8.el7_9 for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: which for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: perl(:MODULE_COMPAT_5.16.3) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: libperl.so()(64bit) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Processing Dependency: libgpm.so.2()(64bit) for package: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
--> Running transaction check
---> Package gpm-libs.x86_64 0:1.20.7-6.el7 will be installed
---> Package perl.x86_64 4:5.16.3-299.el7_9 will be installed
--> Processing Dependency: perl(Socket) >= 1.3 for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Scalar::Util) >= 1.10 for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl-macros for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(threads::shared) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(threads) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(constant) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Time::Local) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Time::HiRes) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Storable) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Socket) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Scalar::Util) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Pod::Simple::XHTML) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Pod::Simple::Search) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Getopt::Long) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Filter::Util::Call) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Temp) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec::Unix) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec::Functions) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Path) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Exporter) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Cwd) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Carp) for package: 4:perl-5.16.3-299.el7_9.x86_64
---> Package perl-libs.x86_64 4:5.16.3-299.el7_9 will be installed
---> Package vim-common.x86_64 2:7.4.629-8.el7_9 will be installed
--> Processing Dependency: vim-filesystem for package: 2:vim-common-7.4.629-8.el7_9.x86_64
---> Package which.x86_64 0:2.20-7.el7 will be installed
--> Running transaction check
---> Package perl-Carp.noarch 0:1.26-244.el7 will be installed
---> Package perl-Exporter.noarch 0:5.68-3.el7 will be installed
---> Package perl-File-Path.noarch 0:2.09-2.el7 will be installed
---> Package perl-File-Temp.noarch 0:0.23.01-3.el7 will be installed
---> Package perl-Filter.x86_64 0:1.49-3.el7 will be installed
---> Package perl-Getopt-Long.noarch 0:2.40-3.el7 will be installed
--> Processing Dependency: perl(Pod::Usage) >= 1.14 for package: perl-Getopt-Long-2.40-3.el7.noarch
--> Processing Dependency: perl(Text::ParseWords) for package: perl-Getopt-Long-2.40-3.el7.noarch
---> Package perl-PathTools.x86_64 0:3.40-5.el7 will be installed
---> Package perl-Pod-Simple.noarch 1:3.28-4.el7 will be installed
--> Processing Dependency: perl(Pod::Escapes) >= 1.04 for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
--> Processing Dependency: perl(Encode) for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
---> Package perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 will be installed
---> Package perl-Socket.x86_64 0:2.010-5.el7 will be installed
---> Package perl-Storable.x86_64 0:2.45-3.el7 will be installed
---> Package perl-Time-HiRes.x86_64 4:1.9725-3.el7 will be installed
---> Package perl-Time-Local.noarch 0:1.2300-2.el7 will be installed
---> Package perl-constant.noarch 0:1.27-2.el7 will be installed
---> Package perl-macros.x86_64 4:5.16.3-299.el7_9 will be installed
---> Package perl-threads.x86_64 0:1.87-4.el7 will be installed
---> Package perl-threads-shared.x86_64 0:1.43-6.el7 will be installed
---> Package vim-filesystem.x86_64 2:7.4.629-8.el7_9 will be installed
--> Running transaction check
---> Package perl-Encode.x86_64 0:2.51-7.el7 will be installed
---> Package perl-Pod-Escapes.noarch 1:1.04-299.el7_9 will be installed
---> Package perl-Pod-Usage.noarch 0:1.63-3.el7 will be installed
--> Processing Dependency: perl(Pod::Text) >= 3.15 for package: perl-Pod-Usage-1.63-3.el7.noarch
--> Processing Dependency: perl-Pod-Perldoc for package: perl-Pod-Usage-1.63-3.el7.noarch
---> Package perl-Text-ParseWords.noarch 0:3.29-4.el7 will be installed
--> Running transaction check
---> Package perl-Pod-Perldoc.noarch 0:3.20-4.el7 will be installed
--> Processing Dependency: perl(parent) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: perl(HTTP::Tiny) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: groff-base for package: perl-Pod-Perldoc-3.20-4.el7.noarch
---> Package perl-podlators.noarch 0:2.5.1-3.el7 will be installed
--> Running transaction check
---> Package groff-base.x86_64 0:1.22.2-8.el7 will be installed
---> Package perl-HTTP-Tiny.noarch 0:0.033-3.el7 will be installed
---> Package perl-parent.noarch 1:0.225-244.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vim-enhanced x86_64 2:7.4.629-8.el7_9 updates 1.1 M
Installing for dependencies:
gpm-libs x86_64 1.20.7-6.el7 base 32 k
groff-base x86_64 1.22.2-8.el7 base 942 k
perl x86_64 4:5.16.3-299.el7_9 updates 8.0 M
perl-Carp noarch 1.26-244.el7 base 19 k
perl-Encode x86_64 2.51-7.el7 base 1.5 M
perl-Exporter noarch 5.68-3.el7 base 28 k
perl-File-Path noarch 2.09-2.el7 base 26 k
perl-File-Temp noarch 0.23.01-3.el7 base 56 k
perl-Filter x86_64 1.49-3.el7 base 76 k
perl-Getopt-Long noarch 2.40-3.el7 base 56 k
perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k
perl-PathTools x86_64 3.40-5.el7 base 82 k
perl-Pod-Escapes noarch 1:1.04-299.el7_9 updates 52 k
perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k
perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k
perl-Pod-Usage noarch 1.63-3.el7 base 27 k
perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k
perl-Socket x86_64 2.010-5.el7 base 49 k
perl-Storable x86_64 2.45-3.el7 base 77 k
perl-Text-ParseWords noarch 3.29-4.el7 base 14 k
perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k
perl-Time-Local noarch 1.2300-2.el7 base 24 k
perl-constant noarch 1.27-2.el7 base 19 k
perl-libs x86_64 4:5.16.3-299.el7_9 updates 690 k
perl-macros x86_64 4:5.16.3-299.el7_9 updates 44 k
perl-parent noarch 1:0.225-244.el7 base 12 k
perl-podlators noarch 2.5.1-3.el7 base 112 k
perl-threads x86_64 1.87-4.el7 base 49 k
perl-threads-shared x86_64 1.43-6.el7 base 39 k
vim-common x86_64 2:7.4.629-8.el7_9 updates 5.9 M
vim-filesystem x86_64 2:7.4.629-8.el7_9 updates 11 k
which x86_64 2.20-7.el7 base 41 k
Transaction Summary
================================================================================
Install 1 Package (+32 Dependent packages)
Total download size: 19 M
Installed size: 63 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/gpm-libs-1.20.7-6.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for gpm-libs-1.20.7-6.el7.x86_64.rpm is not installed
Public key for perl-Pod-Escapes-1.04-299.el7_9.noarch.rpm is not installed
--------------------------------------------------------------------------------
Total 1.1 MB/s | 19 MB 00:16
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-9.2009.0.el7.centos.x86_64 (@CentOS)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : gpm-libs-1.20.7-6.el7.x86_64 1/33
Installing : 2:vim-filesystem-7.4.629-8.el7_9.x86_64 2/33
Installing : 2:vim-common-7.4.629-8.el7_9.x86_64 3/33
Installing : which-2.20-7.el7.x86_64 4/33
install-info: No such file or directory for /usr/share/info/which.info.gz
Installing : groff-base-1.22.2-8.el7.x86_64 5/33
Installing : 1:perl-parent-0.225-244.el7.noarch 6/33
Installing : perl-HTTP-Tiny-0.033-3.el7.noarch 7/33
Installing : perl-podlators-2.5.1-3.el7.noarch 8/33
Installing : perl-Pod-Perldoc-3.20-4.el7.noarch 9/33
Installing : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch 10/33
Installing : perl-Encode-2.51-7.el7.x86_64 11/33
Installing : perl-Text-ParseWords-3.29-4.el7.noarch 12/33
Installing : perl-Pod-Usage-1.63-3.el7.noarch 13/33
Installing : 4:perl-macros-5.16.3-299.el7_9.x86_64 14/33
Installing : perl-Storable-2.45-3.el7.x86_64 15/33
Installing : perl-Exporter-5.68-3.el7.noarch 16/33
Installing : perl-constant-1.27-2.el7.noarch 17/33
Installing : perl-Socket-2.010-5.el7.x86_64 18/33
Installing : perl-Time-Local-1.2300-2.el7.noarch 19/33
Installing : perl-Carp-1.26-244.el7.noarch 20/33
Installing : perl-PathTools-3.40-5.el7.x86_64 21/33
Installing : perl-Scalar-List-Utils-1.27-248.el7.x86_64 22/33
Installing : 1:perl-Pod-Simple-3.28-4.el7.noarch 23/33
Installing : perl-File-Temp-0.23.01-3.el7.noarch 24/33
Installing : perl-File-Path-2.09-2.el7.noarch 25/33
Installing : perl-threads-shared-1.43-6.el7.x86_64 26/33
Installing : perl-threads-1.87-4.el7.x86_64 27/33
Installing : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 28/33
Installing : perl-Filter-1.49-3.el7.x86_64 29/33
Installing : 4:perl-libs-5.16.3-299.el7_9.x86_64 30/33
Installing : perl-Getopt-Long-2.40-3.el7.noarch 31/33
Installing : 4:perl-5.16.3-299.el7_9.x86_64 32/33
Installing : 2:vim-enhanced-7.4.629-8.el7_9.x86_64 33/33
Verifying : perl-HTTP-Tiny-0.033-3.el7.noarch 1/33
Verifying : perl-threads-shared-1.43-6.el7.x86_64 2/33
Verifying : perl-Storable-2.45-3.el7.x86_64 3/33
Verifying : groff-base-1.22.2-8.el7.x86_64 4/33
Verifying : perl-Exporter-5.68-3.el7.noarch 5/33
Verifying : perl-constant-1.27-2.el7.noarch 6/33
Verifying : perl-PathTools-3.40-5.el7.x86_64 7/33
Verifying : 4:perl-macros-5.16.3-299.el7_9.x86_64 8/33
Verifying : 2:vim-enhanced-7.4.629-8.el7_9.x86_64 9/33
Verifying : 1:perl-parent-0.225-244.el7.noarch 10/33
Verifying : perl-Socket-2.010-5.el7.x86_64 11/33
Verifying : which-2.20-7.el7.x86_64 12/33
Verifying : 2:vim-filesystem-7.4.629-8.el7_9.x86_64 13/33
Verifying : perl-File-Temp-0.23.01-3.el7.noarch 14/33
Verifying : 1:perl-Pod-Simple-3.28-4.el7.noarch 15/33
Verifying : perl-Time-Local-1.2300-2.el7.noarch 16/33
Verifying : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch 17/33
Verifying : perl-Carp-1.26-244.el7.noarch 18/33
Verifying : 2:vim-common-7.4.629-8.el7_9.x86_64 19/33
Verifying : perl-Scalar-List-Utils-1.27-248.el7.x86_64 20/33
Verifying : perl-Pod-Usage-1.63-3.el7.noarch 21/33
Verifying : perl-Encode-2.51-7.el7.x86_64 22/33
Verifying : perl-Pod-Perldoc-3.20-4.el7.noarch 23/33
Verifying : perl-podlators-2.5.1-3.el7.noarch 24/33
Verifying : 4:perl-5.16.3-299.el7_9.x86_64 25/33
Verifying : perl-File-Path-2.09-2.el7.noarch 26/33
Verifying : perl-threads-1.87-4.el7.x86_64 27/33
Verifying : 4:perl-Time-HiRes-1.9725-3.el7.x86_64 28/33
Verifying : gpm-libs-1.20.7-6.el7.x86_64 29/33
Verifying : perl-Filter-1.49-3.el7.x86_64 30/33
Verifying : perl-Getopt-Long-2.40-3.el7.noarch 31/33
Verifying : perl-Text-ParseWords-3.29-4.el7.noarch 32/33
Verifying : 4:perl-libs-5.16.3-299.el7_9.x86_64 33/33
Installed:
vim-enhanced.x86_64 2:7.4.629-8.el7_9
Dependency Installed:
gpm-libs.x86_64 0:1.20.7-6.el7
groff-base.x86_64 0:1.22.2-8.el7
perl.x86_64 4:5.16.3-299.el7_9
perl-Carp.noarch 0:1.26-244.el7
perl-Encode.x86_64 0:2.51-7.el7
perl-Exporter.noarch 0:5.68-3.el7
perl-File-Path.noarch 0:2.09-2.el7
perl-File-Temp.noarch 0:0.23.01-3.el7
perl-Filter.x86_64 0:1.49-3.el7
perl-Getopt-Long.noarch 0:2.40-3.el7
perl-HTTP-Tiny.noarch 0:0.033-3.el7
perl-PathTools.x86_64 0:3.40-5.el7
perl-Pod-Escapes.noarch 1:1.04-299.el7_9
perl-Pod-Perldoc.noarch 0:3.20-4.el7
perl-Pod-Simple.noarch 1:3.28-4.el7
perl-Pod-Usage.noarch 0:1.63-3.el7
perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
perl-Socket.x86_64 0:2.010-5.el7
perl-Storable.x86_64 0:2.45-3.el7
perl-Text-ParseWords.noarch 0:3.29-4.el7
perl-Time-HiRes.x86_64 4:1.9725-3.el7
perl-Time-Local.noarch 0:1.2300-2.el7
perl-constant.noarch 0:1.27-2.el7
perl-libs.x86_64 4:5.16.3-299.el7_9
perl-macros.x86_64 4:5.16.3-299.el7_9
perl-parent.noarch 1:0.225-244.el7
perl-podlators.noarch 0:2.5.1-3.el7
perl-threads.x86_64 0:1.87-4.el7
perl-threads-shared.x86_64 0:1.43-6.el7
vim-common.x86_64 2:7.4.629-8.el7_9
vim-filesystem.x86_64 2:7.4.629-8.el7_9
which.x86_64 0:2.20-7.el7
Complete!
Removing intermediate container 1f31b178d7b0
---> 636ad52d5f4e
Step 6/17 : RUN yum -y install net-tools
---> Running in 231811e49297
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.nju.edu.cn
* updates: mirrors.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
net-tools x86_64 2.0-0.25.20131004git.el7 base 306 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 306 k
Installed size: 917 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1
Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1
Installed:
net-tools.x86_64 0:2.0-0.25.20131004git.el7
Complete!
Removing intermediate container 231811e49297
---> e7d6bb4a5865
Step 7/17 : RUN yum -y install glibc.i686
---> Running in 7d5529db79c6
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.nju.edu.cn
* updates: mirrors.ustc.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package glibc.i686 0:2.17-326.el7_9 will be installed
--> Processing Dependency: glibc-common = 2.17-326.el7_9 for package: glibc-2.17-326.el7_9.i686
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.17-326.el7_9.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.17-326.el7_9.i686
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-317.el7 will be updated
--> Processing Dependency: glibc-common = 2.17-317.el7 for package: glibc-2.17-317.el7.x86_64
---> Package glibc-common.x86_64 0:2.17-326.el7_9 will be an update
---> Package nss-softokn-freebl.x86_64 0:3.53.1-6.el7_9 will be updated
---> Package nss-softokn-freebl.i686 0:3.67.0-3.el7_9 will be installed
--> Processing Dependency: nss-util >= 3.67.0-1 for package: nss-softokn-freebl-3.67.0-3.el7_9.i686
--> Processing Dependency: nspr >= 4.30.0 for package: nss-softokn-freebl-3.67.0-3.el7_9.i686
---> Package nss-softokn-freebl.x86_64 0:3.67.0-3.el7_9 will be an update
--> Running transaction check
---> Package glibc.x86_64 0:2.17-317.el7 will be updated
---> Package glibc.x86_64 0:2.17-326.el7_9 will be an update
---> Package nspr.x86_64 0:4.25.0-2.el7_9 will be updated
---> Package nspr.x86_64 0:4.32.0-1.el7_9 will be an update
---> Package nss-util.x86_64 0:3.53.1-1.el7_9 will be updated
---> Package nss-util.x86_64 0:3.67.0-1.el7_9 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
glibc i686 2.17-326.el7_9 updates 4.3 M
Installing for dependencies:
nss-softokn-freebl i686 3.67.0-3.el7_9 updates 325 k
Updating for dependencies:
glibc x86_64 2.17-326.el7_9 updates 3.6 M
glibc-common x86_64 2.17-326.el7_9 updates 12 M
nspr x86_64 4.32.0-1.el7_9 updates 127 k
nss-softokn-freebl x86_64 3.67.0-3.el7_9 updates 337 k
nss-util x86_64 3.67.0-1.el7_9 updates 79 k
Transaction Summary
================================================================================
Install 1 Package (+1 Dependent package)
Upgrade ( 5 Dependent packages)
Total download size: 20 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
--------------------------------------------------------------------------------
Total 35 kB/s | 20 MB 09:45
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : nss-softokn-freebl-3.67.0-3.el7_9.x86_64 1/12
Updating : glibc-common-2.17-326.el7_9.x86_64 2/12
Updating : glibc-2.17-326.el7_9.x86_64 3/12
Updating : nspr-4.32.0-1.el7_9.x86_64 4/12
Updating : nss-util-3.67.0-1.el7_9.x86_64 5/12
Installing : nss-softokn-freebl-3.67.0-3.el7_9.i686 6/12
Installing : glibc-2.17-326.el7_9.i686 7/12
Cleanup : nspr-4.25.0-2.el7_9.x86_64 8/12
Cleanup : nss-util-3.53.1-1.el7_9.x86_64 9/12
Cleanup : nss-softokn-freebl-3.53.1-6.el7_9.x86_64 10/12
Cleanup : glibc-common-2.17-317.el7.x86_64 11/12
Cleanup : glibc-2.17-317.el7.x86_64 12/12
Verifying : glibc-common-2.17-326.el7_9.x86_64 1/12
Verifying : nss-softokn-freebl-3.67.0-3.el7_9.x86_64 2/12
Verifying : glibc-2.17-326.el7_9.x86_64 3/12
Verifying : nss-util-3.67.0-1.el7_9.x86_64 4/12
Verifying : nspr-4.32.0-1.el7_9.x86_64 5/12
Verifying : glibc-2.17-326.el7_9.i686 6/12
Verifying : nss-softokn-freebl-3.67.0-3.el7_9.i686 7/12
Verifying : glibc-2.17-317.el7.x86_64 8/12
Verifying : glibc-common-2.17-317.el7.x86_64 9/12
Verifying : nspr-4.25.0-2.el7_9.x86_64 10/12
Verifying : nss-softokn-freebl-3.53.1-6.el7_9.x86_64 11/12
Verifying : nss-util-3.53.1-1.el7_9.x86_64 12/12
Installed:
glibc.i686 0:2.17-326.el7_9
Dependency Installed:
nss-softokn-freebl.i686 0:3.67.0-3.el7_9
Dependency Updated:
glibc.x86_64 0:2.17-326.el7_9 glibc-common.x86_64 0:2.17-326.el7_9
nspr.x86_64 0:4.32.0-1.el7_9 nss-softokn-freebl.x86_64 0:3.67.0-3.el7_9
nss-util.x86_64 0:3.67.0-1.el7_9
Complete!
Removing intermediate container 7d5529db79c6
---> 12d42a5b6004
Step 8/17 : RUN mkdir /usr/local/java
---> Running in 3e8a6abff8e2
Removing intermediate container 3e8a6abff8e2
---> f4c3fd2bae1f
Step 9/17 : ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
---> 440a6bd6da61
Step 10/17 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
---> Running in 24bc3cb8bd04
Removing intermediate container 24bc3cb8bd04
---> 13c4ca55f35e
Step 11/17 : ENV JRE_HOME $JAVA_HOME/jre
---> Running in 782b9bbf4d78
Removing intermediate container 782b9bbf4d78
---> f9051f305225
Step 12/17 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
---> Running in 937c1030ddd1
Removing intermediate container 937c1030ddd1
---> d9d89b3a80e0
Step 13/17 : ENV PATH $JAVA_HOME/bin:$PATH
---> Running in 92d4091fcb25
Removing intermediate container 92d4091fcb25
---> 3e3fe4a7e8ee
Step 14/17 : EXPOSE 80
---> Running in 3478980aa8b5
Removing intermediate container 3478980aa8b5
---> 370ac0bf88e2
Step 15/17 : CMD echo $MYPATH
---> Running in eeb80d74b277
Removing intermediate container eeb80d74b277
---> 7c81a14e5fff
Step 16/17 : CMD echo "success###############ok"
---> Running in bfb99fd052de
Removing intermediate container bfb99fd052de
---> 94dc9fe4a32f
Step 17/17 : CMD /bin/bash
---> Running in f5e3b73e37ec
Removing intermediate container f5e3b73e37ec
---> 24af206ac896
Successfully built 24af206ac896
Successfully tagged centosjava8:1.5
UnionFS(聯(lián)合文件系統(tǒng)):Union文件系統(tǒng)(UnionFS)是一種分層、輕量級并且高性能的文件系統(tǒng),它支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)。Union 文件系統(tǒng)是 Docker 鏡像的基礎(chǔ)。鏡像可以通過分層來進行繼承,基于基礎(chǔ)鏡像(沒有父鏡像),可以制作各種具體的應(yīng)用鏡像。文章來源:http://www.zghlxwxcb.cn/news/detail-553069.html
回頭看看構(gòu)建過程中的17個步驟,?再自行體會一下什么是聯(lián)合文件系統(tǒng)。文章來源地址http://www.zghlxwxcb.cn/news/detail-553069.html
到了這里,關(guān)于Docker容器 - DockerFile詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!