转发请注明此文章做者与路径,请尊重原著,违者必究。html
本篇文章与其它系列文章不一样,为了方便测试,新建了一个ASP.Net Core视图应用。linux
备注:下面说的应用,只是在容器中运行的应用程序。docker
容器中已经运行了一个应用testaspnetcoredockerlinuxname,版本是1.0。咱们下面查看一下已经在运行中的应用。post
输入命令【sudo docker ps】能够看到运行中的容器。测试
红色线的就是咱们要升级的正在运行中的容器。版本是1.0。ui
输入命令【sudo docker images】看到docker中的镜像,Tag版本是1.0。url
testaspnetcoredockerlinuxname在上面的版本是1.0,下面咱们构建1.1版本。spa
使用命令构建镜像【sudo docker build -t testaspnetcoredockerlinux:1.1 .】htm
运行一大堆命令后,构建成功了。使用命令检查镜像信息:【sudo docker images】blog
构建完成镜像后,咱们试一下构建应用在容器中运行。
运行【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文章系列
能够关注本人的公众号,多年经验的原创文章共享给你们。