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

Docker之Dockerfile構建鏡像

這篇具有很好參考價值的文章主要介紹了Docker之Dockerfile構建鏡像。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

??????歡迎來到我的CSDN主頁!????

??我是君易--鑨,一個在CSDN分享筆記的博主。????

??推薦給大家我的博客專欄《Docker之Dockerfile構建鏡像》。????

??如果感覺還不錯的話請給我關注加三連吧!????

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

前言

? ? ? ? 在上一期有關Docker的博客分享中我們學習到了Docker的一些數(shù)據(jù)卷和數(shù)據(jù)卷容器的一些基本的使用以及概念性的學習。本次的博客給大家?guī)淼氖怯嘘PDocker中的Dockerfile的學習。

一、什么是Dockerfile構建鏡像

1. 基本概述

????????Dockerfile是一個文本文件,其中包含一組用于自動化Docker鏡像構建的指令和配置。通過編寫Dockerfile,用戶可以定義鏡像的內(nèi)容、環(huán)境和運行時配置。構建過程基于這個Dockerfile文件,并通過Docker引擎執(zhí)行一系列指令來生成最終的Docker鏡像。

2.??Dockerfile指令和它們的作用:

2.1 From :指定基礎鏡像,構建新鏡像的起點。

FROM ubuntu:20.04

2.2?MAINTAINER: 標識鏡像的維護者。

MAINTAINER Your Name <your.email@example.com>

2.3?RUN: 在鏡像中執(zhí)行命令,用于安裝軟件包、更新系統(tǒng)等。

RUN apt-get update && apt-get install -y nginx

2.4?COPY/ADD: 將文件或目錄從構建上下文復制到鏡像中。

COPY ./app /app

2.5?WORKDIR: 設置工作目錄,后續(xù)的命令將在該目錄下執(zhí)行

WORKDIR /app

2.6?EXPOSE: 聲明容器運行時要監(jiān)聽的端口。

EXPOSE 80

2.7?CMD: 提供容器默認的執(zhí)行命令,可以被docker run時的參數(shù)覆蓋。

CMD ["nginx", "-g", "daemon off;"]

2.8?ENTRYPOINT: 設置容器啟動時執(zhí)行的命令,不可被docker run時的參數(shù)覆蓋。

ENTRYPOINT: 設置容器啟動時執(zhí)行的命令,不可被docker run時的參數(shù)覆蓋。

簡單示例

????????通過編寫Dockerfile,用戶可以定義從基礎鏡像到最終鏡像的整個構建過程,確保應用程序在Docker容器中正確運行。構建鏡像的命令通常是使用docker build,并在構建上下文中包含Dockerfile文件。例如:

docker build -t my_custom_image:tag .

?????????上述命令將使用當前目錄的Dockerfile構建一個名為my_custom_image的Docker鏡像,并指定了一個標簽tag。

3.??基本結構

????????Dockerfile 由一行行命令語句組成,并且支持以 # 開頭的注釋行。
????????一般的,Dockerfile 分為四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執(zhí)行指令。
Dockerfile的基本結構
部分 命令
基礎鏡像信息
FROM
維護者信息
MAINTAINER
鏡像操作指令
RUN 、 ENV COPY 、 ADD EXPOSE 、 WORKDIR 、 ONBUILD 、 USER 、
VOLUME
容器啟動時執(zhí)行指
CMD 、 ENTRYPOINT

圖解說明?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

二、示例使用及說明、

1. 構建鏡像文件

? ? ? ? 接下來為大家講解如何去根據(jù)需求構建一個自定義的鏡像文件供自己使用,構建鏡像時必須得有一個基礎的鏡像。我們這里使用的是Centtos(原本沒有攜帶東西),我們輸入指令

vim Dockerfile文件進行新建及編輯

vim Dockerfile

? ? ? ? ?輸入的內(nèi)容如下

FROM centos

MAINTAINER 2081718134@qq.com

WORKDIR /test

COPY spring.jar /test
#1.指定基礎鏡像,并且必須是第一條指令
FROM centos:latest
#2.指明該鏡像的作者和其電子郵件
MAINTAINER xx "xx@qq.com"
#3.在構建鏡像時,指定鏡像的工作目錄,之后的命令都是基于此工作目錄,如果不存在,則會創(chuàng)建目錄
WORKDIR /usr/local/java
#4.一個復制命令,把jdk安裝文件復制到鏡像中,注意:jdk*.tar.gz使用的是相對路徑
COPY spring.jar /test

? ? ? ? 輸入完成之后按esc按鍵,輸入;wq保存并且退出。接下來是我們進行構建鏡像。

輸入指令:docker build -t spring:v1 .

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

?Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們?nèi)缓笪覀冞M行查看我們剛才構建的鏡像文件。

輸入指令:docker images

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們進入我們的鏡像文件的容器中

輸入命令:docker run -it spring:v1

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我們可以輸入指令:ls查看我們文件下所存在的文件?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們運行這個jar包文件,輸入指令:java -jar spring.jar

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 無法運行的原因是因為我們使用的數(shù)基礎鏡像centos沒有啟動jar包的jdk,因此啟動jar該需要我們下載所需的jdk文件。?

2.??鏡像運行

? ? ? ? 接下來我們需要去下載我們的jdk環(huán)境變量,我們輸入指令:vim /etc/profile 進行配置環(huán)境變量?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?配置jdk環(huán)境變量內(nèi)容

#java environment
export JAVA_HOME=/javaxl/jdk1.8.0_151(jdk解壓路徑)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

? ? ? ? ?這是我們之前在centos中安裝時的步驟,在Docker中不一樣。

ADD jdk-8u221-linux-x64.tar.gz /test

ENV JAVA_HOME=/test/jdk1.8.0_221

ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH=$JAVA_HOME/bin:$PATH

? ? ? ? ?我們在我們的鏡像配置文件中添加上述的內(nèi)容在后面,但首先我們先要導入我們的jdk的壓縮包和jre的壓縮包。

?Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我們對其鏡像文件Dockerfile進行編輯?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們將鏡像文件重新編譯一遍

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我們進入該鏡像文件中進行查看文件?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?接下來是檢查我們安裝的jdk是否生效

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?接下下我們可以測試運行spring.jar包

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們接下來進行運行項目,我們運行時不是使用run因為我們是等容器打開后再運行因此使用的cmd命令。

CMD ["java -jar spring.jar"] 

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我們在重新構建一個鏡像文件?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我們在運行這個文件?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們重新編輯一下我們的Dockerfile文件,重新構建一個鏡像文件并且運行

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

3. 鏡像優(yōu)化

? ? ? ? 在我們的開發(fā)過程中jdk是我們必不可少的,但是在我們的運行項目中所需的是jre,因此接下來的操作就是將jdk修改為jre進行一系列的優(yōu)化。下面我們首先修改Dockerfile文件內(nèi)容,然后構建鏡像文件

FROM centos

MAINTAINER 2081718134@qq.com

WORKDIR /test

COPY spring.jar /test

ADD jre-8u391-linux-x64.tar.gz /test

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

CMD java -jar spring.jar

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們接下來就是訪問項目,首先清除掉所有的容器,然后創(chuàng)建對應的容器進行運行使用,最后再網(wǎng)頁進行訪問。

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們接下來的操作時將我們的鏡像文件上傳到我們的倉庫之中,但是默認的倉庫是docker.io/library/spring的官網(wǎng)倉庫,需要我們?nèi)プ?。但是我們可以使用阿里的倉庫進行上傳,上傳快還方便。

網(wǎng)址:容器鏡像服務 (aliyun.com)

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們選擇個人版示例進行新建對其進行一系列的操作。我們進行一系列操作后的界面如下

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們使用前需要登陸我們的阿里賬號

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我我們直接執(zhí)行該命令,然后在輸入我們的之前設置的密碼即可。?

?Docker之Dockerfile構建鏡像,部署,docker,linux,運維Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我們對其創(chuàng)建一個命名空間?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

?Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們新建完命名空間之后我們還要去新建一個倉庫,用于我們上傳鏡像文件。

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 我們創(chuàng)建好倉庫之后,鏡像版本中沒有任何東西,需要我們進行手動的推送上去。?推送的操作網(wǎng)頁上有

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? 給我們要上傳的鏡像取一個別名。?

?Docker之Dockerfile構建鏡像,部署,docker,linux,運維

?Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我對其要上傳的鏡像修改為我們阿里的倉庫地址

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?上述圖片是修改上傳的網(wǎng)址路徑,我們在查看我們的鏡像。?

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們在將其這個進行進行推送到我們的倉庫中

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?我們可以在我們的倉庫中查看我們的鏡像

Docker之Dockerfile構建鏡像,部署,docker,linux,運維

? ? ? ? ?下載鏡像輸入指令

docker pull +鏡像名+版本即可


?????本期的博客分享到此結束????

????各位老鐵慢慢消化????

????下期博客博主會帶來新貨????

??三連加關注,閱讀不迷路?!??

Docker之Dockerfile構建鏡像,部署,docker,linux,運維文章來源地址http://www.zghlxwxcb.cn/news/detail-800737.html

到了這里,關于Docker之Dockerfile構建鏡像的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【docker】Dockerfile構建鏡像常用指令:

    一、常用命令: Dockerfile是一個文本文件,包含了一條條的指令,在基于指定的鏡像上,一條指令構建一層,最終構建出一個新的鏡像。 作用 備注 格式 FROM 指定基礎鏡像 指定基于哪個鏡像開始構建 FROM image:tag MAINTAINER 作者信息 標明這個dockerfile是誰寫的(已棄用) M

    2024年02月13日
    瀏覽(36)
  • Docker-Dockerfile構建鏡像

    Docker-Dockerfile構建鏡像

    Dockerfile 是一個文本格式的配置文件, 用戶可以使用 Dockerfile 來快速創(chuàng)建自定義的鏡像,另外,使用 Dockerfile 去構建鏡像好比使用 pom 去構建 maven 項目一樣,有異曲同工之妙 centos alpine 1. 空間大小差異, alpine 默認 5M 左右, centos 等都在 200M 左右。 2. 默認軟件包差異, alpin

    2024年01月17日
    瀏覽(31)
  • Docker 解析:使用 Dockerfile 自動構建鏡像

    簡介 Docker 容器是使用 基礎 鏡像創(chuàng)建的。一個鏡像可以是基本的,只包含操作系統(tǒng)的基本要素,也可以包含一個準備好啟動的復雜的預構建應用程序堆棧。 在使用 Docker 構建鏡像時,每個操作(例如執(zhí)行的命令,比如 apt-get install)都會形成一個新的層疊在之前的層之上。然

    2024年03月26日
    瀏覽(35)
  • Docker 項目如何使用 Dockerfile 構建鏡像?

    1.1、Docker 簡介 :講述 Docker 的起源、它是如何革新現(xiàn)代軟件開發(fā)的,以及它為開發(fā)者和運維團隊帶來的好處。重點強調(diào) Docker 的輕量級特性和它在提高應用部署、擴展和隔離方面的優(yōu)勢。 本文已收錄于,我的技術網(wǎng)站 ddkk.com,有大廠完整面經(jīng),工作技術,架構師成長之路,等

    2024年01月16日
    瀏覽(36)
  • 【云原生 · Docker】輕松學會dockerfile構建鏡像

    【云原生 · Docker】輕松學會dockerfile構建鏡像

    目錄 ??dockerfile是什么 ??鏡像的緩存特性 ??dockerfile命令 ??FROM ??RUN ??CMD ??LABEL ??EXPOSE ??ENV ??ADD ??COPY ??ENTRYPOINT ??VOLUME ??USER ??WORKDIR ??ARG ??ONBUILD ??STOPSIGNAL ??????博客主頁:大蝦好吃嗎的博客 ? ? ??專欄地址:云原生專欄 docker中并不建議用戶通過com

    2024年02月08日
    瀏覽(29)
  • Docker進階:容器數(shù)據(jù)卷與Dockerfile構建鏡像(發(fā)布)

    Docker進階:容器數(shù)據(jù)卷與Dockerfile構建鏡像(發(fā)布)

    ??The Begin??點點關注,收藏不迷路?? 1、完成數(shù)據(jù)持久化和共享數(shù)據(jù),docker容器中的數(shù)據(jù),同步到本地。 2、重要數(shù)據(jù)back_up 特點: 實時生效、數(shù)據(jù)卷可在容器之間共享和重用數(shù)據(jù)、數(shù)據(jù)卷中的更改不會包含在鏡像更新中、數(shù)據(jù)卷的生命周期會一直延續(xù)到?jīng)]有容器使用它為止

    2024年02月09日
    瀏覽(27)
  • 【Docker】如何編寫Dockerfile,深入理解 Dockerfile:構建精簡且高效的容器鏡像

    【Docker】如何編寫Dockerfile,深入理解 Dockerfile:構建精簡且高效的容器鏡像

    Docker 是一種輕量級的容器化技術,使得應用程序和它們的依賴可以被打包到一個容器中,方便在不同環(huán)境中運行。Dockerfile 是用于定義 Docker 鏡像的文本文件,其中包含了一系列的指令,這些指令描述了鏡像中應該包含哪些內(nèi)容和如何配置。 在開始編寫 Dockerfile 之前,確保你

    2024年01月24日
    瀏覽(30)
  • Docker基礎入門:容器數(shù)據(jù)卷與Dockerfile構建鏡像(發(fā)布)

    Docker基礎入門:容器數(shù)據(jù)卷與Dockerfile構建鏡像(發(fā)布)

    ??The Begin??點點關注,收藏不迷路?? 1、完成數(shù)據(jù)持久化和共享數(shù)據(jù),docker容器中的數(shù)據(jù),同步到本地。 2、重要數(shù)據(jù)back_up 特點: 實時生效、數(shù)據(jù)卷可在容器之間共享和重用數(shù)據(jù)、數(shù)據(jù)卷中的更改不會包含在鏡像更新中、數(shù)據(jù)卷的生命周期會一直延續(xù)到?jīng)]有容器使用它為止

    2024年02月10日
    瀏覽(21)
  • Docker技術入門| Part03:Dockerfile詳解(Dockerfile概念、Dockerfile 指令、使用Dockerfile構建鏡像)

    Docker鏡像原理 Docker鏡像是由特殊的文件系統(tǒng)疊加而成 最底端是bootfs,并使用宿主機的bootfs 第二層是root文件系統(tǒng)rootfs,稱為base image 然后再往上可以疊加其他的鏡像文件 統(tǒng)文件系統(tǒng)(UnionFile System)技術能夠將不同的層整合成一個文件系統(tǒng),為這些層提供了一個統(tǒng)的視角,這樣就隱

    2024年02月09日
    瀏覽(92)
  • 【云原生】Docker—Dockerfile寫法與用法以及dockerfile簡介與構建鏡像詳解【附加實戰(zhàn)】

    【云原生】Docker—Dockerfile寫法與用法以及dockerfile簡介與構建鏡像詳解【附加實戰(zhàn)】

    ??Dockerfile 是一個用來構建鏡像的文本文件,文本內(nèi)容包含了一條條構建鏡像所需的指令(Instruction)和操作命令;每一條指令構建一層鏡像,因此每一條指令的內(nèi)容,就是描述該層鏡像應當如何構建(也就是你要執(zhí)行的操作命令)。 ?dockerfile是純文本文件; ?dockerfile是用來

    2024年01月18日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包