目录

1. 创建.NET 6.0 WebAPI项目

2. 修改Dockerfile文件

  • 修改前

  • 修改内容

     # 使用官方的 .NET 6.0 SDK 镜像作为基础镜像
     FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
     
     # 暴露端口
     EXPOSE 9900
     
     # WORKDIR 镜像的工作目录
     WORKDIR /app
     
     # 复制文件
     COPY . .
     
     # 定义启动命令
     ENTRYPOINT ["dotnet", "DemoWebAPI.dll"]
    
  • 修改后

  • 设置Dockerfile文件 为 始终复制

3. 发布项目

  • 发布项目






4. 把发布后的项目上传到linux服务器上

  • 使用 Xftp7 上传文件

5. CentOS7安装Docker

安装 Docker 在 CentOS 7 上通常需要执行以下步骤:
  1. 更新系统:

    sudo yum update
    
  2. 安装 Docker 依赖:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 添加 Docker 社区版仓库:

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  4. 安装 Docker:

    sudo yum install docker-ce docker-ce-cli containerd.io
    
  5. 启动 Docker 服务:

    sudo systemctl start docker
    
  6. 设置 Docker 开机自启动:

    sudo systemctl enable docker
    
  7. 验证 Docker 是否安装成功:

    sudo docker --version
    

以上步骤应该可以在 CentOS 7 上安装 Docker。安装完成后,您可以使用 Docker 命令来管理容器和镜像。

6. 使用Docker部署 WebAPI

  1. 进入到Dockerfile所在目录
    cd /root/DemoWebAPI
    
  2. 构建镜像,build 参数用于 构建镜像,-t 参数用于 命名镜像,demooapi 为镜像名称,v1 为镜像版本 ,[ . ] 参数用于 构建镜像的目录。
    docker build -t demoapi:v1 .
    
  3. 查看镜像
    docker images
    
  4. 启动容器,-d 参数用于 启动容器,-p 参数用于 映射主机的 9900 端口到容器的 80 端口, --name 参数用于指定 容器名称为 demoapi,demoapi:v1 参数用于指定 镜像名称为 demoapi:v1,-v 参数用于 映射主机的 /root/DemoWebAPI 目录到容器的 /app 目录( app 是dockerfile 中的 WORKDIR)。
    docker run -p 9900:80 --name demoapi -v /root/DemoWebAPI:/app -d demoapi:v1
    
  5. 查看容器
    docker ps -a
    
  6. 访问容器
    curl localhost:9900/WeatherForecast
    

7. 日常运维

  1. WebAPI 更新 步骤
    • 1.更新 /root/DemoWebAPI 目录下的文件(因为 docker 容器挂载了 /root/DemoWebAPI 目录,所以更新 /root/DemoWebAPI 目录下的文件后,不需要重新构建镜像,直接重启 docker 容器即可)

    • 2.重启 docker 容器

      docker restart demoapi
      
  2. 常用命令
    • 查看容器日志
      docker logs demoapi
      
    • 查看容器状态
      docker ps -a
      
    • 停止容器
      docker stop demoapi
      
    • 删除容器
      docker rm demoapi
      
    • 删除镜像
      docker rmi demoapi:v1
      
    • 进入容器
      docker exec -it demoapi bash
      
    • 退出容器
       ctrl + p + q
      
    • 停止并删除所有容器
      docker stop $(docker ps -a -q)
      docker rm $(docker ps -a -q)
      

8. 问题整理

  1. 外网无法访问本地docker容器(可能是防火墙导致)
    • 查看防火墙状态
      systemctl status firewalld
      
    • 关闭防火墙
      systemctl stop firewalld
      systemctl disable firewalld
      
    • 重启docker服务
      systemctl restart docker