在上一个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会看到标题背景颜色和标题有了变化

而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

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

docker logout

转载于:https://www.cnblogs.com/shenba/p/7679562.html

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

  1. 六、.net core (.NET 6)程序部署到Docker上

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

  2. 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 将微服务运行在Docker上

    文章目录 将微服务运行在Docker上 使用Maven插件构建Docker镜像 使用Maven插件读取Dockerfile进行构建 将插件绑定在某个phase执行 参考 源代码 将微服务运行在Dock ...

  3. 得到最好的两个worlds-让Android应用程序运行在PC上

    得到最好的两个worlds-让Android应用程序运行在PC上! Android应用程序,自从其推出以来,一直很受欢迎,毫无疑问,他们的瘾,使我们能够在其他平台上运行它们.我们当然喜欢运行Andro ...

  4. 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动

    http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...

  5. 3D程序运行在服务器上 VirtualGL

    概念理解 现在 GPU是手机必备,因为要玩3D游戏,没有GPU 的手机,玩3D游戏能力就受限了 如果能把3D运行在服务器上,在把渲染的图片返回给客户端,问题就解决了 VirtualGL正是这么个东西, ...

  6. 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包

    假设你已经准备好以下东西,即可进行服务部署 一台安装好docker的linux服务器(安装docker见安装docker) 准备好的jar包 接下来开始吧! 将jar包上传至服务器(建好文件夹存放以方 ...

  7. 程序运行 栈帧分析 以及 修改栈帧中数据以及函数地址

    1 在栈帧中 修改函数调用地址 使得程序运行 跳转到 自己指定的函数 而原程序的作者完全不知道这段程序的执行中已经执行了别人的代码[可能是恶意的] 2 修改栈帧中的变量的值 不通过变量名 如 修改变量 ...

  8. docker上部署nginx容器80端口自动转443端口

    拉去nginx镜像 # docker pull nginx 运行nginx容器config用于拷贝nginx配置文件 # docker run --name nginxconfig -d docker ...

  9. docker 基础命令 ,容器存为镜像,载入镜像,生成容器

    导入镜像 docker load < images.tar.gz 创建容器 docker run -itd --shm-size=64G --privileged=true -v /home:/ ...

最新文章

  1. javascript之浏览器调试
  2. 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
  3. Python入门教学之(标识符和保留字)
  4. 【转】Jenkins怎么启动和停止服务
  5. 金融行业的BI应用分析
  6. python用def编写calsum函数_python高阶函数——返回函数(闭包)
  7. 2015年自然语言处理实证方法会议(EMNLP)简介
  8. 夜间红外图像行人检测学习笔记
  9. mongodb意外断电,非正常关闭, 造成不可启动, 日志出现WT_ERROR: non-specific WiredTiger error, terminating
  10. uniapp 图片生成
  11. Docker:Unable to find image ‘mysql:latest‘ locally
  12. 瑞吉外卖项目剩余功能补充
  13. K-means算法及文本聚类实践
  14. Java 实现回文数
  15. Android控件 SeekBar
  16. 电子元器件简介——三极管篇
  17. Foundation5(十五)
  18. 2021年中式烹调师(初级)免费试题及中式烹调师(初级)考试技巧
  19. 京东首页之页面主体、配送方式
  20. 一般梯度、随机梯度、相对梯度和自然梯度

热门文章

  1. A wizard’s guide to Adversarial Autoencoders: Part 3, Disentanglement of style and content.
  2. 采用SwipeFreshLayout+Recyclerview实现下拉刷新和上拉加载更多以及CoordinatorLayout的引入
  3. jquery queue ajax,如何通过jQuery和Queue发送ajax请求?
  4. spark 写tidb_优秀的数据工程师,怎么用Spark在TiDB上做OLAP分析
  5. JZOJ 5933. 【NOIP2018模拟10.27】百鸽笼
  6. Hdu 1754 . I Hate It
  7. sql去除空值_SQL汇总分析
  8. 20201125 《计算感知》武老师 第1节课 笔记
  9. 计算机视觉 - 知识点总结(面试、笔试)
  10. linux 没有线程的,,Linux 到现在还是没有线程呀?