當前位置:
首頁 > 知識 > 從開發到部署會用到的 Docker 命令

從開發到部署會用到的 Docker 命令

本文的目的是理解容器開發在目標環境中部署的端到端流程,並列出這些操作所需的 Docker 命令。


1. 介紹

整個流程包括使用代碼、依賴軟體和配置來開發容器映像,在開發環境中運行和測試容器,將容器映像發布到 Docker Hub,以及最後的部署和在目標環境中運行容器。

本文假設您已經在開發和目標環境中安裝了 Docker 引擎。有關安裝說明請參閱 6.3。


2. 開發容器映像

在構建容器映像之前,你需要創建一個 dockerfile,它包含了所需要的信息。請參考這裡來編製一個 dockerfile。

2.1 構建 Docker 容器

$docker build -t containername .

這個命令會使用當前目錄下的 Dockerfile。如果 dockerfile 使用了其它文件名或者放在其它位置,可以使用 -f 參數來指定 dockerfile 的名稱。「docker build」 命令會構建容器映像,這個容器映像的名稱由 「-t」 參數指定。

$docker build -t myapp .

從開發到部署會用到的 Docker 命令

2.2 Docker 映像命名規範

如果你只是在本地使用,那麼你可以隨意為 Docker 容器命名。它可以像上面那邊簡單的命名為「myApp」。但是如果你想將映像發布到 Docker Hub,就需要遵循特定的命名規範。這個規範有助於 Docker 工具將容器映像發布到正確的命名空間和倉庫。

格式如下:

NameSpace/Repository:Version

現在我們按上面的規範來構建 Docker 映像:

$docker build -t saravasu/techietweak:001 .

我們可以使用「docker tag」命令從已經存在的映像創建新的映像。「docker tag」命令會在下面說明。

2.3 列出 Docker 中所有映像

$docker images

從開發到部署會用到的 Docker 命令


3. 運行容器

3.1 啟動 Docker 容器

使用「docker run」命令來啟動 Docker 容器。

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

從開發到部署會用到的 Docker 命令

「-d」 參數會讓容器以獨立的模式來運行容器,這樣即使終端關閉了容器仍然會保持運行。

「-p」 用於映射容器。比如,「-p 8080:8080」 的第一個埠號用在 Docker 主機上,第二個埠號是在 Docker 容器中使用的。根據這個參數的設置,所有對 Docker 主機埠的數據傳輸都會被轉發到對應的 Docker 容器埠。

3.2 查看運行中的容器

$docker ps

從開發到部署會用到的 Docker 命令

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

如果要列出所有容器,而不管其狀態如何,使用 「-a」 參數。

$docker ps -a

3.3 顯示運行中容器的控制台日誌

$docker logs <containerName>

從開發到部署會用到的 Docker 命令

ContainerName(容器名稱) 可以通過 「docker ps」 命令找到。

3.4 登入容器

$docker exec -it containerId /bin/bash

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

從開發到部署會用到的 Docker 命令

3.5 停止容器運行

$docker stop <containername>

從開發到部署會用到的 Docker 命令

3.6 從 Docker 中刪除容器映像

$docker rm imageId

使用 「docker images」 或 「docker images -a」 命令找到 imageId(映像 ID)。

$docker rmi -f <List Of Image Ids>

從開發到部署會用到的 Docker 命令

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

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

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

4. 發布容器映像

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

我自己的命名空間是 「saravasu」,當前練習使用的倉庫是 「techietweak」。

從開發到部署會用到的 Docker 命令

4.1 登錄 Docker Hub

$docker login

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

$docker login http://localhost:8080

從開發到部署會用到的 Docker 命令

4.2 標記容器映像

在把容器映像推送到 Docker Hub 之前,必須按指定的格式對其進行標記:<Namespace>/<Repository>:<Version>。如果你沒有指定版本(version),它會使用默認的 「default」。下面的命令演示了標記映像:

$docker tag myapp:latest saravasu/techietweak:001

4.3 將 Docker 映像推送到 Docker Hub

$docker push saravasu/techietweak:001

從開發到部署會用到的 Docker 命令

4.4 在 Docker Hub 中檢查容器映像

現在使用你的賬號登錄 Docker Hub 並檢查映像的倉庫中進行檢查。

從開發到部署會用到的 Docker 命令


5 部署容器

5.1 拉取 Docker 容器映像

在主機的目標環境中登錄 Docker Hub 並從 Docker Hub 拉取容器映像。如果你想從私有的船塢(指 Docke 映像庫)中拉取,需要使用命令 「$docker login <hostname>」 來指定私有倉船塢的主機名(hostname)。

$docker login

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

$docker pull saravasu/techietweak:001

從開發到部署會用到的 Docker 命令

5.2 檢查映像

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

$docker images

從開發到部署會用到的 Docker 命令

5.3 運行容器

現在我們用與在開發環境下運行測試相同的方法來運行 Docker 容器。之前做過,輕車熟路。

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

從開發到部署會用到的 Docker 命令

docker run 命令會啟動容器。可以使用 「docker ps」 命令來檢查。Docker 創建並運行了一個新的容器,其名稱為 「naughty_lewin」。

我們在上面看到 Docker 引擎為運行的容器提供了一個隨機的名稱,這在自動化過程中可能會產生問題,所以最好是按我們的意願指定一個名稱。這可以由 「-name」 參數實現。

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

從開發到部署會用到的 Docker 命令


6. 總結

本文涵蓋了開發一個容器映像的流程和必要的命令,講解了在本地環境運行,以及將映像發布到 Docker Hub,並在目標環境運行容器。想進一步研究,或者閱讀詳細的文檔,請移步 Docker 網站 [參考 6.1]。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 OSC開源社區 的精彩文章:

2017 年八款值得嘗試的精美的 Linux 發行版
與 Docker 緊密整合的 12 大開源工具
可能是國內最火的開源項目——C/C++ 篇
React 放棄專利條款,將許可證將改為 MIT
2017 全棧開發人員修鍊指南

TAG:OSC開源社區 |