国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

docker 筆記6:高級(jí)篇 DockerFile解析

這篇具有很好參考價(jià)值的文章主要介紹了docker 筆記6:高級(jí)篇 DockerFile解析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

目錄

?1.是什么???

2.構(gòu)建三步驟

3.DockerFile構(gòu)建過程解析

3.1 Dockerfile內(nèi)容基礎(chǔ)知識(shí)

3.2Docker執(zhí)行Dockerfile的大致流程

? 總結(jié)

4.DockerFile常用保留字指令

5.案例:自定義鏡像

?5.1 要求:?Centos7鏡像具備vim+ifconfig+jdk8

?5.2編寫

5.3 準(zhǔn)備編寫Dockerfile文件??大寫字母D

5.3構(gòu)建

5.4再體會(huì)下UnionFS(聯(lián)合文件系統(tǒng))

6.虛懸鏡像

6.1是什么 ???

6.2查看?

6.3刪除?

作業(yè)-自定義鏡像myubuntu?


?

?1.是什么???

Dockerfile是用來構(gòu)建Docker鏡像的文本文件,是由一條條構(gòu)建鏡像所需的指令和參數(shù)構(gòu)成的腳本。

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

?Dockerfile reference | Docker Docs

2.構(gòu)建三步驟

編寫Dockerfile文件

docker build命令構(gòu)建鏡像

docker run依鏡像運(yùn)行容器實(shí)例

3.DockerFile構(gòu)建過程解析

3.1 Dockerfile內(nèi)容基礎(chǔ)知識(shí)

1:每條保留字指令都必須為大寫字母且后面要跟隨至少一個(gè)參數(shù)

2:指令按照從上到下,順序執(zhí)行

3:#表示注釋

4:每條指令都會(huì)創(chuàng)建一個(gè)新的鏡像層并對(duì)鏡像進(jìn)行提交

3.2Docker執(zhí)行Dockerfile的大致流程

(1)docker從基礎(chǔ)鏡像運(yùn)行一個(gè)容器

(2)執(zhí)行一條指令并對(duì)容器作出修改

?(3)執(zhí)行類似docker commit的操作提交一個(gè)新的鏡像層

(4)docker再基于剛提交的鏡像運(yùn)行一個(gè)新容器

(5)執(zhí)行dockerfile中的下一條指令直到所有指令都執(zhí)行完成

? 總結(jié)


從應(yīng)用軟件的角度來看,Dockerfile、Docker鏡像與Docker容器分別代表軟件的三個(gè)不同階段,
* ?Dockerfile是軟件的原材料
* ?Docker鏡像是軟件的交付品
* ?Docker容器則可以認(rèn)為是軟件鏡像的運(yùn)行態(tài),也即依照鏡像運(yùn)行的容器實(shí)例
Dockerfile面向開發(fā),Docker鏡像成為交付標(biāo)準(zhǔn),Docker容器則涉及部署與運(yùn)維,三者缺一不可,合力充當(dāng)Docker體系的基石。

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

1 Dockerfile,需要定義一個(gè)Dockerfile,Dockerfile定義了進(jìn)程需要的一切東西。Dockerfile涉及的內(nèi)容包括執(zhí)行代碼或者是文件、環(huán)境變量、依賴包、運(yùn)行時(shí)環(huán)境、動(dòng)態(tài)鏈接庫、操作系統(tǒng)的發(fā)行版、服務(wù)進(jìn)程和內(nèi)核進(jìn)程(當(dāng)應(yīng)用進(jìn)程需要和系統(tǒng)服務(wù)和內(nèi)核進(jìn)程打交道,這時(shí)需要考慮如何設(shè)計(jì)namespace的權(quán)限控制)等等;
?
2 Docker鏡像,在用Dockerfile定義一個(gè)文件之后,docker build時(shí)會(huì)產(chǎn)生一個(gè)Docker鏡像,當(dāng)運(yùn)行 Docker鏡像時(shí)會(huì)真正開始提供服務(wù);
?
3 Docker容器,容器是直接提供服務(wù)的。

4.DockerFile常用保留字指令

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

參考tomcat8的dockerfile入門??GitHub - docker-library/tomcat: Docker Official Image packaging for Apache Tomcat

FROM

基礎(chǔ)鏡像,當(dāng)前新鏡像是基于哪個(gè)鏡像的,指定一個(gè)已經(jīng)存在的鏡像作為模板,第一條必須是from

MAINTAINER

鏡像維護(hù)者的姓名和郵箱地址

RUN?

容器構(gòu)建時(shí)需要運(yùn)行的命令

兩種格式?

shell格式

?
RUN yum -y install vim

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

exec格式

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

RUN是在 docker build時(shí)運(yùn)行

EXPOSE

當(dāng)前容器對(duì)外暴露出的端口

WORKDIR

指定在創(chuàng)建容器后,終端默認(rèn)登陸的進(jìn)來工作目錄,一個(gè)落腳點(diǎn)

USER

指定該鏡像以什么樣的用戶去執(zhí)行,如果都不指定,默認(rèn)是root

ENV

用來在構(gòu)建鏡像過程中設(shè)置環(huán)境變量

ENV MY_PATH /usr/mytest
這個(gè)環(huán)境變量可以在后續(xù)的任何RUN指令中使用,這就如同在命令前面指定了環(huán)境變量前綴一樣;
也可以在其它指令中直接使用這些環(huán)境變量,
?
比如:WORKDIR $MY_PATH

ADD

將宿主機(jī)目錄下的文件拷貝進(jìn)鏡像且會(huì)自動(dòng)處理URL和解壓tar壓縮包

?COPY

類似ADD,拷貝文件和目錄到鏡像中。
將從構(gòu)建上下文目錄中 <源路徑> 的文件/目錄復(fù)制到新的一層的鏡像內(nèi)的 <目標(biāo)路徑> 位置

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器?VOLUME

容器數(shù)據(jù)卷,用于數(shù)據(jù)保存和持久化工作

CMD

指定容器啟動(dòng)后的要干的事情

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

注意

Dockerfile 中可以有多個(gè) CMD 指令,但只有最后一個(gè)生效,CMD 會(huì)被 docker run 之后的參數(shù)替換

參考官網(wǎng)Tomcat的dockerfile演示講解

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

?它和前面RUN命令的區(qū)別

CMD是在docker run 時(shí)運(yùn)行。RUN是在 docker build時(shí)運(yùn)行

ENTRYPOINT

也是用來指定一個(gè)容器啟動(dòng)時(shí)要運(yùn)行的命令

類似于 CMD 指令,但是ENTRYPOINT不會(huì)被docker run后面的命令覆蓋,
而且這些命令行參數(shù)會(huì)被當(dāng)作參數(shù)送給 ENTRYPOINT 指令指定的程序

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

?docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

是否傳參?? ?按照dockerfile編寫執(zhí)行?? ?傳參運(yùn)行
Docker命令?? ?docker run ?nginx:test?? ?docker run ?nginx:test -c /etc/nginx/new.conf
衍生出的實(shí)際命令?? ?nginx -c /etc/nginx/nginx.conf?? ?nginx -c /etc/nginx/new.conf
docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器?優(yōu)點(diǎn) :?

在執(zhí)行docker run的時(shí)候可以指定 ENTRYPOINT 運(yùn)行所需的參數(shù)。

注意:

如果 Dockerfile 中如果存在多個(gè) ENTRYPOINT 指令,僅最后一個(gè)生效。

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

5.案例:自定義鏡像

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

?5.1 要求:?Centos7鏡像具備vim+ifconfig+jdk8

JDK的下載鏡像地址:docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器小柒博客 | 開源軟件鏡像站

?5.2編寫

5.3 準(zhǔn)備編寫Dockerfile文件??大寫字母D

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

FROM centos
MAINTAINER zzyy<zzyybs@126.com>
 
ENV MYPATH /usr/local
WORKDIR $MYPATH
 
#安裝vim編輯器
RUN yum -y install vim
#安裝ifconfig命令查看網(wǎng)絡(luò)IP
RUN yum -y install net-tools
#安裝java8及l(fā)ib庫
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相對(duì)路徑j(luò)ar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安裝包必須要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java環(huán)境變量
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
 
EXPOSE 80
 
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash

5.3構(gòu)建

docker build -t 新鏡像名字:TAG .

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

?注意,上面TAG后面有個(gè)空格,有個(gè)點(diǎn)

運(yùn)行

docker run -it 新鏡像名字:TAG

?docker run -it centosjava8:1.5 /bin/bash

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

5.4再體會(huì)下UnionFS(聯(lián)合文件系統(tǒng))

UnionFS(聯(lián)合文件系統(tǒng)):Union文件系統(tǒng)(UnionFS)是一種分層、輕量級(jí)并且高性能的文件系統(tǒng),它支持對(duì)文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時(shí)可以將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)。Union 文件系統(tǒng)是 Docker 鏡像的基礎(chǔ)。鏡像可以通過分層來進(jìn)行繼承,基于基礎(chǔ)鏡像(沒有父鏡像),可以制作各種具體的應(yīng)用鏡像。

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器
特性:一次同時(shí)加載多個(gè)文件系統(tǒng),但從外面看起來,只能看到一個(gè)文件系統(tǒng),聯(lián)合加載會(huì)把各層文件系統(tǒng)疊加起來,這樣最終的文件系統(tǒng)會(huì)包含所有底層的文件和目錄

6.虛懸鏡像

6.1是什么 ???

倉庫名、標(biāo)簽都是<none>的鏡像,俗稱dangling image


1 vim Dockerfile
from ubuntu
CMD echo 'action is success'
 
2 docker build .

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

6.2查看?

docker image ls -f dangling=true

命令結(jié)果

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

6.3刪除?

docker image prune
?
虛懸鏡像已經(jīng)失去存在價(jià)值,可以刪除

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

作業(yè)-自定義鏡像myubuntu?

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器?編寫:準(zhǔn)備編寫DockerFile文件

docker 筆記6:高級(jí)篇 DockerFile解析,云原生技術(shù),docker,筆記,容器

FROM ubuntu
MAINTAINER zzyy<zzyybs@126.com>
 
ENV MYPATH /usr/local
WORKDIR $MYPATH
 
RUN apt-get update
RUN apt-get install net-tools
#RUN apt-get install -y iproute2
#RUN apt-get install -y inetutils-ping
 
EXPOSE 80
 
CMD echo $MYPATH
CMD echo "install inconfig cmd into ubuntu success--------------ok"
CMD /bin/bash

構(gòu)建?

docker build -t 新鏡像名字:TAG .

運(yùn)行文章來源地址http://www.zghlxwxcb.cn/news/detail-693772.html

docker run -it 新鏡像名字:TAG

到了這里,關(guān)于docker 筆記6:高級(jí)篇 DockerFile解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Docker容器與虛擬化技術(shù):Dockerfile部署LNMP

    Docker容器與虛擬化技術(shù):Dockerfile部署LNMP

    目錄 一、理論 1.LNMP架構(gòu) 2.背景 3.Dockerfile部署LNMP 3.構(gòu)建Nginx鏡像 4.構(gòu)建MySQL容器 5.構(gòu)建PHP鏡像 6.啟動(dòng) wordpress 服務(wù)? 二、實(shí)驗(yàn) ?1.環(huán)境準(zhǔn)備 2.構(gòu)建Nginx鏡像 3.構(gòu)建MySQL容器 4.構(gòu)建PHP鏡像 5.啟動(dòng) wordpress 服務(wù)? 三、問題 1.構(gòu)建nginx鏡像報(bào)錯(cuò) 2.構(gòu)建php鏡像報(bào)錯(cuò) 2.生成PHP鏡像一直為Exit

    2024年02月04日
    瀏覽(26)
  • 【云原生-Docker】docker容器自定義DNS解析

    【云原生-Docker】docker容器自定義DNS解析

    在特定的情況下,或者在網(wǎng)絡(luò)策略特殊定義下,需要自定義dns進(jìn)行域名訪問,在宿主機(jī)上配置了域名解析,對(duì)于docker容器無效。 對(duì)于局域網(wǎng)內(nèi)的域名解析,Docker 需要到 Docker 容器中配置 hosts 文件 。 docker-compose配置【推薦】 通過增加 extra_hosts 屬性 進(jìn)行host配置 進(jìn)入容器內(nèi)部

    2024年02月03日
    瀏覽(32)
  • 容器和云原生(二):Docker容器化技術(shù)

    容器和云原生(二):Docker容器化技術(shù)

    ? 目錄 Docker容器的使用 Docker容器關(guān)鍵技術(shù) Namespace? Cgroups UnionFS ? ? ? ? 首先直觀地了解docker如何安裝使用,并快速啟動(dòng)mysql服務(wù)的,啟動(dòng)時(shí)候綁定主機(jī)上的3306端口,查找mysql容器的ip,使用mysql -h containerIP 或者127.0.0.1就可以直接訪問mysql服務(wù),暫不考慮mysql的存儲(chǔ)卷。 ???

    2024年02月12日
    瀏覽(24)
  • 云原生之深入解析Docker容器的health健康狀態(tài)檢查

    自 1.12 版本之后,Docker 引入了原生的健康檢查實(shí)現(xiàn)。對(duì)于容器而言,最簡(jiǎn)單的健康檢查是進(jìn)程級(jí)的健康檢查,即檢驗(yàn)進(jìn)程是否存活。Docker Daemon 會(huì)自動(dòng)監(jiān)控容器中的 PID1 進(jìn)程,如果 docker run 命令中指明了 restart policy,可以根據(jù)策略自動(dòng)重啟已結(jié)束的容器。 在很多實(shí)際場(chǎng)景下,

    2024年02月09日
    瀏覽(24)
  • 探索云原生技術(shù)之基石-Docker容器入門篇(1)

    探索云原生技術(shù)之基石-Docker容器入門篇(1)

    本博文一共有6篇,如下 探索云原生技術(shù)之基石-Docker容器入門篇(1) 探索云原生技術(shù)之基石-Docker容器入門篇(2) 探索云原生技術(shù)之基石-Docker容器入門篇(3) 等你對(duì)Docker有一定理解的時(shí)候可以看高級(jí)篇,不過不太建議。 探索云原生技術(shù)之基石-Docker容器高級(jí)篇(1) 探索云原生技術(shù)之

    2023年04月12日
    瀏覽(19)
  • 探索云原生技術(shù)之基石-Docker容器入門篇(4)

    探索云原生技術(shù)之基石-Docker容器入門篇(4)

    本博文一共有7篇,如下 探索云原生技術(shù)之基石-Docker容器入門篇(1) 探索云原生技術(shù)之基石-Docker容器入門篇(2) 探索云原生技術(shù)之基石-Docker容器入門篇(3) 探索云原生技術(shù)之基石-Docker容器入門篇(4) ,=由于篇幅過長,所以另起一篇 等你對(duì)Docker有一定理解的時(shí)候可以看高級(jí)篇,不

    2023年04月08日
    瀏覽(16)
  • 探索云原生技術(shù)之基石-Docker容器入門篇(2)

    探索云原生技術(shù)之基石-Docker容器入門篇(2)

    本博文一共有6篇,如下 探索云原生技術(shù)之基石-Docker容器入門篇(1) 探索云原生技術(shù)之基石-Docker容器入門篇(2) 探索云原生技術(shù)之基石-Docker容器入門篇(3) 等你對(duì)Docker有一定理解的時(shí)候可以看高級(jí)篇,不過不太建議。 探索云原生技術(shù)之基石-Docker容器高級(jí)篇(1) 探索云原生技術(shù)之

    2023年04月14日
    瀏覽(19)
  • 云原生之深入解析Docker容器退出碼的含義和產(chǎn)生原因

    云原生之深入解析Docker容器退出碼的含義和產(chǎn)生原因

    為什么我的容器沒有運(yùn)行?回答這個(gè)問題之前,需要知道 Docker 容器為什么退出?退出碼會(huì)提示容器停止運(yùn)行的情況? 本文列出最常見的退出碼,來回答兩個(gè)重要問題:這些退出碼是什么意思?導(dǎo)致該退出碼的動(dòng)作是什么?exit code:代表一個(gè)進(jìn)程的返回碼,通過系統(tǒng)調(diào)用 ex

    2024年02月07日
    瀏覽(22)
  • 【云原生進(jìn)階之容器】第一章Docker核心技術(shù)1.1節(jié)——Docker綜述

    【云原生進(jìn)階之容器】第一章Docker核心技術(shù)1.1節(jié)——Docker綜述

    ? ????《重識(shí)云原生系列》專題各章首節(jié)索引: 第一章——不謀全局不足以謀一域 第二章計(jì)算第1節(jié)——計(jì)算虛擬化技術(shù)總述 第三章云存儲(chǔ)第1節(jié)——分布式云存儲(chǔ)總述 第四章云網(wǎng)絡(luò)第一節(jié)——云網(wǎng)絡(luò)技術(shù)發(fā)展簡(jiǎn)述 第六章容器6.1.1節(jié)——容器綜述 ???《云原生進(jìn)階之容器》

    2023年04月16日
    瀏覽(25)
  • 云原生之深入解析Docker容器的核心Cgroups的相關(guān)概念和使用實(shí)現(xiàn)

    云原生之深入解析Docker容器的核心Cgroups的相關(guān)概念和使用實(shí)現(xiàn)

    Cgroups 是 Linux 系統(tǒng)內(nèi)核提供的一種機(jī)制,這種機(jī)制可以根據(jù)需求將一些列系統(tǒng)任務(wù)機(jī)器子任務(wù)整合或分離到按資源劃分登記的不同組內(nèi),從而為系統(tǒng)資源管理提供一個(gè)的框架。簡(jiǎn)單地說,Cgroups 可以限制、記錄任務(wù)組所使用的物理組員(比如 CPU、Memory、IO等),為容器實(shí)現(xiàn)虛

    2024年02月12日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包