從開發(fā)到部署會用到的 Docker 命令

本文的目的是理解容器開發(fā)在目標環(huán)境中部署的端到端流程,并列出這些操作所需的 Docker 命令。

1. 介紹

整個流程包括使用代碼眷细、依賴軟件和配置來開發(fā)容器映像巡通,在開發(fā)環(huán)境中運行和測試容器尘执,將容器映像發(fā)布到 Docker Hub,以及最后的部署和在目標環(huán)境中運行容器宴凉。

本文假設您已經(jīng)在開發(fā)和目標環(huán)境中安裝了 Docker 引擎誊锭。有關安裝說明請參閱 6.3。

2. 開發(fā)容器映像

在構建容器映像之前弥锄,你需要創(chuàng)建一個 dockerfile丧靡,它包含了所需要的信息。請參考這里來編制一個 dockerfile籽暇。

2.1 構建 Docker 容器

$docker build -t containername .

這個命令會使用當前目錄下的 Dockerfile温治。如果 dockerfile 使用了其它文件名或者放在其它位置,可以使用 -f 參數(shù)來指定 dockerfile 的名稱戒悠“揪#“docker build” 命令會構建容器映像,這個容器映像的名稱由 “-t” 參數(shù)指定绸狐。

$docker build -t myapp .

2.2 Docker 映像命名規(guī)范

如果你只是在本地使用卤恳,那么你可以隨意為 Docker 容器命名。它可以像上面那邊簡單的命名為“myApp”寒矿。但是如果你想將映像發(fā)布到 Docker Hub纬黎,就需要遵循特定的命名規(guī)范。這個規(guī)范有助于 Docker 工具將容器映像發(fā)布到正確的命名空間和倉庫劫窒。

格式如下:

NameSpace/Repository:Version

現(xiàn)在我們按上面的規(guī)范來構建 Docker 映像:

$docker build -t saravasu/techietweak:001 .

我們可以使用“docker tag”命令從已經(jīng)存在的映像創(chuàng)建新的映像本今。“docker tag”命令會在下面說明主巍。

2.3 列出 Docker 中所有映像

$docker images

3. 運行容器

3.1 啟動 Docker 容器

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

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

“-d” 參數(shù)會讓容器以獨立的模式來運行容器,這樣即使終端關閉了容器仍然會保持運行孕索。

“-p” 用于映射容器逛艰。比如,“-p 8080:8080” 的第一個端口號用在 Docker 主機上搞旭,第二個端口號是在 Docker 容器中使用的散怖。根據(jù)這個參數(shù)的設置菇绵,所有對 Docker 主機端口的數(shù)據(jù)傳輸都會被轉發(fā)到對應的 Docker 容器端口。

3.2 查看運行中的容器

$docker ps

從上面的輸出我們可以看到 Docker 容器以 “trusting_snyder” 這個名字在運行镇眷。

如果要列出所有容器咬最,而不管其狀態(tài)如何,使用 “-a” 參數(shù)欠动。

$docker ps -a

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

$docker logs

ContainerName(容器名稱) 可以通過 “docker ps” 命令找到永乌。

3.4 登入容器

$docker exec -it containerId /bin/bash

上面的命令會用容器中的 “bash” shell 給出提示。

3.5 停止容器運行

$docker stop

3.6 從 Docker 中刪除容器映像

$docker rm imageId

使用 “docker images” 或 “docker images -a” 命令找到 imageId(映像 ID)具伍。

$docker rmi -f

上面的命令會強制刪除指定的映像翅雏。

3.7 清理 Docker / 刪除本地 Docker 中所有容器映像

$docker rmi -f $(docker images | tr -s ' ' ' ' | cut -d' ' -f3)

4. 發(fā)布容器映像

Docker 容器映像可以發(fā)布到本地庫或公共的 Docker Hub。兩種情況所使用的命令的操作過程一樣人芽。為了將你的 Docker 映像發(fā)布到 Docker Hub望几,你得先在 http://hub.docker.com 創(chuàng)建自己的命名空間和倉庫。

我自己的命名空間是 “saravasu”萤厅,當前練習使用的倉庫是 “techietweak”橄妆。

4.1 登錄 Docker Hub

$docker login

如果你想登錄本地庫,請先提供 URL祈坠。如果沒有指定 URL害碾,那么這個命令會登錄 Docker Hub。

$docker login http://localhost:8080

4.2 標記容器映像

在把容器映像推送到 Docker Hub 之前赦拘,必須按指定的格式對其進行標記:/:慌随。如果你沒有指定版本(version),它會使用默認的 “default”躺同。下面的命令演示了標記映像:

$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 容器映像

在主機的目標環(huán)境中登錄 Docker Hub 并從 Docker Hub 拉取容器映像。如果你想從私有的船塢(指 Docke 映像庫)中拉取蹋艺,需要使用命令 “$docker login ” 來指定私有倉船塢的主機名(hostname)剃袍。

$docker login

由于上面的命令沒有指定主機名稱,它會登錄 https://hub.docker.com捎谨。

$docker pull saravasu/techietweak:001

5.2 檢查映像

docker pull 命令會從 Docker Hub 下載容器映像民效。我們可以使用 “docker images” 命令來對其進行檢查。

$docker images

5.3 運行容器

現(xiàn)在我們用與在開發(fā)環(huán)境下運行測試相同的方法來運行 Docker 容器涛救。之前做過畏邢,輕車熟路。

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

docker run 命令會啟動容器检吆∈嫖可以使用 “docker ps” 命令來檢查佃牛。Docker 創(chuàng)建并運行了一個新的容器枝嘶,其名稱為 “naughty_lewin”。

我們在上面看到 Docker 引擎為運行的容器提供了一個隨機的名稱磺浙,這在自動化過程中可能會產(chǎn)生問題莉给,所以最好是按我們的意愿指定一個名稱被济。這可以由 “-name” 參數(shù)實現(xiàn)肄满。

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

6. 總結

本文涵蓋了開發(fā)一個容器映像的流程和必要的命令砖第,講解了在本地環(huán)境運行,以及將映像發(fā)布到 Docker Hub素征,并在目標環(huán)境運行容器集嵌。想進一步研究萝挤,或者閱讀詳細的文檔御毅,請移步 Docker 網(wǎng)站 [參考 6.1]。

編譯自:Docker Commands for Development to Deployment

譯者:開源中國 - 邊城, 無若

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怜珍,一起剝皮案震驚了整個濱河市端蛆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酥泛,老刑警劉巖今豆,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柔袁,居然都是意外死亡呆躲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門捶索,熙熙樓的掌柜王于貴愁眉苦臉地迎上來插掂,“玉大人,你說我怎么就攤上這事腥例「ㄉ” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵燎竖,是天一觀的道長璃弄。 經(jīng)常有香客問我,道長构回,這世上最難降的妖魔是什么夏块? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮纤掸,結果婚禮上拨扶,老公的妹妹穿的比我還像新娘。我一直安慰自己茁肠,他們只是感情好患民,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著垦梆,像睡著了一般匹颤。 火紅的嫁衣襯著肌膚如雪仅孩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天印蓖,我揣著相機與錄音辽慕,去河邊找鬼。 笑死赦肃,一個胖子當著我的面吹牛溅蛉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播他宛,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼船侧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了厅各?” 一聲冷哼從身側響起镜撩,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎队塘,沒想到半個月后袁梗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡憔古,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年遮怜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸿市。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡锯梁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灸芳,到底是詐尸還是另有隱情涝桅,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布烙样,位于F島的核電站冯遂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谒获。R本人自食惡果不足惜蛤肌,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望批狱。 院中可真熱鬧裸准,春花似錦、人聲如沸赔硫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至权悟,卻和暖如春砸王,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背峦阁。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工谦铃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榔昔。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓驹闰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撒会。 傳聞我的和親對象是個殘疾皇子嘹朗,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容