人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Docker進階之構建自定義鏡像實戰(zhàn)指南

發(fā)布日期:2022-07-15 19:37 | 文章來源:CSDN

一、什么是 Docker 鏡像?

Docker 鏡像可以看作是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動態(tài)數據,其內容在構建之后也不會被改變。

鏡像是Docker容器的基石,容器是鏡像的運行實例,有了鏡像才能啟動容器。

二、自定義鏡像的好處?

從軟件版本管理角度講,Dockerfile本身是腳本文件,是可以版本化的。理論上使用Dockerfile,在任何時候任何機器上都可以重演鏡像制作過程制作出一模一樣的鏡像,這是非常有利于工程化的。

Dockerfile 可以快速幫助我們構建自己的定制鏡像!

三、構建自己的Centos

通過編寫 Dockerfile 文件來制作Centos 鏡像,并在官方提供的基礎上添加 vim、net-tools文件

新建 /home/dockerfile

cd /home
mkdir dockerfile

進入新建的dockerfile文件夾,并新建 mydockerfile-centos

# 基礎鏡像引入centos7
FROM centos:centos7
# 作者
MAINTAINER xiaowang<wanghuichen2003@163.com>
#配置工作目錄
ENV MYPATH /usr/local
WORKDIR $MYPATH
#由于官方默認提供的centos是壓縮版本,沒有vim以及一些其它的命令,只有基礎的命令,我們需要去下載安裝包
RUN yum -y install vim
RUN yum -y install net-tools
# 開放端口80
EXPOSE 80
# 輸出工作目錄
CMD echo $MYPATH
CMD echo "--- end ---"
# 以bin/bash啟動
CMD /bin/bash

查看編寫好的文件

編譯剛剛寫好的centos7

# 注意后面有一個 .  代表當前目錄
docker build -f mydockerfile-centos  -t mycentos:0.1 .

等待編譯完成即可

完成后運行鏡像

docker run -it mycentos:0.1

vim 文件

vim test
pwd

查看ifconfig

查看鏡像歷史操作

docker history 2c2feb50d12c

四、RUN、CMD和ENTRYPOINT的區(qū)別

RUN命令與CMD命令的區(qū)別在哪里?

簡單說,RUN命令在Image 文件的構建階段執(zhí)行,執(zhí)行結果會打包進入image文件,CMD命令則是在容器啟動后執(zhí)行。另外,一個Dockerfile可以包含多個RUN命令,但只能由一個CMD命令

注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否則它會覆蓋CMD命令。

CMD和ENTRYPOINT命令的區(qū)別

  • CMD:指定容器啟動的時候要運行的命令,只有最后一個會生效
  • ENRTYPOINT:指定容器啟動的時候要運行的命令,命令可以追加

CMD命令

# 進入dockerfile 目錄,新建dockerfile-cmd-test文件
FROM centos:centos7
CMD ["ls", "-a"]

編譯并執(zhí)行文件

# 編譯文件
docker build -f dockerfile-cmd-test -t cmdtest .
# 執(zhí)行文件
docker run f74776bf8b3c

追加命令查看全部文件目錄

docker run f74776bf8b3c -l

可以看到,cmd命令把上一個命令給替換了,由于 -l 不是命令,所以報錯了,證明cmd命令會覆蓋前面的cmd命令,只執(zhí)行最后一個cmd命令

再次執(zhí)行查看全部文件目錄命令

docker run f74776bf8b3c ls -al

可以看到,上一個 ls-a命令已被替換為ls -al命令!

ENTRYPOINT命令

回到 /home/dockerfile 目錄,新建文件測試ENTRYPOINT并寫入內容

cd /home/dockerfile
vim dockerfile-entrypoint
# 寫入以下命令
FROM centos:centos7
ENTRYPOINT ["ls", "-a"]

編譯文件并執(zhí)行容器

# 編譯文件
docker build -f dockerfile-entrypoint
# 執(zhí)行容器
docker run 29891c9ff3c9

在啟動時追加命令

docker run 29891c9ff3c9 -l

可以看到直接追加了命令

五、【實戰(zhàn)】Dockerfile制作tomcat鏡像

下載JDK、Tomcat文件

jdk:https://www.jb51.net/softs/698365.html

Tomcat:https://www.jb51.net/softs/537911.html

使用Filezilla將文件上傳至 /home/xiaowang目錄下

上傳成功后查看文件

編寫文件

編寫dockerfile文件,文件名使用官方命名:Dockerfile,build的時候會默認尋找當前目錄下的文件,不需要 -f 參數指定

vim Dockerfile
# 寫入以下文件
FROM centos:centos7
MAINTAINER ethan<wanghuichen2003@163.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u311-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.62.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_311
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib.tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.62
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.62
ENVPATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.62/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.62/bin/logs/catalina.out

構建鏡像

編譯鏡像文件

docker build -t diytomcat:1.0

啟動鏡像

編譯完成后啟動鏡像

# 啟動容器,外部端口3355映射內部容器8080 重命名容器名稱,掛載鏡像
docker run -d -p 3355:8080 --name diytomcat -v /home/dockerfile/xiaowang/test:/usr/local/apache-tomcat-9.0.62/webapps/test diytomcat:1.0

測試訪問

訪問外網ip地址+3355端口出現tomcat界面

在tomcat目錄下新建html文件

由于內部容器和外部進行了掛載,所以修改外部內容,內部容器也會更新

我們進入目錄,新建html文件對外訪問時展示此頁面

cd /home/dockerfile/xiaowang/test
vim test.html

寫入以下內容

<!DOCTYPE html>
<html>
    <head>
         <meta charset="UTF-8"/>
        <title>Title</title>
    </head>
    <body>
        <h1>簡單的HTML頁面</h1>
        <p>Hello World!</p>
    </body>
</html>

瀏覽器后綴+test路徑訪問

ok,至此tomcat鏡像制作完畢

小結

以上就是【Bug 終結者】對 【云原生】Docker 進階 – 構建自定義鏡像實戰(zhàn) 自定義我們的Docker鏡像可利于我們的快速開發(fā),提高開發(fā)的效率,可謂是開發(fā)利器!

到此這篇關于Docker進階之構建自定義鏡像實戰(zhàn)的文章就介紹到這了,更多相關Docker構建自定義鏡像內容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!

美國服務器租用

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部