目录
- 1. 创建.NET 6.0 WebAPI项目
- 2. 修改Dockerfile文件
- 3. 发布项目
- 4. 把发布后的项目上传到linux服务器上
- 5. CentOS7安装Docker
- 6. 使用Docker部署 WebAPI
- 7. 日常运维
- 8. 问题整理
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 上通常需要执行以下步骤:
-
更新系统:
sudo yum update
-
安装 Docker 依赖:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加 Docker 社区版仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
安装 Docker:
sudo yum install docker-ce docker-ce-cli containerd.io
-
启动 Docker 服务:
sudo systemctl start docker
-
设置 Docker 开机自启动:
sudo systemctl enable docker
-
验证 Docker 是否安装成功:
sudo docker --version
以上步骤应该可以在 CentOS 7 上安装 Docker。安装完成后,您可以使用 Docker 命令来管理容器和镜像。
6. 使用Docker部署 WebAPI
- 进入到Dockerfile所在目录
cd /root/DemoWebAPI
- 构建镜像,build 参数用于 构建镜像,-t 参数用于 命名镜像,demooapi 为镜像名称,v1 为镜像版本 ,[ . ] 参数用于 构建镜像的目录。
docker build -t demoapi:v1 .
- 查看镜像
docker images
- 启动容器,-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
- 查看容器
docker ps -a
- 访问容器
curl localhost:9900/WeatherForecast
7. 日常运维
- WebAPI 更新 步骤
-
1.更新 /root/DemoWebAPI 目录下的文件(因为 docker 容器挂载了 /root/DemoWebAPI 目录,所以更新 /root/DemoWebAPI 目录下的文件后,不需要重新构建镜像,直接重启 docker 容器即可)
-
2.重启 docker 容器
docker restart demoapi
-
- 常用命令
- 查看容器日志
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. 问题整理
- 外网无法访问本地docker容器(可能是防火墙导致)
- 查看防火墙状态
systemctl status firewalld
- 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
- 重启docker服务
systemctl restart docker
- 查看防火墙状态