windows篇
1.首先打开VS2019新建一个项目,这里我们创建一Web应用程序
![](https://i-blog.csdnimg.cn/blog_migrate/338d15459da692371add01c4bc9be55a.png)
然后注意勾选上Docker支持,这里忘了选也没关系,在解决方案里右键点击项目名称,点击添加,一样可以添加Docker支持,注意需要先安装DockerDesktop。Windows下安装DockerDesktop就不多做介绍了,官网下载exe文件,安装就好。
注意:Windows家庭版无法安装Docker,安装Docker需要Hyper-V的支持,家庭版不包含此组件。
![](https://i-blog.csdnimg.cn/blog_migrate/453f6c31c5d9b825f671003db5b8855a.png)
2.项目创建好之后,如果已经添加了Docker支持,则在项目下能看到一个Dockerfile文件。
替换为以下内容
# 添加基础镜像
FROM microsoft/dotnet:2.2-aspnetcore-runtime
#容器中系统的工作目录
WORKDIR /Publish
#拷贝当前文件夹下的文件到容器中系统的工作空间
COPY . /TestDocker
#设置Docker容器对外暴露的端口
EXPOSE 80
#设置时间为中国上海
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#容器中使用 ["dotnet","系统启动的dll"] 来运行应用程序
ENTRYPOINT ["dotnet", "TestDocker.dll"]
参数说明:
FROM -指定所创建镜像的基础镜像
WORKDIR-配置工作目录
EXPOSE-声明镜像内服务监听的端口
COPY-复制内容到镜像
ENTRYPOINT-启动镜像的默认人口命令
3.发布项目
![](https://i-blog.csdnimg.cn/blog_migrate/61b5493490d9a3398406401a9e1cf81a.png)
这里为什么选择框架依赖,而不是独立呢,其实是Docker中已经有对dotnetcore的支持,直接拉取dotnet core runtime ,然后就可以在这上面运行了,还有一点就是选择独立发布的话,发布的项目比较大。
可以把发布后的文件单独放到一个文件夹里。接下来就是执行docker命令来创建镜像并启动项目了。
首先需要拉取dotnetcore2.2的runtime,命令如下。
docker pull microsoft/dotnet:2.2-aspnetcore-runtime
![](https://i-blog.csdnimg.cn/blog_migrate/2d6e44460645af164a4780f3bd783204.png)
然后可以看一下有哪些镜像已经存在了。
docker iamges
接着进入咱们的发布后的文件夹。
执行docker build命令创建镜像
docker build -t testdocker .
参数说明:-t 指定容器名称 . 在当前目录上下文寻找dockerfile文件
![](https://i-blog.csdnimg.cn/blog_migrate/c84551bb4edcc2a3d409d7fff0c23db5.png)
然后就要启动容器了
docker run --name testdocker -d -p 50879:80 testdocker
参数说明:
-d ,表示在后台以守护态(daemonized)形式运行容器
-p 外部端口与内部容器端口映射。
--name 指定容器的名称。当然可以不指定,默认会为我们创建
最后一个参数 testdocker就是我们刚创建的镜像名称
![](https://i-blog.csdnimg.cn/blog_migrate/69266b219bcd7a1aa462c49d8721b1c6.png)
可以用
docker ps -a
查看所有的容器。
docker ps
可以查看运行中的容器
最后在浏览器输入, http://localhost:50879/,就可以看到正在运行的项目了
![](https://i-blog.csdnimg.cn/blog_migrate/6ae480d040f81595ca802bdceb9a5dda.png)
centos篇
Linux上部署docker 和windows基本一样,首先我们把我们发布后的文件上传到linux上,我这里用的是Hyper-v的虚拟机里装的CentOS8,上传用的cmder工具下的命令上传。
具体内容我会放到另一篇文章中详细讲解,上传文件到hyper-v中的centos
查看IP地址(linux命令),以下两个命令都可以
ifconfig
ip addr
上传文件到centos
scp publish.zip root@172.17.44.203:/home/myname/Public
登录centos可以看到文件已经过来了
![](https://i-blog.csdnimg.cn/blog_migrate/08c5e6a6fadf998df4fe7f531d82d6e8.png)
之后的命令基本和windows下一样了。
首先要拉取dotnetcore2.2的运行时
docker pull microsoft/dotnet:2.2-aspnetcore-runtime
创建镜像
docker build -t testdocker .
![](https://i-blog.csdnimg.cn/blog_migrate/0cd96079453d58cab6c822b8d1f3f795.png)
然后启动容器
docker run -d -p 50879:80 testdocker
![](https://i-blog.csdnimg.cn/blog_migrate/2842ca702f934ffd5935f1b636a4ea95.png)
可以看到我们的项目已经启动了。
![](https://i-blog.csdnimg.cn/blog_migrate/accce2b7a26778f46f352347d0161944.png)