阶段二:容器化技术之Docker进阶

镜像仓库和镜像管理

镜像仓库概述和分类

镜像仓库是用于 存储、管理和分发 Docker 镜像 的集中化服务,类似代码仓库(如 gitlab/github),但专门针对容器镜像。

<sheet sheet-id="i9DwHG" token="JmA5sqaUuhPcRBtCNlwcN4Ltned"></sheet>

镜像仓库搭建

先拉取镜像
[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

命令作用:

执行结果:

关键参数:

注意事项:

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.cn192.168.88.117镜像仓库

https://httpsok.com/index

image
image
image

#从本地上传安装包、创建目录并上传我们的证书,并把自己的证书上传到/data/harbor/ssl

11

安装完成后,会自动起来的


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-p` | 【核心】 | 递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。 |
| `harbor.yml` | 【普通】 | 配置文件路径,命令会读取这个文件里的配置。 |

**注意事项:**



在软件安装目录下面有docker-compose.yml

#启动

#关闭

命令拆解:

命令部分重要程度详细解释
-d核心后台运行容器,命令返回后容器继续运行,终端不会被容器日志占用。

注意事项:

image

#镜像仓库登录

#镜像打标签 #推送镜像

#拉取镜像


**命令拆解:**

| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `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、你日常的运维工作内容