feat:更新Docker博客

This commit is contained in:
2025-12-16 10:41:54 +08:00
parent 2bb60d00e8
commit b4db9aae81
4 changed files with 270 additions and 36 deletions

View File

@@ -1,3 +1,7 @@
---
isGreat: true
---
# 一、Docker简介
## 1.1 基础概念
### 1.1.1 Docker概念
@@ -31,10 +35,6 @@
  最常使用的 Registry 公开服务是官方的 [Docker Hub](https://hub.docker.com/),这也是默认的 Registry。
# 二、Docker安装
## 2.1 环境
  Ubuntu20.04
## 2.2 安装
1. 安装依赖
```bash
@@ -71,6 +71,11 @@ sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/li
sudo apt-get install docker-ce
```
::: tip
也可以通过sudo apt install docker.io安装Ubuntu指定版本的docker
docker-ce是官方仓库docker.io是Ubuntu仓库
:::
5. 配置Docker镜像服务
  1⃣登录阿里云账号在**容器镜像服务->镜像工具->镜像加速器**中找到**加速器地址**。
@@ -82,6 +87,10 @@ sudo apt-get install docker-ce
}
```
::: tip
或者使用1ms.docker作为Docker镜像源 "https://docker.1ms.run"
:::
  3⃣执行命令
```bash
@@ -135,10 +144,229 @@ sudo systemctl restart docker
| | 查看容器详情 | `docker inspect mynginx` |
# 五、Docker Compose
## 5.1 安装
1. 从Github官网下载[Docker Compose](https://github.com/docker/compose)相应版本
2. 将文件保存至/usr/local/bin/docker-compose可执行目录
3. 赋予执行权限:
```bash
sudo chmod +x /usr/local/bin/docker-compose
```
# 六、Docker实战
  [Docker-完整项目的部署(保姆级教学)_docker部署-CSDN博客](https://blog.csdn.net/qq_71654538/article/details/136520075)
4. 验证安装:
```bash
docker compose version
```
# 七、参考资料
::: tip
也可以通过sudo apt-get install docker-compose-plugin安装Ubuntu指定版本
:::
## 5.2 YAML文件
```yaml
version: '3.8'
services:
# Spring Boot 后端服务
backend:
container_name: springboot-backend
image: springboot-app:latest
restart: unless-stopped
# 添加 host.docker.internal 映射
extra_hosts:
- "host.docker.internal:host-gateway"
# 环境变量配置
environment:
- SERVER_PORT=8080
# 端口映射(前面为宿主机端口,后面为容器端口)
ports:
- "8080:8080"
# 数据卷挂载(前面为宿主机目录,后面为容器目录)
volumes:
- ./backend/logs:/app/logs
# 健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
# 网络配置
networks:
- app-network
# 资源限制
deploy:
resources:
limits:
memory: 1G
cpus: '1.0'
reservations:
memory: 512M
cpus: '0.5'
# Vue3 Vite 前端服务
frontend:
container_name: vue-frontend
image: vue-app:latest
restart: unless-stopped
# 添加 host.docker.internal 映射
extra_hosts:
- "host.docker.internal:host-gateway"
# 端口映射
ports:
- "80:80"
# 依赖后端
depends_on:
backend:
condition: service_healthy
# 网络
networks:
- app-network
# 资源限制
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
reservations:
memory: 256M
cpus: '0.25'
# 网络定义
networks:
app-network:
driver: bridge
```
## 5.3 命令
```bash
# 1. 启动服务
docker compose up -d
# 2. 查看服务状态
docker compose ps
# 3. 查看日志
docker compose logs -f
# 4. 进入容器
docker compose exec backend bash
# 5. 停止服务
docker compose down
# 6. 重启服务
docker compose restart
# 7. 查看配置
docker compose config
# 8. 构建镜像
docker compose build
# 9. 执行命令
docker compose exec backend ls -la
# 10. 清理资源
docker compose down -v
docker system prune -f
```
# 六、Dockerfile
  Dockerfile 是用来构建 Docker 镜像的文本文件,包含了一系列构建指令,可以自动化地创建包含应用及其运行环境的镜像。
  基本结构:
```
# 基础镜像
FROM 镜像名:标签
# 维护者信息
LABEL maintainer="name@email.com"
# 设置工作目录
WORKDIR /app
# 复制文件
COPY 源路径 目标路径
# 执行命令
RUN 命令
# 暴露端口
EXPOSE 端口
# 容器启动命令
CMD ["可执行文件", "参数1", "参数2"]
```
  典型示例
::: code-group
```dockerfile [nginx]
FROM nginx:1.27.0
COPY dist/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.conf
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
```
```dockerfile [SpringBoot]
FROM openjdk:11-jdk
ARG JAR_FILE=target/*.jar
COPY $JAR_FILE app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
ENTRYPOINT java $JAVA_TOOL_OPTIONS -jar /app.jar $0 $@
```
```dockerfile [FastApi]
FROM python:3.12-slim
WORKDIR /app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
COPY ./packages /app/packages
COPY requirements.txt /app/
RUN pip install --no-cache-dir --no-index --find-links=/app/packages -r requirements.txt
COPY . /app/
EXPOSE 8082
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8082"]
```
```dockerfile [dotnet]
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0-alpine
WORKDIR /app
COPY publish/ .
RUN chmod +x EMMessageHubServer
EXPOSE 5000
EXPOSE 14040
ENTRYPOINT ["./EMMessageHubServer"]
```
:::
# 七、Docker开发流程
1. 编写业务代码
2. 编译打包项目工程
3. 编写Dockerfile文件
4. 根据Dockerfile文件和项目打包代码创建Docker镜像标注镜像名称和版本
5. 编写Docker Compose文件
6. 执行Docker Compose启动命令
7. 查看Docker Container状态
# 八、参考资料
1. [Docker — 从入门到实践](https://github.com/yeasy/docker_practice?tab=readme-ov-file)
2. [Docker完整项目的部署](https://blog.csdn.net/qq_71654538/article/details/136520075)