docker28.04部署.net8应用程序
Ubuntu 24.04 安装 Docker
1. 准备工作
-
卸载旧版本 Docker(如有):
sudo apt remove docker docker-engine docker.io containerd runc -
更新系统包:
sudo apt update sudo apt upgrade -y
2. 安装依赖工具
安装添加 Docker 仓库所需的前置软件包:
sudo apt install -y ca-certificates curl gnupg
3. 添加 Docker GPG 密钥
添加 Docker 的官方 GPG 密钥以确保软件包来源的安全性:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
4. 添加 Docker 软件源
将 Docker 官方仓库添加到系统软件源中:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
noble stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. 安装 Docker 引擎
更新软件包索引并安装 Docker:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
6. 验证安装
-
运行测试容器:
sudo docker run hello-world如果显示
Hello from Docker!,则说明安装成功。 -
查看 Docker 版本:
docker --version
7. 配置 Docker
-
设置开机启动:
sudo systemctl enable --now docker -
允许普通用户使用 Docker:
sudo usermod -aG docker $USER newgrp docker -
配置镜像源(可选,推荐配置国内镜像源以加速下载):
编辑/etc/docker/daemon.json文件,添加以下内容:{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] }保存后重启 Docker 服务:
sudo systemctl daemon-reload sudo systemctl restart docker
8. 常见问题解决
- GPG 密钥错误:如果遇到
NO_PUBKEY错误,可以运行以下命令:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的密钥ID> - 网络连接问题:确保系统可以访问 Docker 官方仓库:
curl -I https://download.docker.com
按照以上步骤,您应该可以在 Ubuntu 24.04 上成功安装并配置 Docker。
docker 镜像加速
登录阿里云》https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors》镜像加速

上面的图片 拷贝粘贴即可
安装 docker-compose
如果安装的 是docker 28.04,会自动安装 docker compose,查看docker compose 的版本 docker compose version 而不是 docker-compose --version ,后者需要执行下载docker-compose(下载地址https://github.com/docker/compose/releases)放到 /usr/local/bin/目录下(太麻烦了,没必要),一般直接用前者自动和docker一起安装的docker compose 就行。
构建
构建镜像netcore8.0
Dockerfile如下
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
COPY . /app
EXPOSE 180/tcp
RUN mv sources.list /etc/apt/ && apt-get update -y
RUN apt-get install -y ttf-mscorefonts-installer && apt-get clean && apt-get autoclean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
# 时区设置
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#RUN apt-get install net-tools -y
RUN apt-get update && apt-get install curl -y
CMD ["sh","run.sh"]
# CMD ["dotnet","xxxxxx.dll"]
# ENTRYPOINT [ "dotnet", "/app/TodoService.dll" ]
独立出 run.sh CMD ["sh","run.sh"] 的原因是,多项目共用netcore8.0镜像,netcore8.0的构建很慢,要个20分钟左右
sources.list文件如下
deb https://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ buster main non-free contrib
deb https://mirrors.aliyun.com/debian-security buster/updates main
deb-src https://mirrors.aliyun.com/debian-security buster/updates main
deb https://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
配置docker-compose.yaml
配置文件如下,nginx redis 的配置文件直接从服务器上拿。
services:
nginx:
image: nginx:latest
ports:
- "8080:8080"
container_name: "nginx"
volumes:
- /home/app/nginx/www:/usr/share/nginx/html
- /home/app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /home/app/nginx/logs:/var/log/nginx
- /home/app/nginx/conf.d:/etc/nginx/conf.d
- /home/app/nginx/conf/cert/:/etc/nginx/cert/
- /home/app/nginx/cache:/home/nginx/cache
- /etc/localtime:/etc/localtime:ro
privileged: true
restart: always
redis:
image: redis:latest
container_name: redis
ports:
- "6380:6379"
volumes:
- /home/app/redis/data:/data
- /home/app/redis/conf:/docker/config
- /etc/localtime:/etc/localtime:ro
command: redis-server /docker/config/redis.conf
privileged: true
restart: always
temp_server:
image: temp_server
ports:
- "6000:8080"
links:
- redis
environment:
- "ASPNETCORE_ENVIRONMENT=Production"
container_name: "temp_server"
volumes:
- /home/app/server/prod/logs:/app/logs
privileged: true
restart: always
deploy:
resources:
limits:
# cpus: "0.80"
memory: 12G
reservations:
memory: 400M
配置部署文件deploy.sh
docker rmi server_bak
docker tag temp_server server_bak
docker compose --compatibility up -d
sleep 10
docker stop temp_server
docker rm temp_server
docker rmi temp_server
cd /home/app/server/prod/bin
docker build -t temp_server .
cd /home/app
docker compose --compatibility up -d
sleep 10
docker stop server_bak
docker rm server_bak

浙公网安备 33010602011771号