阶段二:容器化技术之Docker进阶
镜像仓库和镜像管理
镜像仓库概述和分类
镜像仓库是用于 存储、管理和分发 Docker 镜像 的集中化服务,类似代码仓库(如 gitlab/github),但专门针对容器镜像。
- 核心功能:
- 存储镜像的各个分层(Layers)。
- 支持镜像的版本管理(通过 Tag)。
- 提供访问控制(权限管理)。
- 镜像仓库分类
<sheet sheet-id="i9DwHG" token="JmA5sqaUuhPcRBtCNlwcN4Ltned"></sheet>
镜像仓库搭建
- 方案一:Docker Registry(官方开源)
先拉取镜像
[root@web01 ~]# docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/registry:2
运行容器
[root@web01 ~]# docker run -d --restart=always -p 5000:5000 --name private-registry -v /opt/registry:/var/lib/registry swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/registry:2
修改/etc/docker/daemon.json配置文件,允许非 HTTPS 访问,
{
"insecure-registries": ["192.168.50.211:5000"],
"registry-mirrors":[
"https://docker.1panelproxy.com",
"https://hub.openeeds.com",
"https://dockerproxy.1panel.live",
"https://docker.1panel.live",
"https://proxy.1panel.live",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn/",
"http://mirror.azure.cn/",
"https://hub.rat.dev/",
"https://docker.ckyl.me/",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io"
]
}
重新加载配置文件并重启服务
[root@web01 ~]# systemctl daemon-reload && systemctl restart docker命令作用:
- 从 Docker 镜像仓库拉取
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/registry:2镜像到本机,供后续创建容器使用;这条命令不会启动容器。
- 基于镜像
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/registry:2创建并启动一个容器;若命令包含-p,宿主机端口会转发到容器端口;若包含-v,指定目录或数据卷会挂载进容器。
- 让 systemd 重新读取 unit 文件;修改 service 配置后执行它,随后再 restart 或 start 目标服务。
- 使用 systemctl 对
docker服务执行restart操作:启动、停止、重启、查看状态或设置开机自启。
执行结果:
- 成功后会显示镜像各层下载进度和摘要,可用
docker images确认镜像已保存到本机。
- 成功后会创建并启动容器;带
-d时容器在后台运行,可用docker ps查看。
- 成功后 systemd 已重新读取 unit 文件,但目标服务不会自动重启。
- 成功后会对
docker服务执行restart操作;restart会造成短暂中断,enable影响开机自启。
关键参数:
注意事项:
rmi:两个单词合成,remove移除,image镜像
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `moongeun/centos9` | 【普通】 | Docker 操作目标 `moongeun/centos9`,通常是容器名称、容器 ID 或镜像名称。 |
**注意事项:**测试时可以将导出的文件scp传输到另一台宿主机测试。或者先删除本地的镜像再导入测试
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `<` | 【普通】 | 输入重定向,把文件内容作为前一个命令的标准输入。 |
| `/root/nginx.tar` | 【普通】 | `/root/nginx.tar` 是 Docker `load` 的目标或参数;它决定当前动作实际处理的镜像、容器、网络、数据卷或 Compose 服务。 |
| `-i` | 【普通】 | 指定要导入的镜像归档文件,例如 `nginx.tar`。 |
**注意事项:**
推送镜像到私有仓库
查看推送到私有仓库结果
{"repositories":["centos","nginx"]}命令拆解:
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
moongeun/centos9 | 普通 | Docker 镜像引用 moongeun/centos9,指定要运行、上传、下载或重新标记的镜像。 |
192.168.88.114:5000/centos:latest | 普通 | Docker 镜像引用 192.168.88.114:5000/centos:latest,指定要运行、上传、下载或重新标记的镜像。 |
http://192.168.88.114:5000/v2/_catalog | 普通 | 目标 URL http://192.168.88.114:5000/v2/_catalog,命令会访问这个地址或从这里下载内容。 |
注意事项:
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `\|` | 【普通】 | 管道,把前一个命令的输出交给后一个命令继续筛选或处理。 |
**注意事项:**
目标:实现镜像的定义和构建并推送到镜像仓库进行存储
核心特性:
案例一:构建nginx镜像
#创建一个对应nginx目录,复制update_mirror.pl文件到nginx构建镜像目录
#!/usr/bin/perl
}
}
}
}
}注意事项:
**注意事项:**
#构建镜像
参数说明:
#运行容器,并通过浏览器访问
#推送镜像到仓库,先重新给镜像打tag命令拆解:
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
-t | 普通 | 为构建结果设置镜像名称和标签,值为 harbor.lanqicheng.top/library/nginx:v1。 |
harbor.lanqicheng.top/library/nginx:v1 | 普通 | harbor.lanqicheng.top/library/nginx:v1 是 Docker build 的目标或参数;它决定当前动作实际处理的镜像、容器、网络、数据卷或 Compose 服务。 |
. | 普通 | Docker 构建上下文,表示当前目录;Dockerfile 中需要的文件必须位于这个目录及其子目录内。 |
-d | 核心 | 后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。 |
--name | 核心 | 指定容器名称 nginx01,后续可以用这个名称执行 ps、logs、exec 等管理命令。 |
-p | 核心 | 端口映射,格式是 宿主机端口:容器端口,把宿主机访问转发到容器端口。 |
8080:80 | 普通 | Docker 镜像引用 8080:80,指定要运行、上传、下载或重新标记的镜像。 |
-v | 核心 | 目录挂载:把宿主机目录 /data/nginx/html 挂载到容器内目录 /usr/local/nginx/html,容器删除后宿主机数据仍可保留。 |
/data/nginx/html:/usr/local/nginx/html | 普通 | Docker 镜像引用 /data/nginx/html:/usr/local/nginx/html,指定要运行、上传、下载或重新标记的镜像。 |
nginx:v1 | 普通 | Docker 镜像引用 nginx:v1,指定要运行、上传、下载或重新标记的镜像。 |
192.168.88.211:5000/nginx:v1 | 普通 | Docker 镜像引用 192.168.88.211:5000/nginx:v1,指定要运行、上传、下载或重新标记的镜像。 |
注意事项:
创建一个mysql目录,从学习资料上传安装包、配置文件和启动脚本并进行Dockerfile定义
创建启动脚本 #!/bin/bash MYSQL_PID=$!
构建镜像
运行容器,初始化是非安全方式,默认root用户密码为空
允许远程登录
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-p` | 【核心】 | 递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。 |
| `--progress=plain` | 【普通】 | 长参数 `--progress` 的值是 `plain`,用于精确控制命令行为。 |
| `-t` | 【普通】 | 为构建结果设置镜像名称和标签,值为 `mysql:latest`。 |
| `mysql:latest` | 【普通】 | `mysql:latest` 是 Docker `build` 的目标或参数;它决定当前动作实际处理的镜像、容器、网络、数据卷或 Compose 服务。 |
| `.` | 【普通】 | Docker 构建上下文,表示当前目录;Dockerfile 中需要的文件必须位于这个目录及其子目录内。 |
| `-it` | 【普通】 | 同时启用交互输入和伪终端,常用于进入容器内的 bash 或 sh。 |
| `/bin/bash` | 【普通】 | 容器内要执行的命令或参数 `/bin/bash`。 |
**注意事项:**
#创建一个redis目录
注意事项:
#文件最后增加下面这两行
#要重启才能生效 #验证
**注意事项:**
命令拆解:
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
./configure | 普通 | ./configure 是这行命令的主程序,决定这条命令要调用哪个工具。 |
--prefix=/usr/local/nginx | 普通 | 长参数 --prefix 的值是 /usr/local/nginx,用于精确控制命令行为。 |
--user=www | 普通 | 长参数 --user 的值是 www,用于精确控制命令行为。 |
--group=www | 普通 | 长参数 --group 的值是 www,用于精确控制命令行为。 |
注意事项:
目标:掌握Docker单节点的容器编排
services: web01: ports: environment:
#保存退出,然后运行
**注意事项:**
services:
mysql:
ports:
environment:
volumes:
#启动容器注意事项:
准备一台全新的服务器,2核2G内存磁盘空间要20G以上,并安装docker-ce
| 服务器名称 | 地址 | 用途 | 备注 |
|---|---|---|---|
| harbor.itcast.cn | 192.168.88.117 | 镜像仓库 |
https://httpsok.com/index



#从本地上传安装包、创建目录并上传我们的证书,并把自己的证书上传到/data/harbor/ssl
11
安装完成后,会自动起来的
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-p` | 【核心】 | 递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。 |
| `harbor.yml` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |
**注意事项:**
在软件安装目录下面有docker-compose.yml
#启动
#关闭命令拆解:
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
-d | 核心 | 后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。 |
注意事项:

#镜像仓库登录
#镜像打标签 #推送镜像
#拉取镜像
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `harbor.lanqicheng.top` | 【普通】 | 镜像仓库地址 `harbor.lanqicheng.top`,Docker 将向这个仓库发起认证。 |
| `-u` | 【普通】 | 指定登录用户名 `admin`。 |
| `-p` | 【核心】 | 指定镜像仓库密码;不要把真实密码写进公开文档或脚本,推荐使用凭据管理。 |
| `123` | 【普通】 | 镜像仓库地址 `123`,Docker 将向这个仓库发起认证。 |
| `nginx:latest` | 【普通】 | Docker 镜像引用 `nginx:latest`,指定要运行、上传、下载或重新标记的镜像。 |
| `harbor.lanqicheng.top/crmeb/nginx:latest` | 【普通】 | Docker 镜像引用 `harbor.lanqicheng.top/crmeb/nginx:latest`,指定要运行、上传、下载或重新标记的镜像。 |
| `harbor.lanqicheng.top/zhongzhou/nginx:latest` | 【普通】 | Docker 镜像引用 `harbor.lanqicheng.top/zhongzhou/nginx:latest`,指定要运行、上传、下载或重新标记的镜像。 |
**注意事项:**
1、你日常的运维工作内容