導航:首頁 > 程序命令 > dockerfile中的命令

dockerfile中的命令

發布時間:2023-03-31 04:59:29

Ⅰ dockerfile中指定鏡像源的參數是

from。
這一鏡像參數是dockerfile中的第一指令,這也相當於一個臨纖茄時容器,當其中指定參數改變時,復制文件就會乎豎仔發生一定的改變。
Dockerfile是一個鏡像構建命令集合的文本文件,可以使用在命令行歲汪中調用任何命令。

Ⅱ Dockerfile里指定執行命令用ENTRYPOING和用CMD有何不同

運行時機不太一樣。RUN是在Build時運行的,先於CMD和ENTRYPOINT。Build完成了,RUN也運行完成後,再運行CMD或者ENTRYPOINT。ENTRYPOINT和CMD的不同點在於執行dockerrun時參數傳遞方式,CMD指定的命令可以被dockerrun傳遞的命令覆蓋,例如,如果用CMD指定:CMD["echo"]然後運行dockerrunCONTAINER_NAMEechofoo那麼CMD里唯襪租指定的echo會被新指定的echo覆蓋,所以最終相當於運行echofoo,所以最終列印出的結果就是:foo而ENTRYPOINT會把容器名後面的所有內容都當成參數傳遞給其指定的命令(不會對命令覆蓋),比如:ENTRYPOINT["echo"]然後運行dockerrunCONTAINER_NAMEechofoo則CONTAINER_NAME後面的echofoo都作為參數傳遞給ENTRYPOING里指定的echo命令了,所以相當於執行了echo"echofoo"最終列印出的結果就是:echofoo另外,在Dockerfile中,ENTRYPOINT指定的參數比運行dockerrun時指定的參數更靠前,比如:ENTRYPOINT["echo","foo"]執行dockerrunCONTAINER_NAMEbar相當於執行了:echofoobar列印出的結果就是:foobarDockerfile中只能指定一個ENTRYPOINT,如果指定了很多,只有最後指兆一個有效。執行dockerrun命令時,也可以添加-entrypoint參數,會把指定的參數繼續傳遞給ENTRYPOINT,好圓例如:ENTRYPOINT["echo","foo"]然後執行:dockerrunCONTAINER_NAMEbar#注意沒有echo那麼,就相當於執行了echofoobar,最終結果就是foobar

Ⅲ 詳解Docker——你需要知道的Docker進階知識二

Docker鏡像

鏡像倉庫(Repository)用於存放鏡像,每個倉庫都有唯一的地址,和網址類似。鏡像倉庫託管在某個 Registry,Registry 和GitHub類似。Docker 提供了一個官方的 Registry,官方 Registry 里的鏡像倉庫地址可以省去前面的域名前綴,其它 Registry 里的鏡像倉庫地址必須要指定域名前綴,以保證唯一性。

鏡像倉庫地址後面可以跟一個 TAG。比如一個鏡像名稱 ubuntu:14.04 ,冒號前面的 ubuntu 是鏡像倉庫地址(由於是官方 Registry 里的,可以省略域名前綴),後面的 14.04 是 TAG,TAG 通常設置為鏡像的版本號。

Docker 鏡像是分層存儲的,每一個鏡像都由多層組成。鏡像之間會森察世共享一些相同的層,從而減小鏡像佔用的存儲空間。

也可以查看指定的鏡像:

查看鏡像的詳細信息

比較常用的配置參數為 -a ,代表下載倉庫中所有 TAG 的鏡像,默認只下載 latest TAG 的鏡像。

如果要下載 ubuntu:14.04 鏡像沒沒,可使用如下命令:

對於我們 pull 的新鏡像 ubuntu:14.04 來說,如果我們需要對其進行更新,可以創建一個容器,在容器中進行修改,然後將修改提交到一個新的鏡像中。

提交修改使用如下命令:

該命令從一個修改過的容器創建一個新的鏡像。例如,我們運行一個容器,然後在其中創建一個文件,最後使用 commit 命令:

通過上述操作我們創建了一個新的鏡像,但是本方法不推薦在生產環境使用,因為這種方式的可維護性很差。推薦的創建鏡像的方法是使用 Dockerfile ,修改鏡像可通過修改 Dockerfile ,然後使用新的 Dockerfile 來構建新的鏡像。

docker 可以從一個 Dockerfile 文件中讀取指令來構建鏡像。 Dockerfile 是一個包含用戶構建鏡像所需命令的文本文件。在 創建好該文件後,我們此肢可以使用如下命令來構建鏡像:

對於一個 Dockerfile 文件內容來說,基本語法格式如下所示:

使用 # 號作為注釋,指令( INSTRUCTION )不區分大小寫,但是為了可讀性,一般將其大寫。 Dockerfile 中的指令一般包含下面幾個部分:

下面是一個最基本的 Dockerfile :

通過閱讀上述內容中我們熟悉的一些 linux 指令,可以很容易的知道該 Dockerfile 將創建一個 apache 鏡像。

其中 FROM 指定基礎鏡像。 RUN 命令默認使用 /bin/sh ,並使用 root 許可權執行。 CMD 命令也是默認在 /bin/sh 中執行,但是只能有一條 CMD 指令,如果有多條則只有最後一條會被執行。

下面我們創建一個空目錄,在其中編輯 Dockerfile 文件,然後基於此文件構建一個新的鏡像:

在構建完成後,我們可以使用該鏡像啟動一個容器來運行 apache 服務,運行如下命令:

此時,容器啟動成功後,並且配置了埠映射,我們就可以通過本機的 8000 埠訪問容器 hellodocker3 中的 apache 服務了。我們打開瀏覽器,輸入 localhost:8000

刪除 ubuntu:latest 鏡像可以使用如下命令:

刪除所有的鏡像

Ⅳ Docker常用命令大全

基礎操作:

1  docker images  查看鏡像信息列表 鏡像是靜態的

2  docker ps -a  查看運行中的所有容器

3  docker pull  [images]:[version] 從dockerhub拉取指定鏡像

4  docker run -p 8000:80 -tdi --privileged [imageID] [command]   後台啟動docker,並指定宿主機埠和docker映射埠。

  -i: 以交互模式運行容器,通常與 -t 同時使用;

  -d: 後台運行容器,並返回容器ID;

-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

--privileged  容器將擁有訪問主機所有設備的許可權

通常情況下 [command] 填下  /bin/bash  即可。

特殊情況下,如需要在centos鏡像中使用 systemctl  . 則應添加 --privileged  並設置[command ]為  init 。

5 當鏡像通過run 啟動後,便會載入到一個動態的container(容器)中運行,此時若需要進入終端交互模式:

sudo docker exec -it [containerID] /bin/bash

交互模式中,使用  ctrl+p+q退出交互 保持運行,使用 exit命令退出並停止容器。

6 在容器非交互模式下,通過docker  start/stop 命令來啟動/停止已部署的容器服務。

7  docker rm [containerID]  刪除容器

8  docker rmi [imageID]  刪除鏡像

9 docker cp [YourHostFilePath] [containerID]:[DockerPath]  將宿主機內的指定文件傳輸至容器內部的指定地址。

鏡像製作:

1   docker commit [containerID] [ImageName]:[Version]  將修改後的容器重新打包成鏡像

2  docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1  將容器a404c6c174a2 保存為新的鏡像,並添加提交人信息和說明信息。

-a  :提交的鏡像作者;

  -c  :使用Dockerfile指令來創建鏡像;

  -m  :提交時的說明文字;

  -p  :在commit時,將容器暫停。

3  docker push [ImageID] [repertory_address] 提交鏡像到雲倉庫

(暫時先記錄這些,後續再更新)

Ⅳ dockerfile指令跟linux命令通用嗎

通用。dockerfile指令跟linux命令通用,Docker程序將這些Dockerfile指令翻譯成悉悉真正的Linux命令,Dockerfile有自己書寫前慶格式和支持的命令,Docker程序解決這些命令間的依賴慧陸握關系。

Ⅵ 詳解Docker——你需要知道的Docker進階知識五

Dockerfile 是一個文本文件,其中包含了構建 Docker 鏡像需要執行的命令序列。使用 docker build 命令從 Dockerfile 中讀取指令來構建鏡像。

構建鏡像時,該過程的第一件事是將 Dockerfile 文件所在目錄下的所有內容發送給 Docker 守護進程。所以大多數情況下,最好創建一個新的目錄,在其中保存 Dockerfile ,以及構建鏡像所需的其它文件。Dockerfile 文件所在目錄也被稱為構建上下文(context)。

使用 FROM 指令指定一個基礎鏡像,後續指令將在此鏡像基礎上運行:

在 Dockerfile 中可以指定一個用戶,後續的 RUN , CMD 以及 ENTRYPOINT 指令都會使用該用戶身份去執行,該用戶必須已存在。

除了指定用戶之外,還可以使用 WORKDIR 指定當前工作目錄(CWD), RUN , CMD , COPY , ADD 指令將在指定的工作目錄中執行。

RUN 指令用於執行命令,該指令有兩種形式:

例如我們執行更新命令:

CMD 的使用方式跟 RUN 類似,不過在一個 Dockerfile 文件中只能有一個 CMD 指令,如果有多個,則只有最後一個會生效。該指令指定了啟動容器時要執行的命令,例如:

可以在 docker run 時指定命令來覆蓋默認的 CMD 命令,比如 docker run image echo"hello shiyanlou" 。

CMD 指令還有一種特殊用法。在 Dockerfile 中,如果使用 ENTRYPOINT 指令指定了入口命令,則 CMD 指令的內容會作為 ENTRYPOINT 指令的參數:

ENTRYPOINT 指令會覆蓋 CMD 指令作為容器運行時的默認指令,並且該指令不會被 docker run 時指定的指令覆蓋,如下示例:

上述文件構建出來的鏡像,使用 docker run image 等同於 docker run image ls-a-l 。使用 docker run image-i-s 等同於 docker run image ls-a-i-s 。即 CMD 指令的值會被當作 ENTRYPOINT 指令的參數附加到 ENTRYPOINT 指令的後面,只有 CMD 指令可以被覆蓋。

COPY 和 ADD 都用於將構建上下文中的文件,目錄等復制到鏡像中。使用方式如下:

`` 可以指定多個,但是其路徑不能超出構建上下文范圍,即必須在 Dockerfile 同級或子目錄中。

不需要預先存在,不存在時會自動創建,如果使用相對路徑,則 為相對於工作目錄的路徑。塌陪

COPY 和 ADD 的不同之處在於,ADD 可伏衫或以添加遠程文件,並且 `` 可以是 gzip 或 tar 等格式的壓縮文件,添加時會自動進行解壓

ENV 指令用於設置環境變數:

VOLUME 指令指定要創建的掛載路徑,在容器運行時,將為每個掛載路徑創建一個匿名卷並掛載上去:

上述指令將會在容器運行時,創建兩個匿名卷,並分別掛載到容器中的 /data1 和 /data2 路徑。

學習了上面這些常見的 Dockerfile 指令之後,可以使用這些指令來構建一個鏡像。如下所示,構建一個提供 ssh 服務的鏡像:

構建鏡像

查看鏡像

啟動容器

查看已經啟動的容器

測試遠程登錄

Compose 是運行由多個容器組成的 Docker 應用的工具,使用 Compose 可以一次啟動一組有關聯的服務,每個服務由來自同一鏡像的單個或多個容器組成。

在復雜應用中,應用一般由多個服務(service)組成,例如一個網站後台通常包含 Web 服務、資料庫服務、緩存缺伍服務、消息隊列服務等。

使用 Compose 的步驟如下:

目前有三種版本的 Compose 文件格式:

下載 docker-compose-Linux-x86_64

下載成功後,為了方便使用,可以將其添加到 PATH 路徑下

執行完成後,就能夠在終端下直接使用 docker-compose 命令了:

接下來我們將創建一個 Web 應用,該應用包含兩個容器:

項目目錄結構如下:

首先編輯 app/web/web.py 文件,寫入下面的內容:

上述代碼創建了一個簡單的 Web 應用。該應用會連接 redis 服務,在訪問 / 頁面時,自動將變數 number 加 1。

編輯 app/web/requirements.txt 文件,輸入如下內容:

requirements.txt 文件存放了 Web 應用依賴的第三方庫包的名稱和版本信息。

編輯 app/web/Dockerfile 文件,添加如下內容

上述 Dockerfile 定義了 Web 應用鏡像,該鏡像基於 python:2.7 基礎鏡像,在其基礎上安裝了應用依賴的庫包,並通過 CMD 指令指定了應用的啟動命令。

編輯 app/docker-compose.yml 文件:

該 docker-compose.yml 文件定義了兩個服務,分別為 web 和 redis 服務,並且配置了 web 服務的埠映射和掛載目錄。 depends_on 定義了依賴關系,被依賴的服會先啟動。

進入 app 目錄,執行 docker-compose up 命令來啟動應用:

啟動成功後,就可以打開網址 127.0.0.1:8001 來訪問 Web 應用了。

另外一些命令:

Ⅶ 通過查看幫助文檔查看dockerbuild命令作用

通過查看幫助啟知升文檔查看dockerbuild命令作用是build命令用於使用Dockerfile創建鏡像悄老。dockerbuild命令用於從Dockerfile構建鏡像。可以在dockerbuild命令中使用-f命令也就是指定要構建的腳本,通過-t輸猛毀出鏡像名稱還可以跟:加上版本。

Ⅷ Dockerfile里指定執行命令用ENTRYPOING和用CMD有何不同

你好,
運行時機不太一樣。RUN是在Build時運行的,先於CMD和ENTRYPOINT。Build完成了,RUN也運行完成後,再運行CMD或者ENTRYPOINT。ENTRYPOINT和CMD的不同點在於執行dockerrun時參數傳遞方式,CMD指定的命令可以被dockerrun傳遞的命令覆蓋,例如,如果用CMD指定:CMD["echo"]然後運行dockerrunCONTAINER_NAMEechofoo那麼CMD里指定的echo會被新指定的echo覆蓋,所以最終相當於運行echofoo,所以最終列印出的結果就是:foo而ENTRYPOINT會把容器名後面的所有內容都當成參數傳遞給其指定的命令(不會對命令覆蓋),比如:ENTRYPOINT["echo"]然後運行dockerrunCONTAINER_NAMEechofoo則CONTAINER_NAME後面的echofoo都作為參數傳遞給ENTRYPOING里指定的echo命令了,所以相當於執行了echo"echofoo"最終列印圓並出的結果就是:echofoo另外,在Dockerfile中,ENTRYPOINT指定的參數比運行dockerrun時指定的參數更靠前,比如:ENTRYPOINT["echo","foo"]執行dockerrunCONTAINER_NAMEbar相當於執行了:echofoobar列印出的結果就是:foobarDockerfile中只能指定一個ENTRYPOINT,如果指定了很多,只有最後一個有效。執行dockerrun命令時,也可以睜兆添加-entrypoint參數,會把指定的參數繼續傳遞給ENTRYPOINT,例如:ENTRYPOINT["echo","foo"]然後執行:dockerrunCONTAINER_NAMEbar#注意沒有echo那麼,就相當於執行悉腔租了echofoobar,最終結果就是foobar

Ⅸ dockerfile指令跟linux命令通用,可以在linu

你好,你是問dockerfile指令跟linux命令通用嗎?dockerfile指令跟linux命令通用搭磨。每條命令對應linux下面的一條命令,運尺docker程序將這些dockerfile指令在翻譯成真正的linux命令,dockerfile中每條指定對應linux中旁枝高的一條命令,docker程序將讀取dockerfile中的指令生成指定鏡像。所以dockerfile指令跟linux命令通用。

Ⅹ Docker:容器管理(啟動參數,查看容器和日誌,進入和修改容器)

摘要: Docker

容器是一個精簡版的操作系統,一般一個容器只運行一個應用,容器通過鏡像創建,使用 docker run 命令創建,容器起到了 隔離 作用,容器和容器之間獨享空間和網路等

容器的基本操作包括創建(啟動),停止,重啟,查看,檢查等,容器通過鏡像創建,使用 docker run 命令創建,需要指定run參數,鏡像名,容器執行命令,語句格式如下

在實際使用中啟動一個鏡像,例如

-e 設置環境變數,格式是 -e k1=v1 -e k2=v2 ,使得在docker鏡像中的程序能夠直接訪問到環境變數,同時可以作為配置參數放在docker run啟動鏡像的時候設置,而不是寫死在dockerfile在build的過程中,-e和dockerfile中的 ENV 變數作用相同,當變數重名時-e替換ENV,下面測試一些做帶-e參數,在Dockerfile指定環境變數

直接構建成容器

開啟一個終端啟動容器內部,打告御印指定的環境變數a

此時在run指令中增加-e設置環境變數,可見-e替換了Dockerfile中指定的環境變數

因為一個鏡像可以啟動多個容器,所以可以通過設置不同-e達到設置不同配置參數的目的,比如下一個例子在Dockerfile中設置和將環境變數寫入yaml文件再供Python調用,執行的內容為列印yaml配置文件的參數內容,比如下面這個例子先看下目錄結構

其中config.yml是一個空配置文件,在run.sh中先使用echo寫入追加配置參數到config.yml在執行Python腳本

Dockerfile中啟動run.sh腳本作為容器執行命令

在啟動容器時,使用-e指定環境變數,在run.sh中echo將環境變數拿到和寫入配置文件,測試多次以不同的配置參數啟動容器如下

-v 設置掛載運行,將宿主機當前目錄下的文件掛載到容器中/home目錄下,例如

如果掛載的目錄和Dockerfile中的COPY的目錄不一致, -v會替代COPY或者ADD ,例如現在Docker中COPY一個文件到容器/home目錄下

同目錄下start.sh內容是列印1

構建鏡像結束後,指定-v啟動,起始掛載另外一個目錄,目錄下start.sh內容是列印2

docker run參數中最後的COMMAND會覆蓋Dockerfile中指定的 CMD ,例如執行echo 2替換原始Dockerfile中的CMD echo 1,輸出結果是2且執行完畢後退出

對於Dockerfile中的 ENTRYPOINT 指定的啟動命令docker run的COMMAND不會覆蓋,如果要覆蓋Docker中的ENTRYPOINT需要指定docker run中的 --entrypoint 參數,格式是

測試一個Dockerfile輸出1

在docker run中使用--entrypoint覆蓋Dockerfile中的ENTRYPOINT

容器啟動後通過 docker ps 或者 docker container ls 查看容器,可以增加額外參數比如 -a 顯示所有容器,默認只顯示運行的容器,可以增加 --no-trunc 參數使得顯示結果不截斷,例如

顯示結果分別顯示了容器的ID,鏡像,執行命令,創建時間,狀態,埠映射(宿主機->容器)和容器名稱。對於已經運行的容器可以使用 docker stop 停止,如果在docker run時增加--rm參數則停止的容器保留不會自動刪除,例如

除了docker stop命令還有一種停止容器純友蘆的命令 docker kill ,相比於docker stop,docker kill是 強制立即停止 ,而docker stop是先給了容器10秒(默認)的時間,使得容器有一定的時間處理、保存程序執行現場, 優雅的退出程序 ,例如

在容器停止之後可以使用 docker start 再啟動一個停止的容器,例如

除此之外可以使用 docker restart ,此時容器可以使停止的也可以是在運行中的,例如

查看容器詳情使用 docker inspect ,比如

在以上截取的內容中展示了容器詳情,包括容器id,創建時間,執行命令和參數,執行狀態,容器pid,落腳點,環境變數,網路設置,埠映射等,也可以使用Go語言風格輸出指定的詳情,比如分別只看容器的pid和容器的執行命令

容器是一個操作系統,可以進入這個操作系統查看容器的運行情況,有多種方式進入容器,其中主要是使用 docker exec 進入容器,在一個運行中的容器中執行一個命令,使用 -it 並帶有 /bin/bash 命令就可以進入容器,比如

除了/bin/bash也可以是其他命令掛載exec後面則可以直接對一個運行中的容器執行命令,比如查看容器的進入落腳點路徑,容器中的內存情況

當容器以後台 -d 運行時,日誌運行在容器內部,可以進入容器內部查看日誌,也可以使用 docker logs 查看日誌,以一個flask api介面的容器為例,日誌寫入文件,同時也會輸出在flask的控制台

創建Dockerfile以及構建鏡像,啟動容器

啟動一個腳本不斷請求api介面

進入容器內部查看日誌

另一種方式是直接使用 docker logs 命令,比如使用 -f 追蹤輸出,並且從最後的第1行開始輸出

此時宿主機的logs目錄下為空,容器中的logs目錄下存在detail.log文件,如果使用 -v 將宿主機目錄掛載到容器作為容器寫入的目錄,則容器中數據的變動會同步到本地,這樣可以直接在本地查看日誌,修改容器啟動為 -v 掛載的形式

此時本地logs目錄下開始產生日誌,且這個日誌和容器內的logs目錄下一致

如果容器內的內容改變了,此時刪除容器從鏡像重新啟動容器則改動的內容將不會存在,如果相對修改過的容器保留下來則可以從容器生成新的鏡像,先測試以下容器內修改在刪除的容器後將不再生效,在已有容器中使用pip安裝Python包

此時退出容器,並且刪除容器,最後從鏡像重新生成容器

此時進入容器檢查,並不存在pymongo包

如果要容器變化保存下來需要以這個新容器生成一個鏡像,使用 docker commit ,語法如下

以新安裝pymongo的容器為例,對新容器使用docker commmit

新生成的鏡像叫做xiaogp/my_image_test:v2

從新鏡像啟動容器並進入容器查看存在新安裝的pymongo

閱讀全文

與dockerfile中的命令相關的資料

熱點內容
二龍湖浩哥最早的作品 瀏覽:699
異界收母入後宮 瀏覽:155
ida反編譯出來的代碼是匯編指令嗎 瀏覽:820
小孩子是天才的電影 瀏覽:450
輿情監控演算法 瀏覽:147
好看123電影 瀏覽:751
成龍主演的五行拳電影名字 瀏覽:954
好看的中文字幕經典 瀏覽:913
android仿qq輸入 瀏覽:117
看輕小說的網站 瀏覽:86
命令與征服3戰役存檔 瀏覽:147
台灣風月影片 瀏覽:326
彭偶么電視劇電影大全 瀏覽:291
重生井岡山林楓 瀏覽:519
日本大片網址大全 瀏覽:741
在線免費觀看完整版電影大全韓國 瀏覽:889
片子視頻破解網站 瀏覽:853
穿越抗戰時期送物資的小說 瀏覽:536
大轉折系列電影17部 瀏覽:86
蠟筆小新功夫小子國語版免費觀看 瀏覽:407