Docker在Linux上執行NetCore系列(五)更新應用程式 Docker在Linux/Windows上執行NetCore文章系列
轉發請註明此文章作者與路徑,請尊重原著,違者必究。
本篇文章與其它系列文章不同,為了方便測試,新建了一個ASP.Net Core檢視應用。
備註:下面說的應用,只是在容器中執行的應用程式。
檢視現在執行的應用
容器中已經運行了一個應用testaspnetcoredockerlinuxname,版本是1.0。我們下面檢視一下已經在執行中的應用。
輸入命令【sudo docker ps
紅色線的就是我們要升級的正在執行中的容器。版本是1.0。
輸入命令【sudo docker images】看到docker中的映象,Tag版本是1.0。
開始升級應用
testaspnetcoredockerlinuxname在上面的版本是1.0,下面我們構建1.1版本。
使用命令構建映象【sudo docker build -t testaspnetcoredockerlinux:1.1
執行一大堆命令後,構建成功了。使用命令檢查映象資訊:【sudo docker images】
構建完成映象後,我們試一下構建應用在容器中執行。
執行【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/
我們檢查一下是否更新到版本,【sudo docker ps】檢視執行中的容器。
容器執行成功,並且是最新的1.1版本。
所以,總體步驟是:建立新應用->停止舊應用->刪除舊應用容器->構建並執行新應用。
系列文章
Docker在Linux/Windows上執行NetCore文章系列
可以關注本人的公眾號,多年經驗的原創文章共享給大家。