天天看點

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

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

1. 介紹

本文假設您已經在開發和目标環境中安裝了 Docker 引擎。有關安裝說明請參閱 6.3:https://docs.docker.com/engine/installation/。

2. 開發容器映像

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

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

如果你隻是在本地使用,那麼你可以随意為 Docker 容器命名。它可以像上面那邊簡單的命名為“myApp”。但是如果你想将映像釋出到 Docker Hub,就需要遵循特定的命名規範。這個規範有助于 Docker 工具将容器映像釋出到正确的命名空間和倉庫。

格式如下:

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

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

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

我們可以使用“docker tag”指令從已經存在的映像建立新的映像。“docker tag”指令會在下面說明。

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

3. 運作容器

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

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

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

“-p” 用于映射容器。比如,“-p 8080:8080” 的第一個端口号用在 Docker 主機上,第二個端口号是在 Docker 容器中使用的。根據這個參數的設定,所有對 Docker 主機端口的資料傳輸都會被轉發到對應的 Docker 容器端口。

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

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

如果要列出所有容器,而不管其狀态如何,使用 “-a” 參數。

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

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

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

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

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

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

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

4. 釋出容器映像

我自己的命名空間是 “saravasu”,目前練習使用的倉庫是 “techietweak”。

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

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

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

現在使用你的賬号登入 Docker Hub 并檢查映像的倉庫中進行檢查。

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

5 部署容器

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

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

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

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

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

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

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

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

docker run 指令會啟動容器。可以使用 “docker ps” 指令來檢查。Docker 建立并運作了一個新的容器,其名稱為 “naughty_lewin”。

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

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

6. 總結

本文轉自 Mr_sheng 51CTO部落格,原文連結:http://blog.51cto.com/sf1314/1971946