Docker 下载镜像
文章首发个人网站: https://www.exception.site/docker/docker-pull-image
本文中,我们将需要学习 Docker 如何下载镜像?
一、前言
大家都知道,镜像是 Docker 三大核心概念中最重要的。如果我们想要在本地运行容器,就必须保证本地存在对应的镜像。所以,第一步,我们需要下载镜像。当我们尝试下载镜像时,Docker 会尝试先从默认的镜像仓库(默认使用 Docker Hub 公共仓库)去下载,当然了,用户也可以自定义配置想要下载的镜像仓库。
二、下载镜像
镜像是运行容器的前提,我们可以使用 docker pull [IMAGE_NAME]:[TAG]
命令来下载镜像,其中 IMAGE_NAME
表示的是镜像的名称,而 TAG
是镜像的标签,也就是说我们需要通过 “镜像 + 标签” 的方式来下载镜像。
注意:您也可以不显式地指定 TAG, 它会默认下载 latest 标签,也就是下载仓库中最新版本的镜像。这里并不推荐您下载 latest 标签,因为该镜像的内容会跟踪镜像的最新版本,并随之变化,所以它是不稳定的。在生产环境中,可能会出现莫名其妙的 bug, 推荐您最好还是显示的指定具体的 TAG。
举个例子,如我们想要下载一个 Mysql 5.7 镜像,可以通过命令来下载:
docker pull mysql:5.7
会看到控制台输出内容如下:
注意:由于官方 DockerHub 仓库服务器在国外,下载速度较慢,所以我将仓库的地址更改成了国内的
docker.io
的镜像仓库,所以在上图中,镜像前面会有docker.io
出现。
当有 Downloaded 字符串输出的时候,说明下载成功了!!
二、验证
让我们来验证一下,本地是否存在 Mysql5.7 的镜像,运行命令:
docker images
可以看到本地的确存在该镜像,确实是下载成功了!
三、下载镜像相关细节
再说说上面下载镜像的过程:
通过下载过程,可以看到,一个镜像一般是由多个层(layer
) 组成,类似 f7e2b70d04ae
这样的串表示层的唯一 ID。
PS: 实际上完整的 ID 包括了 256 个 bit, 64 个十六进制字符组成的。
您可能会想,如果多个不同的镜像中,同时包含了同一个层(layer
),这样重复下载,岂不是导致了存储空间的浪费么?实际上,Docker 并不会这么傻会去下载重复的层(layer
),Docker 在下载之前,会去检测本地是否会有同样 ID 的层,如果本地已经存在了,就直接使用本地的就好了。
另一个问题,不同仓库中,可能也会存在镜像重名的情况发生, 这种情况咋办?
严格意义上,我们在使用 docker pull
命令时,还需要在镜像前面指定仓库地址(Registry
), 如果不指定,则 Docker 会使用您默认配置的仓库地址。例如上面,由于我配置的是国内 docker.io
的仓库地址,我在 pull
的时候,docker 会默认为我加上 docker.io/library
的前缀。
如:当我执行 docker pull mysql:5.7
命令时,实际上相当于 docker pull docker.io/mysql:5.7
,如果您未自定义配置仓库,则默认在下载的时候,会在镜像前面加上 DockerHub 的地址。
Docker 通过前缀地址的不同,来保证不同仓库中,重名镜像的唯一性。
四、PULL 子命令
命令行中输入:
docker pull --help
会得到如下信息:
[root@iZbp1j8y1bab0djl9gdp33Z ~]# docker pull --help
Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
--help Print usage
我们可以看到主要支持的子命令有:
-a, --all-tags=true|false
: 是否获取仓库中所有镜像,默认为否;--disable-content-trust
: 跳过镜像内容的校验,默认为 true;
五、总结
本文中,我们着重了解了 Docker 中如何下载镜像,下载镜像相关的细节,以及 Docker pull 相关子命令。祝您学习愉快!
Docker 下载镜像的更多相关文章
- Docker 下载镜像慢的问题解决方法
让你火箭般的速度下载docker镜像! 的冷漠度 百家号17-11-1713:09 因为有墙的原因所以在国内下载docker镜像的速度非常慢,有时候是几kb每秒,那个蛋疼的等待,真是谁等谁知道!下面我 ...
- docker下载镜像太慢的解决方案
参考链接:https://blog.csdn.net/weixin_43569697/article/details/89279225 docker下载镜像卡死或太慢找了网上很多方法,使用镜像中国也是 ...
- 国内Docker下载镜像提速方法之一
众所周知,Docker Hub并没有在国内部署服务器或者使用国内的CDN服务,因此在国内特殊的网络环境下,镜像下载十分耗时.为了克服跨洋网络延迟,能够快速高效地下载Docker镜像,我采用了DaoCl ...
- docker下载镜像
注意:必须先搜索镜像,否则有时候无法下载 Docker下载Redis镜像并运行容器 .搜索查找镜像 docker search redis .下载镜像 docker pull redis:latest ...
- Docker下载镜像并创建容器运行
在linux系统中安装完成docker后,我们开始进行docker的镜像.容器的使用. 在使用docker时,首先要明确的两个概念:image(镜像) 与 container (容器) image: ...
- Docker下载镜像出现failed to register layer: symlink....问题
在用Docker下载RabbitMQ的时候出现如下问题 个人解决方案:重启Docker. 若重启还是无法解决问题,可以先关闭Docker systemctl stop docker 然后把已下载的相关 ...
- docker 下载镜像 ( 以 mysql为例 )
一.官方镜像仓库 https://hub.docker.com/explore/ 二.常用操作 三.使用命令查看 mysql [root@localhost fw]# docker search my ...
- Docker下载镜像太慢问题
我在linux上安装了Docker,docker pull 了一个nginx镜像,真他妈是太慢了用了1-2个小时才下载完成. 在网上找到了优化方法,那真是速度一下就起飞了,其实只要配置一下拉取的doc ...
- docker下载镜像received unexpected Http status:500 Internal Server Error
解决办法 1.就是网上说的 关闭selLinue ,但是对我就没用 2.就是不使用镜像加速 ,但是出现连接超时 3.就是加上具体版本号 结果就成功了 [root@localhost ~]# docke ...
随机推荐
- Windows环境下应用Java代码操作Linux资源
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- 关于tomcat WEB-INF/lib下类加载顺序
关于tomcat WEB-INF/lib下类加载顺序问题 问题描述 smc应用最近碰到一个线上问题,预发机器规则测试接口没问题,但是线上机器就是调用有问题,表面上看,maven模块引用的是自己想要的j ...
- 利用Google趋势来预测比特币价格 - 续1
之前发布了一篇文章利用Google趋势来预测比特币价格,说到了看到一篇文章很朴素的介绍了google趋势和比特币价格的一个关系.觉得很简单直白,就根据那个模型写了个程序,部署起来了,从十一月十四号到现 ...
- 测试工作之--adb代码
1.抓log方法 (bat文件) mkdir D:\logcatset /p miaoshu=请描述操作:adb logcat -v threadtime > D:\logcat\%miaosh ...
- ubuntu中vi下删除键和上下左右键的异常解决
解决办法: 卸载旧的vim apt-get remove vim-common 安装新的vim apt-get install vim tips:可是我发现,无论卸载还是安装都是版本为(2 ...
- (二)shell中的变量
1.常用系统变量 $HOME.$PWD.$SHELL.$USER等 2.自定义变量 基本语法: (1)定量变量:变量=值 (2)撤销变量:unset 变量 (3)声明静态变量:readonly变量 注 ...
- 练习html,css,js仿制百度首页
1.练习目的 练习使用html,scc,js 完成界面样式,用ul标签实现文本框下拉,通过js完成添加列表内容等功能 2.效果 3.程序代码 <!DOCTYPE html> <htm ...
- Java实现杨辉三角
杨辉三角用了两种方法解决 二维数组/递归方法 +—————————————————————————— import java.util.Scanner; public class YangHui02 ...
- tomcat部署项目启动采坑之UnknownHostException
在一台新服务器上,把war包部署在tomcat上,很普通的很简单的一个活,但我踩到一个大坑. 需要组件tomcat8,mysql5.7,mosqquito1.5,centos7,war包,把组件都装好 ...
- Spring Cloud微服务笔记(五)Feign
Feign 一.Feign概述 Feign是一个声明式的Web Service客户端.在Spring Cloud 中使用Feign,可以做到 使用HTTP请求访问远程服务,就像调用本地方法一样,同时它 ...