欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker中的run/cmd/entrypoint的區(qū)別詳解

 更新時間:2021年08月03日 10:02:19   作者:morris131  
Dockerfile中run、cmd和entrypoint都能夠用于執(zhí)行命令,針對每個命令給他介紹詳細用途,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

Dockerfile中run、cmd和entrypoint都能夠用于執(zhí)行命令,下面是三者的主要用途:

  • run命令執(zhí)行命令并創(chuàng)建新的鏡像層,通常用于安裝軟件包
  • cmd命令設(shè)置容器啟動后默認執(zhí)行的命令及其參數(shù),但CMD設(shè)置的命令能夠被docker run命令后面的命令行參數(shù)替換
  • entrypoint配置容器啟動時的執(zhí)行命令,不會被忽略,一定會被執(zhí)行,即使運行 docker run時指定了其他命令。

Shell格式和Exec格式運行命令

我們可以用下面兩種格式指定run、cmd和entrypoint要運行的命令:

  • Shell格式: 。例如:yum install -y wget
  • Exec格式: [“executable”, “param1”, “param2”, …]。例如: [“yum”, “install”, “-y”, “wget”]

cmd和entrypoint推薦使用exec格式,因為指令的可讀性更強,更容易理解,而run則兩種格式都可以。

Exec格式的坑

dockerfile的內(nèi)容如下:

env name morris

entrypoint ["echo", "$name"]

這種寫法只會打印出$name,不會進行變量的替換,原因是它只是在執(zhí)行echo命令,并不是執(zhí)行shell。意思是說,我們不是在shell里執(zhí)行echo,只是單純的執(zhí)行echo,所以不會替換變量。

想要改成可執(zhí)行的shell,需要改寫成以下形式

env name morris

entrypoint ["/bin/bash", "-c", "echo $name"]

run命令

run指令通常用于安裝應(yīng)用和軟件包。run在當前鏡像的頂部執(zhí)行命令,并通過創(chuàng)建新的鏡像層。Dockerfile中常常包含多個run指令。下面是一個例子:

run yum update && yum install -y \  
 bzr \
 cvs \
 git \
 mercurial \
 subversion

yum update和yum install被放在一個run指令中執(zhí)行,這樣能夠保證每次安裝的是最新的包。如果yum install在單獨的run中執(zhí)行,則會使用yum update創(chuàng)建的鏡像層,而這一層可能是很久以前緩存的。

cmd命令

cmd指令允許用戶指定容器的默認執(zhí)行的命令。此命令會在容器啟動且docker run沒有指定其他命令時運行。下面是一個例子:

cmd echo "Hello world"

運行容器docker run -it [image]將輸出:

Hello world

但當后面加上一個命令,比如docker run -it [image] echo hi,cmd會被忽略掉,命令echo hi將被執(zhí)行:

hi

如果存在多個cmd命令,則只會執(zhí)行最后一個cmd命令。

entrypoint命令

entrypoint的exec格式用于設(shè)置容器啟動時要執(zhí)行的命令及其參數(shù),同時可通過cmd命令或者命令行參數(shù)提供額外的參數(shù)。entrypoint中的參數(shù)始終會被使用,這是與cmd命令不同的一點。下面是一個例子:

entrypoint ["echo", "Hello"]

當容器通過docker run -it [image]啟動時,輸出為:

Hello

而如果通過docker run -it [image] morris啟動,則輸出為:

Hello morris

再來看一個例子,Dockerfile為:

entrypoint ["echo", "Hello"]
cmd ["world"]

當容器通過docker run -it [image]啟動時,輸出為:

Hello world

而如果通過docker run -it [image] morris啟動時,輸出為:

Hello morris

entrypoint中的參數(shù)始終會被使用,而cmd的額外參數(shù)可以在容器啟動時動態(tài)替換掉。

同樣的,如果存在多個entrypoint命令,則只會執(zhí)行最后一個entrypoint命令。

總結(jié)

  • 使用run指令安裝應(yīng)用和軟件包,構(gòu)建鏡像。
  • 如果Docker鏡像的用途是運行應(yīng)用程序或服務(wù),比如運行一個MySQL,應(yīng)該優(yōu)先使用Exec格式的entrypoint指令。cmd可為entrypoint提供額外的默認參數(shù),同時可利用docker run命令行替換默認參數(shù)。
  • 如果想為容器設(shè)置默認的啟動命令,可使用cmd指令。用戶可在docker run命令行中替換此默認命令。

到此這篇關(guān)于docker中的run/cmd/entrypoint的區(qū)別詳解的文章就介紹到這了,更多相關(guān)docker run/cmd/entrypoint內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker鏡像完全卸載的操作步驟

    docker鏡像完全卸載的操作步驟

    這篇文章主要介紹了docker鏡像完全卸載的操作步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker下載鏡像太慢的解決方案

    docker下載鏡像太慢的解決方案

    這篇文章主要介紹了docker下載鏡像太慢的解決方案,具體操作步驟很詳細也很簡單,有遇到相同問題但是不知道如何解決的同學可以嘗試下
    2021-03-03
  • docker 已經(jīng)運行的容器重命名

    docker 已經(jīng)運行的容器重命名

    有時我們將容器名字起的不太好,想改一下,本文主要介紹了docker 已經(jīng)運行的容器重命名,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • docker建立私有倉庫的過程

    docker建立私有倉庫的過程

    這篇文章主要介紹了docker私有倉庫的建立,在這需要注意從私有倉庫下載先移出原鏡像,具體操作過程跟隨小編一起看看吧
    2022-01-01
  • Docker Machine創(chuàng)建Azure虛擬主機

    Docker Machine創(chuàng)建Azure虛擬主機

    這篇文章主要為大家詳細介紹了Docker Machine創(chuàng)建Azure虛擬主機的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 如何通過vs2017的Dockerfile來生成鏡像

    如何通過vs2017的Dockerfile來生成鏡像

    這篇文章主要為大家詳細介紹了如何通過vs2017的Dockerfile來生成鏡像,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Docker以掛載方式安裝RocketMQ的實現(xiàn)方式

    Docker以掛載方式安裝RocketMQ的實現(xiàn)方式

    Docker中安裝和使用RocketMQ有多種方式,本文主要介紹了Docker以掛載方式安裝RocketMQ的實現(xiàn)方式,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 清理docker占用磁盤過大問題終極方案(親測有效!)

    清理docker占用磁盤過大問題終極方案(親測有效!)

    Docker很占用空間每當我們運行容器、拉取鏡像、部署應(yīng)用、構(gòu)建自己的鏡像時我們的磁盤空間會被大量占用,這篇文章主要給大家介紹了關(guān)于清理docker占用磁盤過大問題終極方案,需要的朋友可以參考下
    2024-04-04
  • docker在Linux環(huán)境下的安裝教程

    docker在Linux環(huán)境下的安裝教程

    這篇文章主要介紹了docker在Linux環(huán)境下的安裝教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • docker容器配置啟動參數(shù)

    docker容器配置啟動參數(shù)

    通過添加參數(shù),我們可以在啟動 Docker 容器時靈活地配置容器的行為,本文介紹了通過命令行和 Dockerfile 兩種方式添加參數(shù)的方法,并給出了常用參數(shù)的示例,希望本文能幫助您理解如何在 Docker 啟動時添加參數(shù),并正確地配置和管理 Docker容器
    2023-10-10

最新評論