Docker——镜像仓库和镜像

目录

[一、Docker Registry(镜像仓库)](#一、Docker Registry(镜像仓库))

二、镜像仓库工作机制

1、使用流程

2、实际应用

三、镜像仓库命令

[1、docker login](#1、docker login)

[2、docker pull](#2、docker pull)

[3、docker push](#3、docker push)

[4、docker search](#4、docker search)

[5、docker logout](#5、docker logout)

四、镜像命令

[1、docker images](#1、docker images)

[2、docker images inspect](#2、docker images inspect)

[3、docker tag](#3、docker tag)

[4、docker rmi](#4、docker rmi)

[5、docker save](#5、docker save)

[6、docker load](#6、docker load)

[7、docker image inspect](#7、docker image inspect)

[8、docker history](#8、docker history)

[9、docker import](#9、docker import)

[10、docker image prune](#10、docker image prune)

[11、docker build](#11、docker build)

五、镜像操作案例

1、查找镜像

2、拉取镜像到本地

3、查看镜像详情

4、查看镜像分层

5、打标签

6、推送镜像

7、运行容器

8、删除镜像

六、实战------离线迁移镜像

[1、服务器 1 上镜像保存为 tar 文件,如操作系统为 ubuntu](#1、服务器 1 上镜像保存为 tar 文件,如操作系统为 ubuntu)

[2、scp 或者使用可视化工具拷贝镜像到第二台服务器上](#2、scp 或者使用可视化工具拷贝镜像到第二台服务器上)

3、从tar中恢复镜像

[4、 执行 docker run 检查镜像是否可以正常运行](#4、 执行 docker run 检查镜像是否可以正常运行)


一、Docker Registry(镜像仓库)

镜像仓库(DockerRegistry)负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。镜像仓库管理多个Repository,Repository通过命名来区分。每个Repository包含一

个或多个镜像,镜像通过镜像名称和标签(Tag)来区分。

图解:①镜像仓库(Registry):要从哪一个镜像仓库拉取镜像,通常通过DNS或IP地址来确定一个镜像仓库,如 hub.docker.com;

一个Registry中可以存在多个Repository。

Repository可分为"顶层仓库"和"用户仓库";

用户仓库名称格式为"用户名/仓库名"。

每个仓库可以包含多个Tag(标签),每个标签对应一个镜像

②Repository:由某特定的docker镜像的所有迭代版本组成的镜像仓库

③镜像名称(name)+标签(tag):如 nginx:latest

④认证能力:提供用户注册,登录、登出能力

⑤索引:提供镜像的索引信息,方便检索

⑥一个容器镜像包含了两个部分,一个是元数据,其实就是由dockerfile构建出来的描

述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的

checksum这些信息都会记录下来,还有最终的可执行文件在哪就是在存储数据里面,

就是在一个一个的blob里面,真正占有空间的就是这些blob。

二、镜像仓库工作机制

1、使用流程

通过docker login登陆仓库

docker pull拉去需要的镜像

通过dockerfile或者commit等方式制作镜像,再docker push上传到仓库

2、实际应用

Docker Registry中的镜像通常由开发人员制作,而后推送至"公共"或"私有"Registry上保存,供其他人员使用,例如"部署"到生产环境;启动容器时,dockerdaemon会试图从本地获取相关的镜像;本地镜像不存在时,其将从Registry中下载该镜像并保存到本地;

三、镜像仓库命令

1、docker login

登录到一个docker镜像仓库地址,如果未指定镜像仓库地址,默认为官方仓库dockerhub。要想登录到腾讯云和阿里云镜像仓库要输入对应的地址。

使用场景,是在需要推送镜像时要先登录才能推送;在要从私有仓库下拉取下来。

语法样例:

bash 复制代码
docker login -u 用户名 -p 密码

2、docker pull

(别名:docker image pull)

从镜像仓库中拉取或者更新指定的镜像。

语法样例:

bash 复制代码
docker pull nginx:1.23.3

3、docker push

(别名:docker image push)

将本地的镜像上传到镜像仓库。要先登录到镜像仓库。还要给镜像打标签。

bash 复制代码
docker push 用户名/仓库名/镜像名

从docker hub查找镜像

语法样例:

bash 复制代码
#从 Docker Hub 查找所有镜像名包含 nginx,并且 star 数大于 10 的镜像
docker search -f stars=10 nginx

5、docker logout

登出一个Docker镜像仓库

四、镜像命令

1、docker images

(别名:docker images ls,docker images list)

列出本地的镜像

关键参数:

-a:列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

-digests:显示镜像的摘要信息;

-f:显示满足条件的镜像;

--format:指定返回值的模板文件;

-no-trunc:显示完整的镜像信息;

-q:只显示镜像ID。

语法样例:

bash 复制代码
#列出本地全部镜像
docker images
#列出本地镜像中 REPOSITORY 为 ubuntu 的镜像列表。
docker images ubuntu

2、docker images inspect

查看镜像详细信息

语法样例:

bash 复制代码
#查看镜像详细信息
docker images inspect nginx:1.23.3

3、docker tag

(别名:docker image tag)

标记本地仓库,将其归入某一仓库,docker的目标之一就是把它推动到镜像仓库里面

语法样例:

bash 复制代码
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

4、docker rmi

(别名:docker image rm, docker image remove)

删除镜像

关键参数:

-f :强制删除;

--no-prune :不移除该镜像的过程镜像,默认移除;

语法样例:

bash 复制代码
docker rmi [OPTIONS] IMAGE [IMAGE...]

docker rmi maxhou/mybusybox:v0.1

5、docker save

别名(docker image save)

将指定镜像保存成 tar 归档文件。

关键参数:

-o 输出到文件

语法样例:

bash 复制代码
docker save [OPTIONS] IMAGE [IMAGE...]

docker save -o mynginx_1.22.1.tar nginx:1.22.1

6、docker load

(别名:docker image load)

导入使用 docker save 命令导出的镜像。

关键参数:

--input , -i : 指定导入的文件,代替 STDIN。

--quiet , -q : 精简输出信息。

语法样例:

bash 复制代码
docker load -i mynginx_1.22.1.tar

7、docker image inspect

查看镜像详细信息,docker inspect 会自动检查是镜像还是容器然后显示详细信息

语法样例:

bash 复制代码
docker image inspect [OPTIONS] IMAGE [IMAGE...]

docker images inspect nginx:1.23.3

8、docker history

(别名:docker iamges history)

显示历史镜像

关键参数:

-H , --human :大小和日期采用人容易读的格式展现

--no-trunc :显示全部信息,不要隔断;

-q, --quiet: 只显示镜像 id 信息;

语法样例:

bash 复制代码
docker history [OPTIONS] IMAGE

docker history nginx:1.21.1

9、docker import

(别名:docker image import)

从归档文件中创建镜像

关键参数:

-c :应用 docker 指令创建镜像

-m :提交时的说明文字

语法样例:

bash 复制代码
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

docker import my_ubuntu_v3.tar maxhou/ubuntu:v4

10、docker image prune

删除不使用的镜像

关键参数:

-a , --all : 删除全部不使用的镜像;

--filter filter:指定过滤条件;

-f, --force :不提示是否删除;

语法样例:

bash 复制代码
docker image prune [OPTIONS]

docker image prune

11、docker build

docker build用于使用dockerfile创建文件

关键参数:

--build-arg=[] :设置镜像创建时的变量;

-f :指定要使用的 Dockerfile 路径;

--label=[] :设置镜像使用的元数据;

--no-cache :创建镜像的过程不使用缓存;

--pull :尝试去更新镜像的新版本;

--quiet, -q :安静模式,成功后只输出镜像 ID;

--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

--network: 默认 default。在构建期间设置 RUN 指令的网络模式

语法样例:

bash 复制代码
docker build [OPTIONS] PATH | URL | -

docker build -t mynginx:v1 .

五、镜像操作案例

1、查找镜像

bash 复制代码
docker search busybox

2、拉取镜像到本地

bash 复制代码
docker pull busybox:1.36.0

3、查看镜像详情

bash 复制代码
docker image inspect busybox:1.36.0

4、查看镜像分层

bash 复制代码
docker history busybox:1.36.0

5、打标签

bash 复制代码
docker tag busybox:1.36.0 ccr.ccs.tencentyun.com/maxhou6/busyboxbymaxhou:v3.0

6、推送镜像

bash 复制代码
docker pull ccr.ccs.tencentyun.com/maxhou6/busyboxbymaxhou:v3.0

7、运行容器

bash 复制代码
 docker run -it --rm

8、删除镜像

bash 复制代码
可以根据 id 和名字删除,对于使用的镜像需要先清理容器再删除镜像
 docker rmi busybox:1.36.0

六、实战------离线迁移镜像

1、服务器 1 上镜像保存为 tar 文件,如操作系统为 ubuntu

bash 复制代码
docker save -o busybox.tar busybox

2、scp 或者使用可视化工具拷贝镜像到第二台服务器上

bash 复制代码
scp busybox.tar

3、从tar中恢复镜像

bash 复制代码
docker load -i busybox.tar

4、 执行 docker run 检查镜像是否可以正常运行

bash 复制代码
docker run -it --rm busybox:1.36.0 sh

若把一个镜像打不同的标签推送到镜像仓库,那么镜像仓库上的信息和大小是一样的,只是标签是不同的。

相关推荐
m0_4856146717 小时前
K8S项目生命周期管理
云原生·容器·kubernetes
运维小欣17 小时前
博睿数据领航可观测性选型:国际竞品对比与2026企业决策指南
运维
CodeCaptain17 小时前
Dify结合vllm-openai docker镜像出现docker: invalid reference format问题的解决方案
运维·docker·容器
一只往上爬的蜗牛17 小时前
【Jenkins】Jenkins 中如何在 Build Artifacts 显示自动化测试生成的文件
运维·jenkins
LucidX17 小时前
Kubernetes Pod 详解与Rancher 部署
容器·kubernetes·rancher
星环处相逢17 小时前
从 Pod 核心原理到 Rancher 实战:K8s 容器管理全解析
容器·kubernetes·rancher
摸鱼仙人~17 小时前
RAG 系统中的 TOC Enhance:用“目录增强”提升检索与生成效果
linux·运维·服务器
伞啊伞17 小时前
k8s(四) Rancher 管理集群
容器·kubernetes·rancher
忍冬行者17 小时前
k8s的etcd的一键备份和故障恢复
docker·云原生·容器·kubernetes·云计算