.Net Core3.1 使用Docker 部署在Centos 7

以前一直很好奇docker是个什么玩意,今天终于闲下来去玩一下了,关于docker的介绍以及优点介绍,相信大家都有去看过一点文章,我是通过这篇文章了解到docker,里面的作者也有写一系列的教程,大家可以去看看https://www.cnblogs.com/ityouknow/category/1173004.html

接下来就是实战了:

安装 docker (1.安装docker,2.启动docker服务 3.开机自动启动docker服务) 

1 yum install docker     
2 systemctl start docker.service
3 systemctl enable docker.service

    检查是否安装正常,显示出版本就证明可以了:

docker -v

   .Net Core3.1 使用Docker 部署在Centos 7

创建项目

   随意创建一个mvc网站项目

.Net Core3.1 使用Docker 部署在Centos 7

本地发布验证程序是否运行正常,并且Dockerfile属性要设置为 始终复制

.Net Core3.1 使用Docker 部署在Centos 7

   .Net Core3.1 使用Docker 部署在Centos 7

  

  ps:默认启动端口是5000,可以修改appsetting.json文件,添加urls节点指定启动端口 例如: urls:"http://*8068"   。还有其他指定端口方法和原理,参考:https://www.cnblogs.com/cgyqu/p/12169014.html

 这里由于我的服务器5000已经有了,所以改成8068

  运行正常

修改Dockerfile文件

    由于我们已经自己生成发布了在本地了,而vs帮我们自动生成的文件里面,包含了生成->发布->运行,所以这里,我们只需要运行的命令就行

    修改为:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

   dockerfile文件指令说明:

  • FROM -指定所创建镜像的基础镜像
  • WORKDIR-配置工作目录
  • EXPOSE-声明镜像内服务监听的端口 (可以不写,因为我们具体映射的端口可以在运行的时候指定)
  • COPY-复制内容到镜像   (. .代表当前目录)
  • ENTRYPOINT-启动镜像的默认人口命令

打包到服务器

    这里我们使用MobaXterm或者xftp等工具上传上去:

构建镜像

    1.进入程序目录,先验证下程序能否启动和访问 

     .Net Core3.1 使用Docker 部署在Centos 7

       访问正常,关闭网站,开始构建镜像:

       进入当前程序目录,输入构建命令   

docker build -t mytest-mvc .

                .Net Core3.1 使用Docker 部署在Centos 7

      参数解释:

  •          -t  --指定镜像名称 (只能小写)
  •          .   --表示build上下文为当前目录,默认情况docker会使用上下文的根目录找到Dockerfile文件

           

      查看构建的镜像

docker images

         .Net Core3.1 使用Docker 部署在Centos 7

        

创建并启动容器 

docker run --name myfirstWeb  -d -p 8041:8068  mytest-web

docker ps -a

    参数解释:

     --name 表示容器名称(区分大小写),也可以不指定,默认会生成

     -d         表示在后台以守护形式运行容器

     -p         表示外部端口与内部容器端口映射。关于-p的还有其他用法(https://www.cnblogs.com/williamjie/p/9915019.html)

    mytest-web 是我们刚才创建的镜像名称

查看是否启动成功

 .Net Core3.1 使用Docker 部署在Centos 7

 最后去我们本地访问

  .Net Core3.1 使用Docker 部署在Centos 7

遇到的问题:

     1.dockerfile里面指定了EXPOSE 暴露端口,发现最终容器启动的时候内部还是用的配置文件里面那个ulrs里面的端口,可以使用docker logs 容器名 查看启动日志

     2.如果部署成功但发现访问不了,一般都是防火墙问题

     3.在删除容器后,重新添加发现会ip冲突或者其他错误,直接重启一下docker

其他常用命令:

docker logs  容器名称
docker attach 容器名称或容器ID
docker exec -it 59ec /bin/bash  (如果提示“/bin/bash 未找到”之类的 可以改成:docker exec -it 59ec sh,退出ctrl+d)
docker stop 容器ID或容器名
docker kill 容器ID或容器名
docker rm 容器ID或容器名
systemctl restart docker

 全部命令: https://www.runoob.com/docker/docker-rmi-command.html

参考文章:https://www.cnblogs.com/ityouknow/category/1173004.html

相关推荐