mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 16:37:34 +00:00
Update MySQL 8.0 to 8.4 LTS, fix Trivy tag count
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
## 2.3 仓库
|
## 2.3 仓库
|
||||||
|
|
||||||
> **版本说明**:本节示例基于 Docker v29.x 和常见镜像版本编写。示例中的版本号(如 `nginx:1.30`、`mysql:8.0`、`mysql:5.7` 等)为演示用途。实际使用时请访问 [Docker Hub 官方页面](https://hub.docker.com) 或相应镜像的发布页确认最新可用版本和标签。
|
> **版本说明**:本节示例基于 Docker v29.x 和常见镜像版本编写。示例中的版本号(如 `nginx:1.30`、`mysql:8.4`、`mysql:5.7` 等)为演示用途。实际使用时请访问 [Docker Hub 官方页面](https://hub.docker.com) 或相应镜像的发布页确认最新可用版本和标签。
|
||||||
|
|
||||||
Docker Registry 是镜像分发和管理的核心组件。本节将介绍 Registry 的基本概念、公共和私有服务的选择,以及镜像的安全管理。
|
Docker Registry 是镜像分发和管理的核心组件。本节将介绍 Registry 的基本概念、公共和私有服务的选择,以及镜像的安全管理。
|
||||||
|
|
||||||
|
|||||||
@@ -126,14 +126,14 @@ $ docker run -d -p 80:80 nginx:latest
|
|||||||
|
|
||||||
## 数据库
|
## 数据库
|
||||||
|
|
||||||
$ docker run -d -p 3306:3306 mysql:8.0
|
$ docker run -d -p 3306:3306 mysql:8.4
|
||||||
|
|
||||||
## 缓存服务
|
## 缓存服务
|
||||||
|
|
||||||
$ docker run -d -p 6379:6379 redis:latest
|
$ docker run -d -p 6379:6379 redis:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
> **版本说明**:示例使用常见的标签如 `latest` 或稳定大版本号如 `mysql:8.0`。具体版本可根据需求调整,生产环境建议明确指定版本号(如 `mysql:8.0.35`)而非使用 `latest`。
|
> **版本说明**:示例使用常见的标签如 `latest` 或稳定大版本号如 `mysql:8.4`。具体版本可根据需求调整,生产环境建议明确指定版本号(如 `mysql:8.4.4`)而非使用 `latest`。
|
||||||
|
|
||||||
#### 2. 调试时先用前台模式
|
#### 2. 调试时先用前台模式
|
||||||
|
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
|
|
||||||
本章示例涉及多个 Docker 镜像,遵循以下版本号最佳实践:
|
本章示例涉及多个 Docker 镜像,遵循以下版本号最佳实践:
|
||||||
|
|
||||||
- **官方镜像**(如 `ubuntu`、`nginx`、`mysql`):使用具体大版本号(如 `ubuntu:24.04`、`mysql:8.0`)而非 `latest`,确保示例的可重复性
|
- **官方镜像**(如 `ubuntu`、`nginx`、`mysql`):使用具体大版本号(如 `ubuntu:24.04`、`mysql:8.4`)而非 `latest`,确保示例的可重复性
|
||||||
- **镜像标签约定**:
|
- **镜像标签约定**:
|
||||||
- `latest` 或 `v1.0.0` 等:带标签的自定义镜像,示例中指定具体版本
|
- `latest` 或 `v1.0.0` 等:带标签的自定义镜像,示例中指定具体版本
|
||||||
- `24.04`、`8.0`:官方镜像的稳定版本分支
|
- `24.04`、`8.4`:官方镜像的稳定版本分支
|
||||||
- 生产环境建议:指定精确版本号(如 `nginx:1.24.0`、`mysql:8.0.35`)而非仅大版本号
|
- 生产环境建议:指定精确版本号(如 `nginx:1.24.0`、`mysql:8.4.4`)而非仅大版本号
|
||||||
|
|
||||||
* [启动容器](5.1_run.md)
|
* [启动容器](5.1_run.md)
|
||||||
* [守护态运行](5.2_daemon.md)
|
* [守护态运行](5.2_daemon.md)
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ flowchart LR
|
|||||||
#### 定义单个卷
|
#### 定义单个卷
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
FROM mysql:8.0
|
FROM mysql:8.4
|
||||||
VOLUME /var/lib/mysql
|
VOLUME /var/lib/mysql
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ VOLUME ["/data", "/logs", "/config"]
|
|||||||
如果运行时未指定挂载,Docker 会自动创建匿名卷:
|
如果运行时未指定挂载,Docker 会自动创建匿名卷:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run mysql:8.0
|
$ docker run mysql:8.4
|
||||||
$ docker volume ls
|
$ docker volume ls
|
||||||
DRIVER VOLUME NAME
|
DRIVER VOLUME NAME
|
||||||
local a1b2c3d4e5f6... # 自动创建的匿名卷
|
local a1b2c3d4e5f6... # 自动创建的匿名卷
|
||||||
@@ -74,7 +74,7 @@ local a1b2c3d4e5f6... # 自动创建的匿名卷
|
|||||||
```bash
|
```bash
|
||||||
## 使用命名卷替代匿名卷
|
## 使用命名卷替代匿名卷
|
||||||
|
|
||||||
$ docker run -v mysql_data:/var/lib/mysql mysql:8.0
|
$ docker run -v mysql_data:/var/lib/mysql mysql:8.4
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3. 可被 Bind Mount 覆盖
|
#### 3. 可被 Bind Mount 覆盖
|
||||||
@@ -82,7 +82,7 @@ $ docker run -v mysql_data:/var/lib/mysql mysql:8.0
|
|||||||
```bash
|
```bash
|
||||||
## 使用宿主机目录替代
|
## 使用宿主机目录替代
|
||||||
|
|
||||||
$ docker run -v /my/data:/var/lib/mysql mysql:8.0
|
$ docker run -v /my/data:/var/lib/mysql mysql:8.4
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ VOLUME /app/uploads
|
|||||||
```bash
|
```bash
|
||||||
## 查看镜像定义的 VOLUME
|
## 查看镜像定义的 VOLUME
|
||||||
|
|
||||||
$ docker inspect mysql:8.0 --format '{{json .Config.Volumes}}' | jq
|
$ docker inspect mysql:8.4 --format '{{json .Config.Volumes}}' | jq
|
||||||
{
|
{
|
||||||
"/var/lib/mysql": {}
|
"/var/lib/mysql": {}
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ volumes:
|
|||||||
```bash
|
```bash
|
||||||
## 使用 --rm 运行的容器,匿名卷会在容器删除时一起删除
|
## 使用 --rm 运行的容器,匿名卷会在容器删除时一起删除
|
||||||
|
|
||||||
$ docker run --rm mysql:8.0
|
$ docker run --rm mysql:8.4
|
||||||
|
|
||||||
## 容器停止后,数据丢失!
|
## 容器停止后,数据丢失!
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ $ docker run --rm mysql:8.0
|
|||||||
**解决**:始终使用命名卷
|
**解决**:始终使用命名卷
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run -v mysql_data:/var/lib/mysql mysql:8.0
|
$ docker run -v mysql_data:/var/lib/mysql mysql:8.4
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -490,7 +490,7 @@ volumes:
|
|||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
my_src:
|
my_src:
|
||||||
image: mysql:8.0
|
image: mysql:8.4
|
||||||
volumes:
|
volumes:
|
||||||
- mysql_data:/var/lib/mysql
|
- mysql_data:/var/lib/mysql
|
||||||
|
|
||||||
|
|||||||
@@ -28,13 +28,13 @@ services:
|
|||||||
# 数据库服务
|
# 数据库服务
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: mysql:8.0
|
image: mysql:8.4
|
||||||
container_name: wordpress_db
|
container_name: wordpress_db
|
||||||
restart: always
|
restart: always
|
||||||
command:
|
command:
|
||||||
# 使用原生密码认证(旧版 WP 兼容性)
|
# 启用原生密码认证(MySQL 8.4 默认禁用,旧版 WP 兼容性需要)
|
||||||
|
|
||||||
- --default-authentication-plugin=mysql_native_password
|
- --mysql-native-password=ON
|
||||||
- --character-set-server=utf8mb4
|
- --character-set-server=utf8mb4
|
||||||
- --collation-server=utf8mb4_unicode_ci
|
- --collation-server=utf8mb4_unicode_ci
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
services:
|
services:
|
||||||
|
|
||||||
db:
|
db:
|
||||||
image: mysql:8.0
|
image: mysql:8.4
|
||||||
command:
|
command:
|
||||||
- --default_authentication_plugin=mysql_native_password
|
- --mysql-native-password=ON
|
||||||
- --character-set-server=utf8mb4
|
- --character-set-server=utf8mb4
|
||||||
- --collation-server=utf8mb4_unicode_ci
|
- --collation-server=utf8mb4_unicode_ci
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: mysql
|
- name: mysql
|
||||||
image: mysql:8.0
|
image: mysql:8.4
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: data
|
- name: data
|
||||||
mountPath: /var/lib/mysql
|
mountPath: /var/lib/mysql
|
||||||
|
|||||||
@@ -434,8 +434,8 @@ jobs:
|
|||||||
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
|
||||||
- name: Run Trivy vulnerability scan
|
- name: Run Trivy vulnerability scan
|
||||||
# 安全提醒:2026 年 3 月 Trivy GitHub Actions 遭受供应链攻击,
|
# 安全提醒:2026 年 3 月 19 日 Trivy GitHub Actions 遭受供应链攻击,
|
||||||
# 75 个版本标签被劫持。务必使用不可变的 commit SHA 引用,而非可变标签。
|
# 76 个版本标签被劫持。务必使用不可变的 commit SHA 引用,而非可变标签。
|
||||||
# 使用前请到 https://github.com/aquasecurity/trivy-action/releases 核实 SHA 对应正确版本。
|
# 使用前请到 https://github.com/aquasecurity/trivy-action/releases 核实 SHA 对应正确版本。
|
||||||
uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0
|
uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # v0.35.0
|
||||||
with:
|
with:
|
||||||
|
|||||||
Reference in New Issue
Block a user