1. 程式人生 > >Docker在Linux上執行NetCore系列(五)更新應用程式 Docker在Linux/Windows上執行NetCore文章系列

Docker在Linux上執行NetCore系列(五)更新應用程式 Docker在Linux/Windows上執行NetCore文章系列

轉發請註明此文章作者與路徑,請尊重原著,違者必究。

 

      本篇文章與其它系列文章不同,為了方便測試,新建了一個ASP.Net Core檢視應用。

      備註:下面說的應用,只是在容器中執行的應用程式。

 

檢視現在執行的應用

      容器中已經運行了一個應用testaspnetcoredockerlinuxname,版本是1.0。我們下面檢視一下已經在執行中的應用。

      輸入命令【sudo docker ps

】可以看到執行中的容器。

      紅色線的就是我們要升級的正在執行中的容器。版本是1.0。

clipboard

 

      輸入命令【sudo docker images】看到docker中的映象,Tag版本是1.0。

clipboard

 

開始升級應用

      testaspnetcoredockerlinuxname在上面的版本是1.0,下面我們構建1.1版本。

      使用命令構建映象【sudo docker build -t testaspnetcoredockerlinux:1.1

.

      執行一大堆命令後,構建成功了。使用命令檢查映象資訊:【sudo docker images

clipboard

 

      構建完成映象後,我們試一下構建應用在容器中執行。

      執行【sudo docker run --name testaspnetcoredockerlinuxname -p 8089:80 testaspnetcoredockerlinux:1.1】的時候,報下面的錯誤:

docker: Error response from daemon: Conflict. The container name "/testaspnetcoredockerlinuxname" is already in use by container "59553212df7cc9a2524fe896d21f0bac9936a03806cbeeae6595d9f97c3c9fe8". You have to remove (or rename) that container to be able to reuse that name.

      意思是已經存在容器的名稱,要麼更改舊應用容器名稱,要麼把舊應用容器刪除。

 

      自行想了一下,可以使用建立新應用並執行(新應用名稱後面加-temp)->停止舊應用容器->刪除舊應用容器->重新命名新應用為舊應用名稱的方法。

      上面的步驟可以,但是試的時候因為對外暴露的埠舊應用已經在用,一臺機器只能對外一個埠。所以要先刪除舊應用才可以安裝新應用。

      下面我們使用更新應用的另外一種方案,比較暴力。停止舊應用->刪除舊應用->構建並執行新應用。

步驟如下                                          

      先停止舊容器應用【sudo docker stop testaspnetcoredockerlinuxname

      然後刪除舊容器應用【sudo docker container rm testaspnetcoredockerlinuxname

      再構建新應用到容器【sudo docker run --name testaspnetcoredockerlinuxname -p 8089:80 testaspnetcoredockerlinux:1.1】。注意這裡是1.1版本。

      到此新應用執行成功了。輸入網址:http://192.168.3.220:8089/

clipboard

 

      我們檢查一下是否更新到版本,【sudo docker ps】檢視執行中的容器。

      容器執行成功,並且是最新的1.1版本。

clipboard

 

      所以,總體步驟是:建立新應用->停止舊應用->刪除舊應用容器->構建並執行新應用。

 

系列文章

Docker在Linux/Windows上執行NetCore文章系列

 

可以關注本人的公眾號,多年經驗的原創文章共享給大家。

914305-20181015182707033-510683802