Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 131|回复: 0

Docker pull 命令详解

[复制链接]

283

主题

414

帖子

2666

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2666
发表于 2025-5-9 20:25:57 | 显示全部楼层 |阅读模式
Docker 建立私有库,请见:DOCKER 如何从私有仓库PULL | PingCode智库
如果建立私有库拉registry失败, 使用这个方法:docker配置镜像Docker pull时报错:https://registry-1.docker.io/v2/ - 知乎
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
  3. docker info
复制代码

‌pull的registry镜像重启后消失的原因‌主要是因为Docker镜像存储在容器的临时文件系统中,而不是持久化存储。当Docker服务重启时,容器会被重新创建,之前下载的镜像不会被自动保存,因此会消失‌1。

解决方法
  • ‌使用Docker数据卷(Volumes)‌:将容器的存储数据挂载到宿主机的目录中,这样即使容器被删除或重启,数据也不会丢失。可以通过在docker run命令中使用-v参数来实现。
  • ‌配置Docker守护进程的重启策略‌:可以通过配置Docker守护进程的重启策略来确保容器在重启后自动重新启动。可以在/etc/docker/daemon.json文件中添加如下配置:jsonCopy Code






    {  "restart_policy": {    "name": "always"  }}

    然后重启Docker服务:bashCopy Code



    sudo systemctl daemon-reloadsudo systemctl restart docker

  • ‌使用持久化存储解决方案‌:如果需要更稳定的存储解决方案,可以考虑使用网络存储(如NFS)或云存储服务,并将Docker数据存储在这些持久化存储上。


Docker pull 命令详解
docker pull 是 Docker 中用于从 Docker 仓库下载镜像的命令。这个命令对于部署容器化应用至关重要,因为它允许您获取所需的镜像,以便在本地或远程环境中运行。

1. 基本用法
bash
采纳
复制
新建文件
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
NAME:镜像的名称,例如 nginx 或 ubuntu。
TAG:镜像的标签,用于指定特定版本的镜像。如果不指定标签,Docker 默认使用 latest 标签。
@DIGEST:镜像的摘要值,用于确保拉取特定版本的镜像。
2. 常用选项
-a, --all-tags:拉取仓库中的所有标签。
--disable-content-trust:不使用内容信任(默认启用)。
-q, --quiet:仅输出镜像 ID。
3. 工作原理
解析镜像名称:Docker 解析您提供的镜像名称和标签(如果有)。
查找镜像:Docker 在配置的仓库中查找指定的镜像。
下载镜像层:Docker 下载镜像的每一层,并将它们存储在本地。
构建镜像:Docker 使用下载的层构建镜像,并将其存储在本地镜像仓库中。
4. 示例
拉取最新版本的 nginx 镜像
bash
采纳
复制
新建文件
docker pull nginx
拉取特定版本的 ubuntu 镜像
bash
采纳
复制
新建文件
docker pull ubuntu:20.04
拉取镜像并仅输出镜像 ID
bash
采纳
复制
新建文件
docker pull -q nginx
拉取仓库中的所有标签
bash
采纳
复制
新建文件
docker pull -a nginx
5. 注意事项
确保您的 Docker 客户端和守护进程都已正确配置,并且能够访问指定的 Docker 仓库。
如果仓库需要身份验证,请确保您已经登录到该仓库。
拉取大型镜像可能需要一些时间,具体取决于您的网络连接速度。
通过理解 docker pull 命令的基本用法、常用选项、工作原理和注意事项,您可以更有效地管理和部署 Docker 容器化应用。

如何删除docker镜像


文心快码 ( Baidu Comate )
如何删除Docker镜像
在Docker中,删除镜像是一个常见的操作,特别是当您需要释放存储空间或清理不再需要的镜像时。以下是删除Docker镜像的步骤和注意事项。

1. 列出所有镜像
在删除镜像之前,您可能需要先列出所有可用的镜像,以便确认要删除的镜像。您可以使用以下命令:

bash
采纳
复制
新建文件
docker images
这将显示一个表格,包括镜像的仓库名、标签、镜像ID、创建时间和大小。

2. 删除单个镜像
要删除单个镜像,您可以使用 docker rmi 命令,后跟镜像的ID或名称(包括标签)。例如:

bash
采纳
复制
新建文件
docker rmi <image_id>
或者

bash
采纳
复制
新建文件
docker rmi <repository>:<tag>
如果镜像正在被容器使用,Docker 将不允许您删除它。在这种情况下,您需要先停止并删除所有使用该镜像的容器。

3. 强制删除镜像
如果您确定要强制删除一个正在被使用的镜像(包括所有使用该镜像的容器),可以使用 -f 选项:

bash
采纳
复制
新建文件
docker rmi -f <image_id>
这将停止并删除所有使用该镜像的容器,然后删除镜像本身。

4. 删除未标记的镜像
有时候,您可能会有一些未标记(即没有标签)的镜像。要删除这些镜像,您可以使用以下命令:

bash
采纳
复制
新建文件
docker images -f dangling=true
这将列出所有未标记的镜像。然后,您可以使用 docker rmi 命令删除它们:

bash
采纳
复制
新建文件
docker rmi $(docker images -f dangling=true -q)
这里,-q 选项用于仅输出镜像ID,然后通过 $() 将其传递给 docker rmi 命令。

5. 注意事项
删除镜像之前,请确保您不再需要它,或者已经将其备份到其他地方。
如果镜像正在被容器使用,Docker 将不允许您删除它。在强制删除之前,请确保您了解这将对正在运行的容器产生的影响。
始终小心使用强制删除选项(-f),因为它会停止并删除所有使用该镜像的容器,这可能会导致数据丢失或服务中断。
通过以上步骤,您可以有效地管理Docker镜像,释放存储空间,并保持系统的整洁。


两次docker pull同一个镜像会有什么结果


文心快码 ( Baidu Comate )
两次docker pull同一个镜像会有什么结果
当您两次运行 docker pull 命令来拉取同一个镜像时,结果取决于几个因素,包括本地是否已经存在该镜像以及镜像仓库中是否有更新。以下是详细分析:

1. 本地镜像已存在且仓库中无更新
如果您已经拉取了某个镜像,并且自上次拉取以来,镜像仓库中没有对该镜像进行任何更新(即没有新的层被添加到镜像中),那么再次运行 docker pull 命令将不会下载任何新数据。Docker 客户端会检查本地镜像与仓库中镜像的摘要或标签,确认它们是否匹配。如果匹配,Docker 会输出类似“Image is up to date for <image_name>:”的消息,表示本地镜像已经是最新的。

2. 本地镜像已存在但仓库中有更新
如果自上次拉取以来,镜像仓库中对该镜像进行了更新(例如,添加了新的层或更改了标签指向的层),那么再次运行 docker pull 命令将下载更新的镜像层,并更新本地镜像。Docker 会输出下载进度和更新后的镜像层信息。

3. 本地镜像不存在
如果本地没有该镜像,那么无论仓库中的镜像是否更新,docker pull 命令都会下载完整的镜像。下载完成后,镜像将被存储在本地镜像仓库中。

4. 使用缓存加速拉取
在某些情况下,即使仓库中的镜像有更新,Docker 也可能利用缓存来加速拉取过程。例如,如果只有镜像的顶层有所更改,而底层保持不变,Docker 可以利用本地存储的底层数据来减少需要下载的数据量。

总结
如果本地镜像已存在且仓库中无更新,docker pull 将不会下载任何新数据,并提示镜像已是最新的。

如果本地镜像已存在但仓库中有更新,docker pull 将下载更新的镜像层并更新本地镜像。

如果本地没有该镜像,docker pull 将下载完整的镜像。

Docker 可能会利用缓存来加速拉取过程,减少需要下载的数据量。

因此,两次运行 docker pull 同一个镜像的结果可能是镜像已是最新的、下载了更新的镜像层或下载了完整的镜像,具体取决于本地镜像的状态和仓库中镜像的更新情况。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-6-8 06:49 , Processed in 0.010801 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表