Docker學(xué)習(xí)筆記(二):Docker容器命令總結(jié)(從開發(fā)到部署 )

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

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

1 簡介

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

2 開發(fā)容器鏡像

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

2.1 構(gòu)建Docker容器

$docker build -t containername

這個命令將把Dockerfile放到當(dāng)前的目錄中。如果你的dockerfile名稱不一樣而且在不同的位置,可以使用-f 標(biāo)簽來指定dockerfile的名稱?!癲ocker build”命令將在“-t”標(biāo)簽指定的名稱中構(gòu)建容器鏡像。

$docker build -t myapp

Paste_Image.png
2.2鏡像命名慣例

當(dāng)在本地運行的時候,可以給Docker容器隨便起什么名??梢院唵蔚南裆厦嫣岬降摹癿yApp”。但是如果你想發(fā)布鏡像到Docker Hub中,那么就需要遵循一個指定的命名慣例。這個慣例可以幫助Docker工具來發(fā)布容器鏡像到正確的命名空間和資源庫中。

格式:NameSpace/Repository:Version

所以我用上面的管理構(gòu)架docker鏡像:

$docker build -t saravasu/techietweak:001

還能用“docker tag”命令從外部鏡像創(chuàng)建鏡像?!癲ocker 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”選項在分離模式中運行容器,因此容器繼續(xù)運行,甚至終端被關(guān)閉。

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

3.2 檢查當(dāng)前運行的容器

$docker ps

Paste_Image.png

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

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

$docker ps -a

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

$docker logs <containerName>

Paste_Image.png

容器名稱可以通過 “docker ps” 命令發(fā)現(xiàn)。

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.”命令發(fā)現(xiàn)容器的imageId。

$docker rmi -f <List Of Image Ids>

Paste_Image.png

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

4 發(fā)布容器鏡像

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

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

4.1 登陸Docker Hub

$docker login

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

$docker login http://localhost:8080

4.2 標(biāo)記容器鏡像

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

$docker tag myapp:latest saravasu/techietweak:001

4.3 把Docker鏡像推到Docker Hub中

$docker push saravasu/techietweak:001

4.4 在Docker Hub中檢查容器鏡像

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

5 部署容器

5.1 拉出Docker容器鏡像

在目標(biāo)環(huán)境中,從主機登陸到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”命令來驗證相同的結(jié)果。

$docker images

5.3 運行容器

現(xiàn)在,我們可以用同樣的方式運行Docker容器,就像在開發(fā)環(huán)境中運行一樣,用我們以前做過的方式來測試它。

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

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

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

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

6 總結(jié)

這篇文章截取了開發(fā)容器鏡像的流程和必要命令,在本地環(huán)境中運行,發(fā)布鏡像到Docker Hub,在目標(biāo)環(huán)境中運行容器等等。進一步的研究和詳細(xì)的文檔在Docker網(wǎng)站上可以找到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容