在Windows下使用Docker,我们选择DockerDesktop这个软件,非常方便。
06月27日 11:49
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。
Docker Desktop介绍及安装Docker Desktop是适用于Mac、Linux或Windows环境的一键安装应用程序,使您能够构建和共享容器化应用程序和微服务。它提供了一个简单的GUI(图形用户界面),允许您直接从机器管理容器、应用程序和图像。Docker Desktop既可以单独使用,也可以作为CLI的补充工具。Docker Desktop减少了在复杂设置上花费的时间,因此您可以专注于编写代码。它负责端口映射、文件系统问题和其他默认设置,并定期更新错误修复和安全更新。安装Docker Desktop后,默认安装了以下组件:
(资料图片)
Docker EngineDocker CLI clientDocker BuildxExtensionsDocker ComposeDocker Content TrustKubernetesCredential HelperDocker Desktop可与您选择的开发工具和语言配合使用,并使您能够访问Docker Hub中的大量认证图像和模板库。这使开发团队能够扩展他们的环境,以便使用安全的存储库快速自动构建、持续集成和协作。官网地址
项目编译发布项目运行框架为.net6.0,运行环境为linux-x64
Dockerfile内容及国内镜像源Dockerfile是用来构建docker镜像的构建文件,它其实就像一个脚本文件,里面可以执行一些命令,通过它就可以指定或下载构建的镜像所需要的一些组件,然后打包成镜像文件。下面是本教程使用的Dockerfile脚本文件内容,指定了使用asp.net6.0的运行时环境,并且在镜像系统的5000端口上提供http服务。同时更新sources.list使用国内镜像源,这里没有用阿里的镜像源,因为测试过程中阿里的镜像源在apt-get install -y libgdiplus的时候会提示找不到这个组件(坑)。因为使用的有基于System.Drawing绘制的验证码图片,所以需要在构建的时候把libgdiplus组件引用到镜像文件中,最后把镜像系统中的时区改成亚洲的时区。
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS baseWORKDIR /WhiteListEXPOSE 5000COPY . .RUN touch /etc/apt/sources.listRUN echo "" > /etc/apt/sources.list \ && echo "deb http://mirrors.163.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list \ && echo "deb http://mirrors.163.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list \ && echo "deb http://mirrors.163.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list \ && echo "deb-src http://mirrors.163.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list \ && echo "deb-src http://mirrors.163.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list \ && echo "deb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list \ && echo "deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib" >> /etc/apt/sources.list \ && echo "deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib" >> /etc/apt/sources.listENV TZ=Asia/ShanghaiRUN apt-get update -y #RUN apt-get upgrade -yRUN apt-get install -y libgdiplusRUN apt-get cleanRUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dllRUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezoneENV ASPNETCORE_URLS http://+:5000ENTRYPOINT ["dotnet", "WhiteList.dll"]
同时可以添加.dockerignore文件来排除一些不需要打包到镜像里的文件,比如忽略到bin或者obj目录里的文件。[b|B]in [O|o]bj
最后,千万不要忘记把wwwroot复制到发布的目录中,要不然访问的时候会没有样式。以上Dockerfile中的有些脚本命令可合并成一行。
把Dockerfile和.dockerignore文件复制到发布目录中,然后运行PowShell,cd命令到发布目录(本文使用目录为bin\Release\net6.0\linux-x64)。然后执行打包命令docker build --tag whitelist:1.0 .
如一切正常,按上图的进度执行完成后,就可以在Docker Desktop中看到打包的镜像文件。
Docker Desktop中的Linux系统我们点击镜像的运行按钮,填写好镜像名称,绑定端口(本机通过此端口用浏览器可以访问到容器内的服务),绑定的本地文件夹(可选)和其它参数(可选)后点击RUN按钮,如果没有端口冲突和名称冲突,就会得到一个运行成功的容器。我们可以进入到容器的操作系统中查看一下系统信息。
cat /etc/issue
Debian GNU/Linux 10
cat /proc/version
Linux version 5.15.90.1-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220)
现在我们已经得到了一个基于Docker Desktop在Windows系统上构建的镜像文件,在使用中,我们需要把这个镜像运行在Linux系统中(比如CentOS),所以需要把镜像导出来进行分发(这里使用的是本地导出,不是导出到云镜像服务器)。在Windows系统的PowerShell中执行下面命令,把镜像(whitelist):Tag名(1.0)导出到本地的d盘,文件名是whitelist.tar,docker save -o d:\whitelist.tar whitelist:1.0
首先安装一下Docker所依赖的组件yum install -y yum-untils device-mapper-persistent-data lvm2
然后配置数据源为国内的阿里云数据源yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Dockeryum install docker-ce
启动Dockersystemctl start docker
设置Docker为开机自启systemctl enable docker
查看Docker的版本信息docker --version
Docker version 24.0.2, build cb74dfc
查看当前Docker中的镜像docker images
这里看到,目前Docker中没有任何镜像
把镜像文件上传到/usr/data目录下,然后执行导入镜像的命令docker load -i /usr/data/whitelist.tar
导入成功后,再查看Docker中的镜像,就会看到我们刚导入的镜像文件了。
随后我们执行运行镜像的命令,把CentOS系统的8080端口和容器的5000端口做映射。docker run -d -p 8080:5000 --name whitelist whitelist:1.0
运行成功后会返回一个类似GUID的容器编号,然后我们可以查看一下当前运行的容器。docker ps
如果防火墙没有放行8080端口,可用以下命令放开8080端口。firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
最后我们本机打开浏览器访问CentOS系统的IP并带上8080端口,就可看到我们从Windows上打包的Docker镜像已经成功运行在了CentOS系统的Docker环境下了。
关键词:
在Windows下使用Docker,我们选择DockerDesktop这个软件,非常方便。
06月27日 11:49
根据《中央生态环境保护督察工作规定》《上海市生态环境保护督察工作规
06月27日 11:45
【时政】十四届全国人大常委会第三次会议在京举行,审议无障碍环境建设
06月27日 11:50
此前加图索收到了几支沙特球队的邀请,最终在竞争中利雅得新月赢得了胜
06月27日 11:54
根据市场公开信息整理,亚香股份(301220)于6月27日将有2303 63万股限
06月27日 11:48
中国船舶工业行业协会近日发布今年1-5月船舶工业经济运行情况。1-5月,
06月27日 11:57
今天,大学路小编为大家带来了扬州公办中专学校2023分数线扬州大学专转
06月27日 11:59
6月26日,红星新闻记者从山东费县“遭前夫婚内投毒案”当事女医生刘畅
06月27日 11:51
每经AI快讯,据紫光股份官微6月26日消息,近日,权威评测机构中国信通
06月27日 11:52
6月26日下午,以赓续红色血脉,展示老兵风采为主题的庆“七一”诗歌
06月27日 11:40
金融界6月26日消息九洲药业公告,控股子公司浙江九洲生物医药有限公司
06月27日 11:59
中国石化新闻网讯近期,江汉油田清河采油厂CX12井实施打塞补孔酸化
06月27日 11:48
如果你要买一台MPV,一定绕不开广汽传祺。过去6年,广汽传祺已陆续
06月27日 12:00
高合需要撕掉“土豪”标签,高合,宾利,劳斯莱斯,上海车展
06月27日 11:40
如果想买一款36万左右大众7座中大型SUV车型,很多人纠结怎么选择才不后
06月27日 11:52
摘要23日,2021微笑天使全国总决赛落下帷幕。来自中南·山海壹品的格日
06月27日 11:50
根据中考招生工作安排,6月28日将公布成绩,并开始填报志愿。6月28日10
06月27日 11:59
为了增强全民爱国意识,打造民众爱国情怀,了解国家发展历程,听党话、
06月27日 11:51
中金公司指出,预计下半年光伏玻璃呈现单月供应紧张情况,价格上涨叠加
06月27日 11:58
咸鸡腌制4天可以晾晒了。做咸鸡腌制的时间太长,腌制时温度过高导致肉
06月27日 11:32
2022年,全省法院共受理各类毒品犯罪案件701件,同比下降43 6%;判决毒
06月27日 11:35
《变形金刚:超能勇士崛起》首次引入巨无霸阵营,影片中,巨无霸在地球
06月27日 11:51
在福岛核污染水处置问题上,日方有义务采取一切措施避免污染环境,有义
06月27日 11:56
6月下旬,省统计局公布山西经济运行情况:1-5月,山西工业生产平稳增长
06月27日 11:37
每经AI快讯,有投资者在投资者互动平台提问:贵司的产品可以用于光模块
06月27日 11:51
据上海钢联数据显示,电池级碳酸锂均价较上日下跌0 10万元 吨,报31 40
06月27日 11:31
为提升大朗荔枝品牌知名度、辨识度和影响力,推进大朗荔枝产业的发展,
06月27日 11:47
你知道硬盘是什么意思吗?随着网络的快速发展,促使了许多新名词的出现
06月27日 11:42
在“能耗双控”和“双碳”背景下,节能政策逐渐趋紧,业务需求日益
06月27日 11:55
北京国安首发:1-侯森;4-李磊、24-杨帆、22-于大宝、28-姜涛;23-李可
06月27日 11:55