分享好友 最新资讯首页 最新资讯分类 切换频道
记一次IDE的Docker插件实战(Dockfile篇)
2024-12-28 10:31

本部分主要根据IDEA的Docker插件实战(Dockerfile篇)_程序员欣宸的博客-CSDN博客_idea编写dockerfile一文所述内容进行实践,并对其中遇到的问题进行解答,从而串接多个知识点。

在Intellij中,Dockfile只能自己创建并编写,并没有什么工具会帮你自动生成,这一点和.NET平台下的工具不同,需要注意。Dockfile的编写主要是了解语法,还需要选择合适的基础镜像。语法课参考这篇文章

Docker Dockerfile | 菜鸟教程 (runoob.com)

镜像选择需要自行前往Dockerhub进行镜像查找,网址为

Docker Hub Container Image Library | App Containerization

docker image是什么,存储在什么位置。 - chinaxuzw的日志 About云开发-梭伦科技 - (aboutyun.com)

Docker镜像分层 - 知乎 (zhihu.com)

在上述文章中详细解释了Docker中镜像是如何分层、如何构建的,理解了这些也就明白了为什么Dockfile中要尽可能少些语句或多条语句合并成一条语句,都是为了降低打包后的镜像大小。

如果按照前言中文章的指南一步步操作,应该不会有其他问题,除了显示的时区不对。时区不对的根源是容器中的时区为UTC,宿主机时间为CST,相差了8小时。具体方法参考

Docker容器时间与宿主机时间不一致的问题 - 人艰不拆_zmc - 博客园 (cnblogs.com)

这里边可能会涉及进入容器的问题,因为本文使用的基础镜像为alpine,进入容器不是正常的,而是进入。

VS对Docker的支持仅限于.NET Core项目,这一点需要留意。VS中的Docker插件功能和IDEA中完全不一样:VS要求当前主机必须安装Docker,制作的镜像只推送到本机的Docker。而VS的使用者大多数都用的是Windows系统,这就意味着当前主机得开启一套虚拟环境以运行Windows版本的Docker,大概需要2G的内存占用。IDEA充分利用了Docker的远程访问功能,所以对本机的要求很低。VS中也可以把镜像打包后推送到远程Docker服务器,但是需要开启服务器Docker的Registry功能,相当于得部署一套私有的Docker仓库。

在创建.NET Core工程时,如果勾选了Docker支持,那么VS会自动创建Dockfile。当然如果项目创建初期没有添加,后面也可以通过右击工程,选择“添加”,再选择“添加Docker”支持来创建(如果没有该选项,大概率是安装VS的时候少勾选了相关容器组件)。如果对Docker很熟悉,也可以完全自行创建,当然最好是先利用VS创建一个基础的Dockfile,然后自行添加或删除一些内容。

所谓的Registry功能就是在服务器上使用Docker官方提供的Registry镜像创建一个容器,外部程序通过HTTP/HTTPS协议和Registry容器交互,从而推送或拉取镜像。创建步骤可以参考该链接

部署注册表服务器| Docker文档 (xy2401.com)

上步所述的操作可以让本机的应用程序推送镜像,但如果希望外部系统也能操作,那么就需要进行相关配置。如果是有域名证书的伙伴,那么配置外部访问非常容易,直接参照上节的链接描述来做就行。但是很多情况下我们是局域网操作,只想通过HTTP协议访问Registry,那么我们在远程服务器上创建容器时就不能指定证书,同时客户端的机器上需要添加对该远程Docker的信任,具体可参考

测试不安全的注册表| Docker文档 (xy2401.com)

配置HTTP访问

以上内容简单解释一下。先使用下述指令创建Registry服务

 

运行此条指令后创建的registry容器就是不指定证书的,此时外部系统可以通过访问http://192.168.x.x:5000来操作该容器,而且无需用户名和密码。

配置HTTPS访问

那么如果我想要添加用户名和密码呢?这时候就需要配置TLS,开启服务器认证

 

通过以上操作,服务端算是配置好了,所有的访问请求必须通过HTTPS协议,服务端收到请求后把自签名证书发给客户端。

客户端配置以信任服务端证书

这时候问题就来了,因为是自签名证书,客户端不认,会报错,所以需要客户端信任该证书。

如果客户端是Windows系统,信任证书很容易操作:将服务器上的domain.crt文件拷贝到客户端,直接双击安装证书,下面贴几张安装证书的图。

请务必按照上图的方式导入到“根证书颁发机构”,否则客户端还是无法进行证书认证!此时通过下述指令便可登陆成功

 

如果客户端是Linux主机,需要将服务器的证书文件服务到当前主机的目录下,在这里就是192.168.x.x。

服务端启用用户名密码验证

服务端启用用户名密码验证的前提是已经配置了HTTPS访问,所以这一步写在最后

 

和上一节相比,本节创建容器的过程多了3个变量用于开启访问认证。这里有必要解释下第一步创建认证文件的意图。

是一个创建认证文件的组件,可以在宿主机上直接安装该组件,也可以像Docker官方提供的文档中介绍的那样,通过创建一个的容器并运行来创建认证文件。注意这里传入的参数是,也就是使用bcrypt加密,加密强度更高。如果不加,默认就是MD5加密。Registry组件内部使用的是bcrypt加密方式,所以创建认证文件必须传入参数。

有了认证文件,在创建容器时就需要指定认证文件的地址,因此需要将宿主机的带有认证文件的目录挂载到容器上。此时再登陆Docker,就需要以下指令

 
 

以上扯了那么多的主要原因还是VS下的Docker插件不好用,而且使用发布功能推送镜像时必须通过HTTPS访问。那下面来看看如何推送镜像

  1. 右击项目,选择“发布”
  2. 发布目标选择“Docker容器注册表”
  3. 特定目标选择“其他Docker容器注册表”。这里插一句,如果不要求私密性,只是为了学习,那么直接发布到DockerHub就好了,上述内容统统不用关心。我们这里主要谈的是发布到私有仓库,所以才需要配置那么多。
  4. 注册表URL输入:192.168.x.x:443
  5. 输入用户名(如果设置
  6. 输入密码(如果设置
  7. 点击完成

顺利的话,我们会看到VS提示镜像已上传成功。如何确认服务器上的确有镜像呢


最新文章
www.435200.com的百度排名情况
a href="https://baidurank.aizhan.com/" target="_blank"img src="https://baidurank.aizhan.com/api/mbr?domain=www.435200.co
网站建设小程序开发/谷歌优化排名怎么做
什么是朴素贝叶斯?是一种基于贝叶斯定理和特征条件独立假设的分类方法,即对于给定的训练数据集,首先基于特
深入解析SEO优化交流,助力网站流量爆发!
如何选择关键词?要对目标市场进行深入的分析。了解用户的搜索习惯,他们的痛点和需求。可以通过搜索引擎的自动推荐、百度指数等
河南百度SEO卓越优化,开启企业互联网营销新
河南百度SEO推广优化服务,专注提升企业网络营销效果,助力企业打开互联网营销新局面,实现线上业务增长。随着互联网的飞速发展
Type-C到底强在哪?了解USB接口的发展史,看这一篇就够了
USB接口可能是这个世界最通用的接口之一,已有24年历史,我们大多数人见证了从USB 2.0规范到如今USB 3.2规范的蜕变,也目睹了一
海南州仪表校准<2024新+排名一览>
海南州仪表校准2024新+排名一览华南区实验室地址:东莞市道滘镇厚德村上梁洲工业区四横路华东区实验室地址:江苏省昆山经济技术
高清美女写真制作如何一步到位?教你用AI工具轻松生成无瑕疵美图!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=0
二、策划案写作特点及优势
策划案写作是一款利用人工智能技术,自动生成各类策划文案的智能工具。它可以按照客户输入的关键词、主题和需求,快速生成结构清
第75章 格温变异的原因(周末愉快)
尤伯系吸血鬼……这是什么?格温微微一愣,看向柯克,希望后者能够稍微解释一下。“吸血鬼……难道不一样吗?”“当然。”柯克笑
淘宝店铺收藏链接怎么添加(详解淘宝店铺如何提高收藏)
淘宝收藏能对店铺有基础权重加持,也能帮助淘宝商家做好上新、活动等推广促销的宣传,那么淘宝店铺收藏链接要怎么添加呢? 电脑端