Docker學習筆記(二):Docker容器命令總結(從開發到部署 )

作者 | Saravanan Subramanian
翻譯 | 袁思思
來源 | https://dzone.com/articles/docker-commands-for-development-to-deployment
轉載:https://mp.weixin.qq.com/s?__biz=MzIzNzA5NzM3Ng==&mid=2651858043&idx=1&sn=d44eee15f19bc7fcbb1ab2f4cafd4199&chksm=f3295cb4c45ed5a21950de2f992ba6ebffdf9fdfab11591c6a93184874d07a28c0abc85a9ab7#rd

這篇文章的目的是為了理解在目標環境中端到端的、容器開發到部署的流程,并且列出了每個活動所需的Docker命令。

1 簡介

全部的進程由開發的容器和相關軟件組成,并且在開發環境中配置、運行和測試容器,發布容器鏡像到Docker Hub中,最后部署Docker鏡像,在目標環境中運行容器。本文假設你已經在開發和目標環境中安裝好了Docker引擎。請參考6.3的安裝說明。

2 開發容器鏡像

為了構建容器鏡像,我們必須創建一個dockerfile,它將包含所有必要的信息。請參考這個文檔(https://nodejs.org/en/docs/guides/nodejs-docker-webapp/)來開發dockerfile。

2.1 構建Docker容器

$docker build -t containername

這個命令將把Dockerfile放到當前的目錄中。如果你的dockerfile名稱不一樣而且在不同的位置,可以使用-f 標簽來指定dockerfile的名稱。“docker build”命令將在“-t”標簽指定的名稱中構建容器鏡像。

$docker build -t myapp

Paste_Image.png
2.2鏡像命名慣例

當在本地運行的時候,可以給Docker容器隨便起什么名。可以簡單的像上面提到的“myApp”。但是如果你想發布鏡像到Docker Hub中,那么就需要遵循一個指定的命名慣例。這個慣例可以幫助Docker工具來發布容器鏡像到正確的命名空間和資源庫中。

格式:NameSpace/Repository:Version

所以我用上面的管理構架docker鏡像:

$docker build -t saravasu/techietweak:001

還能用“docker tag”命令從外部鏡像創建鏡像。“docker tag”在下面解釋。

2.3 在Docker中列出所有鏡像

$docker images

Paste_Image.png

3 運行容器

3.1 啟動Docker容器

使用“docker run”命令來啟動Docker容器。

$docker run -d -p 8080:8080 saravasu/techietweak:001

Paste_Image.png

“-d”選項在分離模式中運行容器,因此容器繼續運行,甚至終端被關閉。

“-p”命令用來映射端口。在這個例子中,“-p 8080:8080”第一個端口號是Docker主機用的端口。第二個端口號是被Docker容器使用。根據這個命令,所有的流量到達Docker主機端口,將轉到Docker容器端口。

3.2 檢查當前運行的容器

$docker ps

Paste_Image.png

從上面的輸出,我們看到一個Docker容器在名為“trusting_snyder.”中運行。

若要列出所有的容器,使用“- a”切換。

$docker ps -a

3.3 展示運行容器的控制臺日志

$docker logs <containerName>

Paste_Image.png

容器名稱可以通過 “docker ps” 命令發現。

3.4 登陸到容器

$docker exec -it containerId /bin/bash

上面的命令將提示你使用容器的“bash”。

Paste_Image.png
3.5 停止運行的容器

$docker stop <containername>

Paste_Image.png
3.6 從Docker移除容器鏡像

$docker rm imageId

使用“docker images” 或“docker images -a.”命令發現容器的imageId。

$docker rmi -f <List Of Image Ids>

Paste_Image.png

上面的命令將強有力的刪除指定的鏡像。

4 發布容器鏡像

Docker容器鏡像可以發布到本地dockyard或公共Docker Hub。這兩個過程和命令都是一樣的。要在Docker Hub中發布Docker映像,首先在http://hub.docker.com上創建名稱空間和資源庫。

我用了我的命名空間“saravasu”和資源庫“techietweak”來進行這個練習。

4.1 登陸Docker Hub

$docker login

如果你想登陸到本地的資源庫,需要提供URL。如果URL不是特定的,那么這個命令將登陸到Docker Hub中。

$docker login http://localhost:8080

4.2 標記容器鏡像

要將Docker容器映像推到Docker Hub,它必須以特定的格式標記:< Namespace > / < Repository >:< Version >。如果未指定該版本,將被視為“默認”。在下面的命令中,我標記了鏡像:

$docker tag myapp:latest saravasu/techietweak:001

4.3 把Docker鏡像推到Docker Hub中

$docker push saravasu/techietweak:001

4.4 在Docker Hub中檢查容器鏡像

現在登陸你的Docker Hub賬戶,然后在各自的資源庫中檢查鏡像。

5 部署容器

5.1 拉出Docker容器鏡像

在目標環境中,從主機登陸到Docker Hub中,并且從Docker Hub中拉出容器鏡像。如果你想從自己的dockyard拉出,使用“$docker login <hostname>”命令指定自己dockyard的主機名。

$docker login

上面的命令將登陸到https://hub.docker.com,因為主機名沒有指定。

$docker pull saravasu/techietweak:001

5.2 檢查鏡像

docker pull命令從Docker Hub下載容器鏡像。我們可以使用“docker images”命令來驗證相同的結果。

$docker images

5.3 運行容器

現在,我們可以用同樣的方式運行Docker容器,就像在開發環境中運行一樣,用我們以前做過的方式來測試它。

$docker run -d -p 8080:8080 saravasu/techietweak:001

docker run命令啟動容器。為了驗證,可以使用“docker ps”命令。Docker創建了一個新的容器,以“naughty_lewin.的名字運行。

正如我們在上面看到的,Docker引擎為運行的容器提供了一個隨機的名稱,但這可能在自動化中是個問題,因此指定一個我們要參考的名稱總是好的。這可以通過使用“- name”參數實現。

$docker run -d -p 8080:8080 --name "myNodeJsWebContainer" saravasu/techietweak:001

6 總結

這篇文章截取了開發容器鏡像的流程和必要命令,在本地環境中運行,發布鏡像到Docker Hub,在目標環境中運行容器等等。進一步的研究和詳細的文檔在Docker網站上可以找到。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容