把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像

时间:2022-08-22 09:49:17

在上一个part《把AspDotNetCoreMvc程序运行在Docker上-part1》,已经将成功将aspdotnetcore程序运行在两个不同的容器中,目前两个容器的内容完全相同,只是对外的访问端口不同。

修改容器内容

接下来看看如何修改容器的内容,让两个容器里显示的内容有些差别。

实际上每个容器都有自己的独立文件系统,当然可以实现修改各自的内容,同时修改容器内容是不会影响到镜像的,可以把镜像理解成是只读的,但是容器的内容是可写的。

修改文件之前首先确保两个容器已经在运行了

执行启动命令

docker start app1 app2

查看是否已经在运行

docker ps –a

在开发机上打开程序,找到Views/Home目录,打开Index.cshtml文件

简单改个标题的显示内容,将h4标签的内容改成别的内容

<h4 class="bg-success text-xs-center p-1 text-white">something changed here</h4>

 由于之前用dotnet publish生成的站点内容是没有Views文件夹,都编译成了AspDotNetCoreMvcDocker.PrecompiledViews.dll(页面预编译),所以我们改完之后也要重新执行dotnet publish,生成一个新的站点内容,然后把该文件更新到docker容器中。

重新生成之后将AspDotNetCoreMvcDocker.PrecompiledViews.dll上传到docker所在的服务器(与开发机相同忽略)

在包含该文件的目录下执行如下命令

docker cp ./AspDotNetCoreMvcDocker.PrecompiledViews.dll app1:/app/

上述命令是把AspDotNetCoreMvcDocker.PrecompiledViews.dll文件从宿主机器拷贝到容器app1的/app文件夹下

执行docker restart app1

然后打开浏览器http://{ip}:3000会看到标题背景颜色和标题有了变化

把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像

而http://{ip}:4000的页面还是之前的内容

说明容器的文件系统是独立的。

提交镜像改动

基于上述的改动,我们可以创建一个新的镜像,利用docker commit命令可以创建一个新的镜像。

docker commit app1 shenba/aspdotnetcoremvc:changed

运行docker images,可以看到如下输出

REPOSITORY TAG IMAGE ID CREATED SIZE

shenba/aspdotnetcoremvc changed 4ec1f62d8f06 12 minutes ago 284MB

shenba/aspdotnetcoremvc latest 407471ef91f2 2 weeks ago 284MB

可以看到我们新的镜像shenba/aspdotnetcoremvc:changed,它实际上是基于shenba/aspdotnetcoremvc镜像创建的,只是对应的TAG变成了changed。

推送镜像发布到Docker Hub

将本地的创建的自定义镜像发布到Docker Hub,类似于将源代码公开到github,将镜像公开到网上。

当然在推送之前,必须在Docker Hub上注册一个用户名,具体不详细说,很简单。

需要注意的时候,docker的用户名必须用作docker镜像的名称的前缀,比如我这里创建的镜像是shenba/aspdotnetcoremvc,shenba就是我的Docker Hub的用户名,后面用/隔开紧跟名称,这样组合成一个镜像名。

开始推送,首先用用户名和密码登录

docker login -u <你的用户名> -p <密码>

登录成功后会看到如下提示

Login Succeeded

一旦登录成功之后,后续的操作就不需要再登录了。

继续push我们的镜像,这里推送了changed和latest两个不同TAG的镜像

docker push shenba/aspdotnetcoremvc:changed

docker push shenba/aspdotnetcoremvc:latest

命令执行成功之后,在Docker Hub自己的账户下就能看到推送上去的镜像,它包含两个Tags

把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像

执行完毕之后,可以执行如下命令退出登录状态

docker logout

把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像的更多相关文章

  1. 把AspDotNetCoreMvc程序运行在Docker上-part3:使用独立的存储容器

    接上一篇博文<把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像>,这次我们看看如何使用docker存储数据. 背景 之前的示例都只有一个网站应用 ...

  2. 把AspDotNetCoreMvc程序运行在Docker上-part5:使用docker-compose

    在上一part<把AspDotNetCoreMvc程序运行在Docker上-part4:实现负载均衡>中,我们通过几个比较复杂的步骤在docker平台上实现了对网站程序的负载均衡,配置步骤 ...

  3. 把AspDotNetCoreMvc程序运行在Docker上-part4:实现负载均衡

    在上一part<把AspDotNetCoreMvc程序运行在Docker上-part3:使用独立的存储容器>,我们利用MySql容器和Volume实现了真正意义上的数据存储.整个结构非常简 ...

  4. 把AspDotNetCoreMvc程序运行在Docker上-part1

    接<基于ASP.Net Core学习Docker技术第一步:在CentOS7安装Docker平台>这个博文,在搭建完成Docker平台之后,可以开始让aspdotnetcore程序运行在d ...

  5. 六、&period;net core &lpar;&period;NET 6&rpar;程序部署到Docker上

    使用Docker部署应用程序 首先确保已经安装Docker 桌面软件,如下图: 然后,把需要部署到Docker上面的项目,咱们先添加Docker的支持,启动项目右键 -> 添加 -> Do ...

  6. 将Spring Boot项目运行在Docker上

    将Spring Boot项目运行在Docker上 一.使用Dockerfile构建Docker镜像 1.1Dockerfile常用指令 1.1.1ADD复制文件 1.1.2ARG设置构建参数 1.1. ...

  7. 在Docker上构建mysql容器

    1.查看docker上的镜像是否有 mysql,如果没有下载则列表中没有  [root@holly holly]# docker images; 如果没有只会看到如下结构 REPOSITORY  TA ...

  8. docker上构建redis容器

    1.查看docker上的镜像 [root@holly ~]# docker images 2.搜索docker上的redis镜像,选择下载的版本 [root@holly ~]# docker sear ...

  9. 在docker上构建tomcat容器

    1.查看docker上的镜像 [root@holly ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.6 73829d7b ...

随机推荐

  1. jdk环境变量配置

    新建用户变量PATH,编辑jdk路径. 仅此而已.

  2. &lbrack;设计模式&rsqb; javascript 之 工厂方法模式

    1. 简单工厂模式 说明:就是创建一个工厂类,里面实现了所对同一个接口的实现类的创建. 但是好像JavaScript 好像没有 接口 这号东西,所以我们去掉接口这个层; 当然,我们这里的 实现类 下的 ...

  3. UVA 11722

    You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...

  4. pod update或者pod install很慢

    最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级Co ...

  5. 离线破win2003域账号密码&lpar;更新域数据库不在默认路径的情况&rpar;

    国内网站讲了许多方法,很多也讲得不清楚.我把我尝试成功的经验跟大家分享. 方法是按照tim的文章操作,链接如下: http://pauldotcom.com/2011/11/safely-dumpin ...

  6. Basic脚本解释器移植到STM32

    本文来自http://blog.csdn.net/hellogv/ .引用必须注明出处! 上次讲了LUA移植到STM32.这次讲讲Basic脚本解释器移植到STM32. 在STM32上跑Basic脚本 ...

  7. Ubuntu 16&period;04设置开机启动脚本的方法

    需求:公司卡片机容量太小,只有100G,由于使用的人比较的多,开机使用后有时候就会出现磁盘空间占满数据写不进去的情况,影响工作进度,而且每次使用完都得关掉卡片机,所以就有必要写个清理磁盘的脚本,当卡片 ...

  8. Pythoner使用的豆瓣pip源

    主要示例: sudo pip install -i http://pypi.douban.com/simple/  flask-script Flask的扩展: flask-script是一个可以在f ...

  9. PytorchZerotoAll学习笔记(五)--逻辑回归

    逻辑回归: 本章内容主要讲述简单的逻辑回归:这个可以归纳为二分类的问题. 逻辑,非假即真.两种可能,我们可以联想一下在继电器控制的电信号(0 or 1) 举个栗子:比如说你花了好几个星期复习的考试(通 ...

  10. 我的Android进阶之旅------>解决Error&colon;Could not find property 'compile' on org&period;gradle&period;api&period;internal&period;artifacts&period;

    1错误描述 解决方法 1错误原因 2解决方法 1.错误描述 刚刚,Android Studio突然编译不了了,报了如下错误: Error:Could not find property 'compil ...