在上一个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

把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. 六、.net core (.NET 6)程序部署到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. ADO.NET操作SQL Server:数据库操作类(已封装)

    1.增.删.改通用方法 /// <summary> /// 增.删.改通用方法 /// </summary> /// <param name="commandT ...

  2. JAVA异常的最佳工程学实践探索

    此文已由作者占金武授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 先说明一下背景: 项目日志中的Exception会被哨兵统一监控并报警 比较多的项目基于dubbo在做服务化 ...

  3. Linux基础命令(一)

    Linux语法命令 [选项] 参数注意:[]内容是对命令的扩张1.命令中单词之间空格隔开2.单行命令最多256个字符3.大小写区分 clear 清屏pwd 查看当前目录cd 切换目录    .表示当前 ...

  4. [转] FFmpeg常用基本命令

    [FFmpeg]FFmpeg常用基本命令 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpe ...

  5. String 源码浅析————终结篇

    写在前面 说说这几天看源码的感受吧,其实 jdk 中的源码设计是最值得进阶学习的地方.我们在对 api 较为熟悉之后,完全可以去尝试阅读一些 jdk 源码,打开 jdk 源码后,如果你英文能力稍微过得 ...

  6. js01--简介、注释、数组、对象、null与undefined

    javascript简介:js,轻量级的脚本语言,插入HTML页面中,用来实现网页的动态交换. 1.js的使用: 写入HTML输出:document.write("<p>This ...

  7. allure报告定制(pytest+jenkins)

    环境及安装可查看 pytest+jenkins安装+allure导出报告 要让allure报告更漂亮,更直观,需要在脚本中写入allure特性 一开始allure调用step().story().fe ...

  8. Java switch函数

    switch()函数中能放置的值为:byte,short,char,int,string,enum类型或者byte,short,char,int的包装类,其中,string类型是java7(含)之后才 ...

  9. solr 服务搭建

    1.  linux 中 安装jdk,  tomcat, 2. 下载 solr-4.10.3.tgz.tgz 并解压 解压后文件夹:solr-4.10.3 3. 将 solr-4.10.3/dist 下 ...

  10. C基础《一》

    puts("第一个C语言程序输出了") C语言的编译和链接过程 C语言写的代码必须经过编译生成可执行文件才可以用, 编译就是把C语言写的代码进行识别,转换成计算机能够识别的二进制形 ...