作者 | 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
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
3 運行容器
3.1 啟動Docker容器
使用“docker run”命令來啟動Docker容器。
$docker run -d -p 8080:8080 saravasu/techietweak:001
“-d”選項在分離模式中運行容器,因此容器繼續運行,甚至終端被關閉。
“-p”命令用來映射端口。在這個例子中,“-p 8080:8080”第一個端口號是Docker主機用的端口。第二個端口號是被Docker容器使用。根據這個命令,所有的流量到達Docker主機端口,將轉到Docker容器端口。
3.2 檢查當前運行的容器
$docker ps
從上面的輸出,我們看到一個Docker容器在名為“trusting_snyder.”中運行。
若要列出所有的容器,使用“- a”切換。
$docker ps -a
3.3 展示運行容器的控制臺日志
$docker logs <containerName>
容器名稱可以通過 “docker ps” 命令發現。
3.4 登陸到容器
$docker exec -it containerId /bin/bash
上面的命令將提示你使用容器的“bash”。
3.5 停止運行的容器
$docker stop <containername>
3.6 從Docker移除容器鏡像
$docker rm imageId
使用“docker images” 或“docker images -a.”命令發現容器的imageId。
$docker rmi -f <List Of Image Ids>
上面的命令將強有力的刪除指定的鏡像。
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網站上可以找到。