Docker是现在比较流行的开源容器引擎,有了它让我们部署和维护系统更加方便,它 本质上是一个精简版的linux系统,所以它支持.NET跨平台部署。.NET6是微软最新发布的.NET版本,跟前面版本相比速度更快、支持热更新、支持http3等特征。本文介绍如何把.NET 6快速部署到Docker,只需要三个步骤。.
第一步 .NET项目准备
首先新建一个.NET6的项目,创建项目时,在“其他信息”选项中选择“启用Docker”。创建项目后会自动生成一个Dockerfile文件,这个文件就是创建Docker镜像的配置文件。Dockerfile文件也是必要条件,微软官方已经给你配置好了,文章后面有说明。
如果要在windows环境下预览这个项目的话,需要注释掉Properties文件夹下launchSettings.json文件里的docker支持。如下
//,
//"Docker": {
// "commandName": "Docker",
// "launchBrowser": true,
// "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
// "publishAllPorts": true,
// "useSSL": true
//}
第二步 执行生成镜像命令
把创建好的项目文件(是整个项目)用工具拷贝到装有Docker-ce环境下的centos网站文件夹下。并cd进入这个文件夹。执行如下命令:
docker build -t imagesname:1.0 .
结果会提示成功信息:
这个过程主要是根据Dockerfile文件的配置生成项目并copy到docker创建名为imagesname、版本号为1.0的镜像。
这有两个,一个是未加版本号的,一个是加了版本号创建的。
第三步 执行命令创建网站容器
镜像创建完成后就可以创建并运行容器了。默认是80端口,我们这里指定外网访问5000端口(-p 5000:80),容器名称是mycontaintest1(--name=mycontaintest1),镜像是imagesname1.0版本(imagesname:1.0)
docker run --name=mycontaintest1 -p 5000:80 -d imagesname:1.0
这样我们通过三步完成了把.NET6部署到Docker上了,我们还可以使用Nginx对它做反向代理供外网访问,大家可以尝试一下。
我们来看看效果:
注意:必须Docker环境和Centos端口环境没有问题的情况下部署,否则会走很多弯路哦。
Docker相关知识点
3、run 创建一个新的容器并运行一个命令
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口
实例
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest