Dockerfile常用使用方法

2021-12-28 k8s優秀車間主任

點擊關注公眾號,k8s優秀車間主任及時送達



Dockerfile詳解

Dockerfile是一個配置文件,可以自動執行創建Docker鏡像的步驟。它類似於Makefile。Docker從Dockerfile中讀取指令,以自動執行原本手動執行的步驟來創建映像。要構建鏡像,請創建一個名為Dockerfile的文件。

Dockerfile描述了組裝映像所需的步驟。創建Dockerfile後,調用docker build命令,使用包含Dockerfile的目錄的路徑作為參數。

docker build 詳解

docker build 是用來構建鏡像文件的主要使用參數如下:

•-t:鏡像的名字及標籤,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標籤。

•-f:--file=PATH/Dockerfile 要使用的Dockerfile的路徑。如果該路徑是相對路徑,並且您是從本地目錄構建的,則該路徑必須是相對於該目錄的。目錄,如果要從指向tarball或Git存儲庫的遠程URL進行構建,則路徑必須相對於遠程上下文的根。在所有情況下,文件都必須在構建上下文中。默認值Dockerfile。

案例:

docker build -t nginx-test .

### 參數介紹

FROM

從 Docker 映像創建一個層。

 

  FROM image   FROM image:tag   FROM image@digest

COPY

複製指令,從 Docker 客戶端的當前目錄中添加文件。

RUN

使用 生成應用程式。

CMD

指定要在容器中運行的命令。

•CMD 在docker run 時運行。

•RUN 是在 docker build。

 CMD

 注意:如果 Dockerfile 中如果存在多個 CMD 指令,僅最後一個生效。

ADD

ADD 指令和 COPY 的使用格類似(同樣需求下,官方推薦使用 COPY)。

ENV

設置環境變量,定義了環境變量,那麼在後續的指令中,就可以使用這個環境變量。

VOLUME

VOLUME指令創建具有指定名稱和標記的掛載點,
它作為包含來自本機主機或其他主機的外部裝載卷貨櫃。

作用:

•避免重要的數據,因容器重啟而丟失,這是非常致命的。

•避免容器不斷變大。

VOLUME ["<路徑1>", "<路徑2>"...]VOLUME <路徑>

EXPOSE

僅僅只是聲明埠。

作用:

•幫助鏡像使用者理解這個鏡像服務的守護埠,以方便配置映射。

•在運行時使用隨機埠映射時,也就是 docker run -P 時,會自動隨機映射 EXPOSE 的埠。

 LABEL

標籤指令將元數據添加到圖像。標籤是一種。
鍵-值對。要指定不帶值的標籤,只需使用空。
字符串。要在標籤值中包含空格,請使用引號和。
反斜槓,就像在命令行解析中一樣。

LABEL=[=...]LABEL[]LABEL[]

WORKDIR

WORKDIR指令為後面的run、cmd、entry point、copy和add Dockerfile命令設置工作目錄。在一個Dockerfile中可以多次使用。相對路徑是相對於上一條WORKDIR指令的路徑定義的。

  WORKDIR /a  WORKDIR b  WORKDIR c  WORKDIR <工作目錄路徑>

實戰案例操作

構建簡http

FROM centosRUN echo "Hello World!"COPY index.html /var/www/html/EXPOSE 80

docker built -t httpd-test .

運行次容器

docker run -d  --name http-1 -p 80:80 httpd-test

構建nginx

FROM nginxRUN echo "這是一個本地構建的nginx鏡像" > /usr/share/nginx/html/index.htmlEXPOSE 80

docker build -t nginx-test .

測試:

docker run  -d --name nginx-1 -p 80:80 nginx-test 

curl http://localhost

相關焦點

  • Dockerfile編寫指北
    和docker run等簡單命令即可,但是為了滿足更多需求,一些個人應用的docker鏡像,就需要用dockerfile來創建。Dockerfile實戰Spring Boot項目創建一個最基礎的Spring boot項目,Dockerfile為我編寫的鏡像創建Dockerfile文件,apache-maven壓縮包為準備的maven包,通過ADD命令添加到鏡像內,sell為一個簡單的Spring boot代碼,埠8080。
  • Docker Stack使用及compose file配置
    docker stack deploy -c docker-compose.yml nginxCompose fileDocker Stack的使用與Docker Compose的使用類似,都需要一個compose文件,compose file version 3中增加了deploy的命令集,所以在
  • Dockerfile企業實戰教程
    什麼是dockerfile?Dockerfile是一個包含用於組合映像的命令的文本文檔。可以使用在命令行中調用任何命令。
  • 如何使用Dockerfile創建鏡像
    ENV MY_NAME="John Doe" ENV MY_DOG=Rex\ The\ Dog ENV MY_CAT=fluffy使用ENV設置的環境變量會保留下來,當容器運行時可以使用docker inspect查看值,並且可以使用docker run --env = 更改環境變量的值。
  • Dockerfile使用詳解以及CMD、ENTRYPOINT的區別
    由於命令行的強大能力,RUN指令在定製鏡像時是最常用的指令之一。在Docker官方的Dockerfile最佳實踐文檔中要求,儘可能的使用COPY,因此COPY的語義很明確,就是複製文件而已,沒有必要使用ADD高級的命令ENV命令設置環境變量,定義了環境變量,那麼在後續的指令中,就可以使用這個環境變量:ENV = =這個指令很簡單,就是設置環境變量而已,無論是後面的其它指令,
  • 【2021/12/13】dockerfile使用
    划水摸魚的一天,接著之前的devops打鏡像過程熟悉了下,收穫還是不小的之前devops裡面需要打鏡像,但是對於dockerfile
  • Dockerfile詳解
    Dockerfile是用來構建Docker鏡像的文本文件,也可以說是命令參數腳本。docker build命令用於從Dockerfile構建鏡像。可以在docker build命令中使用-f標誌指向文件系統中任何位置的Dockerfile。
  • Docker 快速入門之 Dockerfile
    答案當然是可以的,在 Docker 中我們可以從名為 Dockerfile 的文件中讀取指令並且自動構建鏡像。在本文中,將介紹 Dockerfile 的基本語法以及基本知識。1、Dockerfile 是什麼?Dockerfile 其實是一份文本文檔,裡面包含了用戶可以用來操作鏡像的一些指令。
  • Dockerfile ENV 使用指南
    docs.docker.com當使用 Dockerfile 進行構建鏡像時,有時會需要設置容器內的環境變量
  • Dockerfile文件全面詳解
    可以使用 --no-cache 標誌使指令緩存無效Dockerfile 的指令每執行一次都會在 Docker 上新建一層。所以過多無意義的層,會造成鏡像膨脹過大,可以使用 && 符號連接命令,這樣執行後,只會創建 1 層鏡像運行程序,在 docker run 時運行,但是和 run 命令不同,RUN 是在 docker build 時運行。
  • Docker命令大全及Dockerfile詳解(附示例)
    菜鳥教程上總結了Docker在各個平臺和系統上的安裝,大家可以參考。這裡總結了下Docker在阿里雲Ubuntu系統上的安裝過程。步驟看似很多且複雜,但大家只需要一步一步copy和paste命令就行了,整個安裝過程很流暢。
  • Dockerfile,就是那麼簡單
    docker image build命令,構建鏡像(4)構建完成的鏡像被使用,完成容器化的過程因此,編寫優秀的Dockerfile文件對構建鏡像必不可少。DockerFile是由一系列命令和參數,用以構建docker鏡像的文件,docker能夠讀取Dockerfile指定的指令自動構建,從上到下的每一個指令都會創建一個鏡像層,即鏡像都是多層疊加而成,因此,層越多,效率越低,創建鏡像,層越少越好。因此能在一個指令完成的動作儘量通過一個指令定義。
  • 構建完美的 Python Dockerfile
    這篇文章將分享「完美」的 Python Dockerfile。當然,世上沒有完美的東西,我很樂意接受反饋以改進您可能發現的問題。跳到最後找到一個比在 docker hub 中使用默認文件快 20% 的 Dockerfile。
  • Docker學習之Dockerfile詳解
    上一篇學習了docker的基礎,知道docker有三大概念,鏡像,容器和倉庫。使用第三方鏡像不是學習docker的最終目的,最想要的還是要自己構建鏡像。    將自己的程序、文件、環境等構建成自己想要的應用鏡像、方便後續部署、啟動、維護。
  • 解析 Dockerfile
    "<目標路徑>"]<源路徑> 可以是多個、以及使用通配符,通配符規則滿足Go的filepath.Match 規則,如:COPY *.txt /workdir/    COPY hom?.txt /mydir/<目標路徑>使用 COPY 指令,源文件的各種元數據都會保留。比如讀、寫、執行權限、文件變更時間等。
  • Dockerfile 命令介紹及實例
    其目標是幫助開發和運維人員更容易地跨系統跨主機交付應用程式和他們的依賴。Docker通過Docker容器,一個安全的,基於輕量級容器的環境,來實現這個目標。這些容器由鏡像創建,而鏡像可以通過命令行手工創建或者通過Dockerfile自動創建。DockerfileDockerfile是由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像並最終創建一個新的鏡像。
  • 基於Dockerfile構建容器鏡像的最佳實踐
    答案是肯定的,可以選用scratch,具體就不展開了,可以參考:baseimages[2],使用scratch鏡像的例子pausebusybox:對比scratch,多了常用的linux工具等3.3.2.2 多階段構建多階段構建非常適用於編譯性語言,簡單來說就是允許一個Dockerfile中出現多條FROM指令,只有最後一條FROM指令中指定的基礎鏡像作為本次構建鏡像的基礎鏡像
  • 老司機實戰Windows Server Docker:5 Windows Server Dockerfile葵花寶典
    ENTRYPOINT和CMD都可以用來指定docker容器實例啟動時執行的啟動程序,這兩個命令可以分別使用,但是一般推薦組合使用。以上面的示例為例,這裡組合使用了ENTRYPOINT和CMD,運行時的效果是什麼呢?
  • docker反向查看啟動命令和dockerfile
    最近發現兩個非常好用的工具,一個是 runlike,一個是 whaler聽起
  • Docker精髓講解(容器數據卷、Dockerfile、Docker網絡)
    測試1、你可以先將容器停止2、修改虛擬機上的掛載目錄3、使用docker ps -a查看剛停止的容器4、啟動容器docker start  容器id5.是的,他們使用的一個,就是docker0。任何一個容器啟動默認都是docker0網絡。docker默認會給容器分配一個可用ip。小結Docker使用Linux橋接,在宿主機虛擬一個Docker容器網橋(docker0),Docker啟動一個容器時會根據Docker網橋的網段分配給容器一個IP位址,稱為Container-IP,同時Docker網橋是每個容器的默認網關。