轉發請註明此文章作者與路徑,請尊重原著,違者必究。 本篇文章與其它系列文章不同,為了方便測試,新建了一個ASP.Net Core視圖應用。 備註:下麵說的應用,只是在容器中運行的應用程式。 查看現在運行的應用 容器中已經運行了一個應用testaspnetcoredockerlinuxname,版本是 ...
轉發請註明此文章作者與路徑,請尊重原著,違者必究。
本篇文章與其它系列文章不同,為了方便測試,新建了一個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文章系列
可以關註本人的公眾號,多年經驗的原創文章共用給大家。