使用DockerFile構建鏡像與鏡像上傳的實現(xiàn)步驟
前言:為什么要使用Dockerfile ?
首先Dockerfile 是一個文本格式的配置文件, 用戶可以使用 Dockerfile 來快速創(chuàng)建自定義的鏡像。在沒使用Dockerfile之前構建鏡像是這樣的:一步一步操作

不使用Dockerfile的劣勢:
- 手動操作容易出錯,難以保證一致性。
- 構建過程不透明,不易維護和管理。
- 需要手動執(zhí)行多個步驟,容易遺漏或出現(xiàn)問題。
使用Dockerfile的好處:
- 自動化構建,確保環(huán)境的一致性和可重復性。
- 可以使用版本控制系統(tǒng)管理Dockerfile,跟蹤構建過程的演化。
- 通過簡單的命令就能完成構建和運行。
一、DockerFile構建鏡像
1、構建基礎對象
已知構建基礎鏡像的目的是為了在容器中提供一個運行環(huán)境,以便在其基礎上構建和運行應用程序。而CentOS和Alpine都是常見的基礎操作系統(tǒng)鏡像,用于構建Docker容器。它們有一些區(qū)別和各自的優(yōu)點,主要涉及到鏡像大小、軟件包管理系統(tǒng)和適用場景等方面。
CentOS鏡像:
- 鏡像大?。?/strong> CentOS鏡像通常比Alpine鏡像大,因為它包含了更多的系統(tǒng)庫和工具。
- 軟件包管理: CentOS使用yum(Yellowdog Updater, Modified)作為其軟件包管理系統(tǒng)。它有廣泛的軟件倉庫,可以方便地安裝各種軟件包。
- 系統(tǒng)庫: CentOS提供了完整的系統(tǒng)庫和工具,適合那些需要更多系統(tǒng)級功能和工具的場景。
- 適用場景: 適用于需要在容器中運行更龐大、復雜的應用程序,或者依賴于CentOS特定庫的場景。例如,一些企業(yè)級應用可能更適合在CentOS環(huán)境中運行。
Alpine鏡像:
- 鏡像大小: Alpine鏡像非常小巧,通常比CentOS小得多。這是因為Alpine使用了musl libc和BusyBox,精簡了系統(tǒng)組件。
- 軟件包管理: Alpine使用apk作為其軟件包管理系統(tǒng)。雖然軟件包數(shù)量相對較少,但它足夠輕量且足夠滿足大多數(shù)基本需求。
- 系統(tǒng)庫: Alpine精簡了系統(tǒng)庫,只包含最小必需的庫,這有助于減小鏡像大小。
- 適用場景: 適用于對鏡像大小要求較高,或者在輕量級、敏捷的場景中運行應用程序。Alpine常被用作構建微服務、容器化應用和云原生應用的基礎鏡像。
總結各自優(yōu)點:
- CentOS:
- 適合需要完整系統(tǒng)庫和工具的應用場景。
- 更廣泛的軟件包支持。
- 適用于相對較大和復雜的應用程序。
- Alpine:
- 非常小巧的鏡像大小。
- 適用于對鏡像大小要求較高的場景。
- 適用于輕量級、敏捷的應用場景,如微服務和云原生應用。
選擇CentOS還是Alpine通常取決于具體的應用需求和容器使用場景。如果鏡像大小是關鍵因素,而且應用可以在Alpine的輕量環(huán)境中運行,那么Alpine可能是更好的選擇。如果應用需要更完整的系統(tǒng)環(huán)境和軟件包支持,那么CentOS可能更合適。
2、Dockerfile文件結構
Dockerfile 由一行行命令語句組成,并且支持以 # 開頭的注釋行。
一般Dockerfile 分為四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執(zhí)行指令。
| 部分 | 命令 |
| 基礎鏡像信息 | FROM |
| 維護者信息 | MAINTAINER |
| 鏡像操作指令 | RUN、ENV、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、 VOLUME等 |
| 容器啟動時執(zhí)行指 令 | CMD、ENTRYPOINT |

基礎鏡像信息:
定義了構建過程中使用的基礎鏡像?;A鏡像是構建新鏡像的起點,包含了操作系統(tǒng)和基本的運行時環(huán)境。FROM指令是Dockerfile的第一條指令,必須出現(xiàn)在Dockerfile的最開始。
維護者信息:
用于指定Docker鏡像的維護者信息,即負責維護該鏡像的人或團隊。這個信息可以提供一些聯(lián)系方式或者簡要的說明。
鏡像操作指令:
這些指令用于在構建過程中對鏡像進行操作。其中,ENV用于設置環(huán)境變量,COPY用于復制文件或目錄到鏡像中,ADD與COP作用差不多,它還會壓縮包文件進行解壓,WORKDIR設置工作目錄,RUN用于在構建過程中執(zhí)行命令,EXPOSE用于聲明容器運行時需要暴露的端口,USER用于設置在容器中運行時使用的用戶名或用戶ID,ONBUILD用于在構建子鏡像時執(zhí)行一些命令,VOLUME用于聲明容器中的掛載點,可以將宿主機上的目錄或文件掛載到容器中,用于持久化存儲數(shù)據(jù)。這樣可以保證在容器刪除后數(shù)據(jù)不會丟失。
容器啟動時執(zhí)行指令:
定義了容器啟動時執(zhí)行的默認命令。該命令可以被用戶指定的命令覆蓋。CMD指令通常是最后一條指令,如果有多個CMD指令,只有最后一條會生效。
ENTRYPOINT與CMD不同,ENTRYPOINT指定的命令不會被docker run命令行中的參數(shù)覆蓋,而是作為容器的主要執(zhí)行命令。
以上這些指令一起構成了Dockerfile,定義了構建鏡像的過程和鏡像的運行時行為。通過這些指令,可以靈活地配置和定制Docker鏡像,以適應不同的應用場景。
3、構建Dockerfile文件鏡像
準備需要上傳的文件:

1、構建Dockerfile:
#1.指定基礎鏡像,并且必須是第一條指令 FROM jeanblanchard/alpine-glibc #2.指明該鏡像的作者和其電子郵件 MAINTAINER "3315757094@qq.com" #3.在構建鏡像時,指定鏡像的工作目錄,之后的命令都是基于此工作目錄,如果不存在,則會創(chuàng)建目錄 WORKDIR /test #4.復制需要運行的應用程序 COPY spring.jar /test #5.一個復制命令,把jdk安裝文件復制到鏡像中,注意:jdk*.tar.gz使用的是相對路徑 ADD jre-8u391-linux-x64.tar.gz /test #6.配置環(huán)境變量 ENV JAVA_HOME=/test/jre1.8.0_391 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH=$JAVA_HOME/bin:$PATH #7.容器啟動時需要執(zhí)行的命令 CMD java -jar spring.jar
2、配置好Dockerfiel文件后開始構建鏡像 :

3、運行鏡像:

測試:

二、鏡像上傳(阿里云)
上傳鏡像就是為了方便各位同事更好的搬磚,步驟如下:
1、注冊/登錄阿里云搜索容器鏡像服務

2、點擊實例模塊創(chuàng)建倉庫

...

...

3、創(chuàng)建好后就會有操作指南(復制操作就行)

當然要上傳鏡像需要獲取訪問憑證進行登錄:

示例:
1. 登錄
2.給本地的Docker鏡像打標簽,使其與阿里云容器鏡像服務相關聯(lián)

根據(jù)tag(版本)推送:

拉?。?/strong>
docker pull registry.cn-hangzhou.aliyuncs.com/ycxw320/spring_test:v1 [鏡像版本號]

以上就是使用DockerFile構建鏡像與鏡像上傳的實現(xiàn)步驟的詳細內(nèi)容,更多關于DockerFile構建鏡像與鏡像上傳的資料請關注腳本之家其它相關文章!
相關文章
一文詳解如何在Ubuntu系統(tǒng)中安裝docker
這篇文章主要為大家詳細介紹了在Ubuntu操作系統(tǒng)上安裝Docker的步驟,以便我們可以開始使用Docker來構建和運行容器化應用程序,希望對大家有所幫助2024-03-03
詳解如何獲取docker容器(container)的ip地址
這篇文章主要介紹了詳解如何獲取docker容器(container)的ip地址,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
docker images,info,-d等命令報錯的解決方法
最近剛接觸Docker,所以在學習的過程中出現(xiàn)了好多的問題,百度上不好找,谷歌的話,樓主不會翻墻。后來通過各方求助和細心研究解決了一些遇到的問題,現(xiàn)在將遇到的問題和解決方法分享給大家,有需要的朋友們可以參考借鑒。2016-11-11

