feat:更新Docker博客
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user