mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 16:37:34 +00:00
Compare commits
4
Commits
fab4e41587
...
9c98e35c62
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c98e35c62 | ||
|
|
0e0afbd4d3 | ||
|
|
30f0115cb9 | ||
|
|
62f48c1417 |
@@ -172,7 +172,7 @@ registry.example.com/myproject/myapp:v1.2.3
|
|||||||
|
|
||||||
## 简写(使用 Docker Hub)
|
## 简写(使用 Docker Hub)
|
||||||
|
|
||||||
nginx:1.30
|
nginx:1.28
|
||||||
ubuntu:24.04
|
ubuntu:24.04
|
||||||
|
|
||||||
## 省略标签(默认使用 latest)
|
## 省略标签(默认使用 latest)
|
||||||
|
|||||||
@@ -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.28`、`mysql:8.0`、`mysql:5.7` 等)为演示用途。实际使用时请访问 [Docker Hub 官方页面](https://hub.docker.com) 或相应镜像的发布页确认最新可用版本和标签。
|
||||||
|
|
||||||
Docker Registry 是镜像分发和管理的核心组件。本节将介绍 Registry 的基本概念、公共和私有服务的选择,以及镜像的安全管理。
|
Docker Registry 是镜像分发和管理的核心组件。本节将介绍 Registry 的基本概念、公共和私有服务的选择,以及镜像的安全管理。
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ registry.example.com/mycompany/myapp:v1.2.3
|
|||||||
|
|
||||||
## Docker Hub 官方镜像(省略 registry 和用户名)
|
## Docker Hub 官方镜像(省略 registry 和用户名)
|
||||||
|
|
||||||
nginx:1.30
|
nginx:1.28
|
||||||
ubuntu:24.04
|
ubuntu:24.04
|
||||||
|
|
||||||
## Docker Hub 用户镜像
|
## Docker Hub 用户镜像
|
||||||
@@ -217,7 +217,7 @@ $ docker login registry.example.com # 登录其他 Registry
|
|||||||
|
|
||||||
## 拉取镜像
|
## 拉取镜像
|
||||||
|
|
||||||
$ docker pull nginx:1.30
|
$ docker pull nginx:1.28
|
||||||
|
|
||||||
## 标记镜像(准备推送)
|
## 标记镜像(准备推送)
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Starting ──成功──> Healthy ──失败N次──> Unhealthy
|
|||||||
#### Web 服务检查
|
#### Web 服务检查
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.30-alpine)
|
# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.28-alpine)
|
||||||
FROM nginx
|
FROM nginx
|
||||||
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
|
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
|||||||
@@ -176,5 +176,5 @@ $ docker build --target builder -t username/imagename:tag .
|
|||||||
上面例子中我们使用 `COPY --from=0 /go/src/github.com/go/helloworld/app .` 从上一阶段的镜像中复制文件,我们也可以复制任意镜像中的文件。
|
上面例子中我们使用 `COPY --from=0 /go/src/github.com/go/helloworld/app .` 从上一阶段的镜像中复制文件,我们也可以复制任意镜像中的文件。
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
COPY --from=nginx:1.30-alpine /etc/nginx/nginx.conf /nginx.conf
|
COPY --from=nginx:1.28-alpine /etc/nginx/nginx.conf /nginx.conf
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -128,8 +128,8 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
|||||||
### 7.18.5 最后一个阶段构建 NGINX 镜像
|
### 7.18.5 最后一个阶段构建 NGINX 镜像
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.30-alpine)
|
# 注:nginx 镜像推荐使用具体的版本标签(如 nginx:1.28-alpine)
|
||||||
FROM nginx:1.30-alpine as nginx
|
FROM nginx:1.28-alpine as nginx
|
||||||
|
|
||||||
ARG LARAVEL_PATH=/app/laravel
|
ARG LARAVEL_PATH=/app/laravel
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ $ docker run -dit --rm --network=laravel -p 8080:80 my/nginx
|
|||||||
完整的 `Dockerfile` 文件如下。
|
完整的 `Dockerfile` 文件如下。
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
# 注:生产环境推荐使用具体的版本标签,如 node:20-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.30-alpine
|
# 注:生产环境推荐使用具体的版本标签,如 node:20-alpine、composer:2.x、php:8.3-fpm-alpine、nginx:1.28-alpine
|
||||||
FROM node:20-alpine as frontend
|
FROM node:20-alpine as frontend
|
||||||
|
|
||||||
COPY package.json /app/
|
COPY package.json /app/
|
||||||
@@ -229,7 +229,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
|||||||
&& chmod -R 777 storage \
|
&& chmod -R 777 storage \
|
||||||
&& php artisan package:discover
|
&& php artisan package:discover
|
||||||
|
|
||||||
FROM nginx:1.30-alpine as nginx
|
FROM nginx:1.28-alpine as nginx
|
||||||
|
|
||||||
ARG LARAVEL_PATH=/app/laravel
|
ARG LARAVEL_PATH=/app/laravel
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ RUN set -x ; cd ${LARAVEL_PATH} \
|
|||||||
&& chmod -R 777 storage \
|
&& chmod -R 777 storage \
|
||||||
&& php artisan package:discover
|
&& php artisan package:discover
|
||||||
|
|
||||||
FROM nginx:1.25-alpine as nginx
|
FROM nginx:1.28-alpine as nginx
|
||||||
|
|
||||||
ARG LARAVEL_PATH=/app/laravel
|
ARG LARAVEL_PATH=/app/laravel
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Docker Buildx 是一个 docker CLI 插件,其扩展了 docker 命令,支持 [Moby BuildKit](10.1_buildkit.md) 提供的功能。提供了与 docker build 相同的用户体验,并增加了许多新功能。
|
Docker Buildx 是一个 docker CLI 插件,其扩展了 docker 命令,支持 [Moby BuildKit](10.1_buildkit.md) 提供的功能。提供了与 docker build 相同的用户体验,并增加了许多新功能。
|
||||||
|
|
||||||
> Buildx 需要 Docker v19.03+ (Docker 19.03 及以上版本)。在较新版本中已更常用且功能更完整。
|
> Buildx 需要 Docker v23.0+(该版本起 BuildKit 成为默认构建引擎)。推荐使用 Docker v28 及以上版本以获得最完整的 Buildx 功能支持。
|
||||||
|
|
||||||
## 本章内容
|
## 本章内容
|
||||||
|
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: nginx
|
- name: nginx
|
||||||
image: nginx:1.30
|
image: nginx:1.28
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: nginx
|
- name: nginx
|
||||||
image: nginx:1.30
|
image: nginx:1.28
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
```
|
```
|
||||||
@@ -73,7 +73,7 @@ kubectl get svc nginx-service
|
|||||||
|
|
||||||
### 13.5.4 步骤 3:模拟滚动更新
|
### 13.5.4 步骤 3:模拟滚动更新
|
||||||
|
|
||||||
修改 `nginx-deployment.yaml`,将镜像版本改为 `nginx:1.30-alpine`。
|
修改 `nginx-deployment.yaml`,将镜像版本改为 `nginx:1.28-alpine`。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl apply -f nginx-deployment.yaml
|
kubectl apply -f nginx-deployment.yaml
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
## 15.1 简介
|
## 15.1 简介
|
||||||
|
|
||||||
> **版本说明:** 本章内容基于 etcd 3.5 系列版本编写(当前最新为 v3.5.x)。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
|
> **版本说明:** 本章内容基于 etcd 3.5 系列版本编写。官方维护最新两个次版本(当前为 3.5 和 3.6)。请访问 [etcd 官方发布页](https://github.com/etcd-io/etcd/releases) 获取最新版本信息。
|
||||||
|
|
||||||
如图 15-1 所示,etcd 项目使用该标识。
|
如图 15-1 所示,etcd 项目使用该标识。
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
本章示例中使用的操作系统镜像版本遵循以下原则:
|
本章示例中使用的操作系统镜像版本遵循以下原则:
|
||||||
|
|
||||||
- **Alpine、Debian、Ubuntu、CentOS** 等操作系统镜像采用大版本或次版本标签(如 `alpine:3.21`、`ubuntu:24.04`),避免使用 `latest` 标签确保构建的可再现性
|
- **Alpine、Debian、Ubuntu、CentOS** 等操作系统镜像采用大版本或次版本标签(如 `alpine:3.21`、`ubuntu:26.04`),避免使用 `latest` 标签确保构建的可再现性
|
||||||
- **OS 大版本保留**,以便获得最新的安全补丁和修复
|
- **OS 大版本保留**,以便获得最新的安全补丁和修复
|
||||||
- 在生产环境中,建议根据实际需求选择合适的版本,并定期更新以获得安全修复
|
- 在生产环境中,建议根据实际需求选择合适的版本,并定期更新以获得安全修复
|
||||||
|
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ unit_test:
|
|||||||
|
|
||||||
build_image:
|
build_image:
|
||||||
stage: build
|
stage: build
|
||||||
image: docker:27
|
image: docker:29
|
||||||
services:
|
services:
|
||||||
- docker:27-dind
|
- docker:29-dind
|
||||||
script:
|
script:
|
||||||
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
|
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
|
||||||
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
|
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
|
||||||
|
|||||||
@@ -587,7 +587,7 @@ A(要点):
|
|||||||
A(要点):
|
A(要点):
|
||||||
```text
|
```text
|
||||||
1. 选择合适的基础镜像:
|
1. 选择合适的基础镜像:
|
||||||
scratch < alpine:3.17 < python:3.14-slim < python:3.14
|
scratch < alpine:3.21 < python:3.14-slim < python:3.14
|
||||||
|
|
||||||
2. 多阶段构建:
|
2. 多阶段构建:
|
||||||
- 构建阶段只保留编译工具
|
- 构建阶段只保留编译工具
|
||||||
|
|||||||
Reference in New Issue
Block a user