windows篇
1.首先打开VS2019新建一个项目,这里我们创建一Web应用程序

然后注意勾选上Docker支持,这里忘了选也没关系,在解决方案里右键点击项目名称,点击添加,一样可以添加Docker支持,注意需要先安装DockerDesktop。Windows下安装DockerDesktop就不多做介绍了,官网下载exe文件,安装就好。
注意:Windows家庭版无法安装Docker,安装Docker需要Hyper-V的支持,家庭版不包含此组件。

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.发布项目

这里为什么选择框架依赖,而不是独立呢,其实是Docker中已经有对dotnetcore的支持,直接拉取dotnet core runtime ,然后就可以在这上面运行了,还有一点就是选择独立发布的话,发布的项目比较大。
可以把发布后的文件单独放到一个文件夹里。接下来就是执行docker命令来创建镜像并启动项目了。
首先需要拉取dotnetcore2.2的runtime,命令如下。
docker pull microsoft/dotnet:2.2-aspnetcore-runtime

然后可以看一下有哪些镜像已经存在了。
docker iamges
接着进入咱们的发布后的文件夹。
执行docker build命令创建镜像
docker build -t testdocker .
参数说明:-t 指定容器名称 . 在当前目录上下文寻找dockerfile文件

然后就要启动容器了
docker run --name testdocker -d -p 50879:80 testdocker
参数说明:
-d ,表示在后台以守护态(daemonized)形式运行容器
-p 外部端口与内部容器端口映射。
--name 指定容器的名称。当然可以不指定,默认会为我们创建
最后一个参数 testdocker就是我们刚创建的镜像名称

可以用
docker ps -a
查看所有的容器。
docker ps
可以查看运行中的容器
最后在浏览器输入, http://localhost:50879/,就可以看到正在运行的项目了

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可以看到文件已经过来了

之后的命令基本和windows下一样了。
首先要拉取dotnetcore2.2的运行时
docker pull microsoft/dotnet:2.2-aspnetcore-runtime
创建镜像
docker build -t testdocker .

然后启动容器
docker run -d -p 50879:80 testdocker

可以看到我们的项目已经启动了。
