docker pull 更新本地镜像(Docker 拉取镜像及标签操作 pull | tag)
docker pull 更新本地镜像
Docker 拉取镜像及标签操作 pull | tag重翻Fabric项目的源码,发现Docker部分内容,有很多不尽理解的地方,看着看着,就看到使用docker pull拉取Fabric镜像及使用docker tag为镜像重命名,稍作思虑,发现虽然使用过,却未求甚解,得过且过,如今已经忘了如何运用……
1. docker pull
从镜像源拉取镜像,一般来说是从Docker Hub拉取镜像(image)
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
选项,简写 | 默认 | 描述 |
---|---|---|
–all-tags , -a | 从镜像库拉取所有tag标签名的镜像 | |
–disable-content-trust | true | 忽略镜像校验 |
比如:
$ docker pull hyperledger/fabric-$IMAGES:$FABRIC_TAG Options: # -a 拉取所有不同标签的镜像 -a, --all-tags Download all tagged images in the repository # 忽略镜像校验,默认项 --disable-content-trust Skip image verification (default true)
我们实际操作一下看看,操作环境是常用的Ubuntu16.04
1.1 普通拉取
实际上我们可以直接拉取该镜像的最新版,默认拉取tag为latest的镜像
比如:
#拉取了java的镜像,tag为latest $ docker pull java Using default tag: latest latest: Pulling from library/java 5040bd298390: Pull complete fce5728aad85: Pull complete 76610ec20bf5: Pull complete 60170fec2151: Pull complete e98f73de8f0d: Pull complete 11f7af24ed9c: Pull complete 49e2d6393f32: Pull complete bb9cdec9c7f3: Pull complete Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d Status: Downloaded newer image for java:latest
拉取完成,我们可以查看已经拥有的镜像
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE java latest d23bdf5b1b1b 20 months ago 643MB
1.2 tag标签名拉取
从上述输出内容,我们可以发现,虽然只拉取了一个java镜像,但是拉取过程中,却有多个Pull complete,5040bd298390和fce5728aad85等8个,这是因为镜像可以由多“层”(layers)组成,而这种“层”可以被其他的镜像复用(有点像前端的组件或模块),从而组成新镜像。
如果拉取另一个镜像,其中某些“层”已经下载过,那么docker pull则只会拉取元数据,而不会重复拉取“层”。
Docker的镜像库使用了内容寻址储存功能,而镜像ID是由SHA256作为摘要代表了其中包含的配置及“层”,下面我们来证明一下,因为我拉取的是java:latest,即tag名为latest的镜像,所以我需要找到和latest同版不同tag名的镜像(本质上是一个镜像,只是标签名不一样),在Docker Hub上搜到如下结果:
拉取tag名为8-jdk的镜像:
$ docker pull java:8-jdk 8-jdk: Pulling from library/java Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d Status: Downloaded newer image for java:8-jdk
很明显,此处的拉取没有看到“层”的信息,且摘要的sha256值也与tag名为latest的镜像完全一样,本质上这是完全相同的两个镜像,由相同的“层”组成,所以不需要再次拉取了。
此时,你们也许会和我产生相同的疑问,“完全相同?”,那是不是代表他们在操作环境中只存在一个?那么又用谁的tag名来命名呢?我们来看如下输出:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE java 8-jdk d23bdf5b1b1b 20 months ago 643MB java latest d23bdf5b1b1b 20 months ago 643MB
我们可以清楚的看到,此时查看所有镜像,有tag名分别为8-jdk和latest的镜像罗列其上,java:8-jdk和 java:latest拥有相同的image ID,因为本质上他们确实是 同一镜像 ,只是由 不同标签 所标记。
由于镜像完全相同,则他们的“层”只储存一次,且不会消耗额外的磁盘空间,即操作环境中只存在一个java镜像,也可以用不同的tag标记这个镜像。
更多关于镜像,“层”,内容寻址存储库的信息,请移步还未开的新坑深度解析Docker镜像,“层”和存储驱动
1.3 摘要拉取
通过上述两种拉取镜像的方式,我们获得了一个sha256
sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
我们下面尝试摘要拉取镜像的方法:
$ docker pull java@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d: Pulling from library/java Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d Status: Image is up to date for java@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
该摘要的镜像,已经是最新,不需要拉取。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE java 8-jdk d23bdf5b1b1b 20 months ago 643MB java latest d23bdf5b1b1b 20 months ago 643MB
镜像列表毫无变动。
这里需要提及一个知识点,摘要可以在Dockerfile中配合FROM使用:
FROM java@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
MAINTAINER some maintainer <maintainer@example.com>
这种引用方式,由于特定摘要,会将镜像固定为特定的版本,且不会更新,如需要使用其他版本,则需要变更摘要内容
1.4 从其他注册中心拉取
重申,默认情况下,docker pull从Docker Hub拉取镜像。当然,我们可以设置从其他注册中心拉取镜像:
$ docker pull localregistry.example:6666/testing/test-image
此处需要注意,注册中心的URL前不需要加http://或https://
1.5 从同一镜像库,一次拉取多个镜像
使用docker pull -a 则可以拉取同一镜像库中所有镜像。
1.6 取消拉取
取消拉取动作可以杀死拉取进程,直接在操作界面CTRL+c。
2. docker tag
给源镜像创建一个新的tag
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
镜像名,是由斜杠分割的每一个name组成部分构成的,如library/java。
用冒号分割name和tag,如library/java:8-jdk。
我们还可以在镜像名前加一些前缀,表示镜像来源是其他注册中心或私有注册中心,如
localregistry.example:6666/library/java:8-jdk
2.1 给Name引用的镜像加标签
$ docker tag java java:byname
读者们可以自行尝试docker tag java java:byname和docker tag java lib/java:byname有何异同
2.2 给ID引用的镜像加标签
$ docker tag d23bdf5b1b1b java:byid
2.3 给Name和Tag引用的镜像加标签
$ docker tag java:8-jdk java:bynameandid
2.4 给私有注册中心的镜像加标签
为了将镜像上传到私有注册中心,需要给镜像重命名,规则为:
$ docker tag java:8-jdk localregistry.example:6666/library/java:8-jdk-v1
docker pull和 docker tag是使用频率颇高的命令,使用方法简单,却有很多技巧,读者们可以自行练习、尝试。
后记
其实接触docker也很久了,怎么想到写这部分的内容呢?
下笔的初衷,是为求知识的沉淀,一直以来,上级领导对我的要求是快速应用技术,产生价值,那么理论研究,底层原理,甚至基础的命令,可能都不知真意,仅仅是能用,会用。
就像驾校教会学员驾驶技术(也可能没教会),却未曾教授汽车的组成(架构),运作机制(底层原理)。手会挂挡转方向盘,脚会踩离合油门刹车,是不是也就够了,会开车了。
那么为什么要沉淀?
其一,当有人问你,一些命令,一些原理的时候,你支支吾吾无法作答,因为你只是通过指尖的肌肉记忆了命令的使用方法,更遑论原理或底层;
其二,触类旁通,从最初的前端菜鸟,到后来的使用Spring Boot架构写Java应用,再到现在学习使用Linux命令(shell)、Docker、Go来应用区块链框架 HyperLedger Fabric 做生产,看似有些跨度,然而还是一个相同的领域,人与机器之间的交流。我学会的是用不同的语种去和会各种机器语言的机器去交流,就像一个活在机器国度的异族,会读,会写。在机器世界的践行之路上,与一开始的HTML,CSS,JavaScript,我的启蒙,渐行渐远。正值国庆前夕,暂且写在这里,感觉自己就是一颗过度吸水和接受充分光照的豆芽,越长越高,然而越高的地方越是纤细,根部不够繁茂,颈部不够粗壮,越是易弯易折。应当时刻鞭策自己,不弃初心,不忘本职,汲取前端更有营养的内容,强壮己身。
以上这篇Docker 拉取镜像及标签操作 pull | tag就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
- docker挂载的注意事项(解决docker日志挂载的问题)
- docker容器启动执行多条命令(详解Shell脚本控制docker容器启动顺序)
- docker离线安装步骤(Docker安装FastDFS的方法步骤)
- 如何使用docker启动tomcat(简述Docker安装Tomcat镜像并部署web项目)
- docker容器启动后秒退(解决docker run 或者 docker restart 启动镜像就自动退出)
- dockerexec详解(docker中的run/cmd/entrypoint的区别详解)
- docker容器运行环境(Docker 清理环境操作)
- docker镜像配置的挂载路径(解决docker挂载的目录无法读写问题)
- docker镜像实例(Docker的镜像制作与整套项目一键打包部署的实现)
- docker搭建方法(超简单实现Docker搭建个人博文系统)
- 怎么用docker中的mysql连接数据库(连接docker里面的mysql失败解决方法)
- docker如何简化部署(Docker使用Portainer搭建可视化界面的方法)
- dockerfile挂载目录(解决docker run中使用 ./ 相对路径挂载文件或目录失败的问题)
- docker配置和管理(Docker 容器监控原理及 cAdvisor的安装与使用说明)
- docker部署tomcat(Docker安装Tomcat、MySQL和Redis的步骤详解)
- 解决docker的tls(ssl)证书过期问题(解决docker的tlsssl证书过期问题)
- 鱿鱼炒蒜苔不是黑暗料理,这样做清香扑鼻,鲜美脆嫩,开胃又下饭(鱿鱼炒蒜苔不是黑暗料理)
- 蒜苔炒鱿鱼(蒜苔炒鱿鱼)
- 远离 五毛食品 洛阳80后妈妈发明的 飞行棋 成校园爆款 玩具(远离五毛食品)
- 失传的古代飞行棋游戏 六博(失传的古代飞行棋游戏)
- 感冒要吃什么药(猫咪感冒要吃什么药)
- 下雪会怎样(下雪怎样画)
热门推荐
- nginx和apache服务器配置(Apache、Nginx 服务配置服务器端包含SSI)
- python与php(解决Python3 被PHP程序调用执行返回乱码的问题)
- 本地phpstudy搭建网站教程学习(phpstudy搭建本地网站服务器图文教程)
- 跨服务器mysql数据迁移方案(从云数据迁移服务看MySQL大表抽取模式的原理解析)
- vscode快速生成html框架(VSCode 自定义html5模板的实现)
- 租用云服务器或者云主机价格(云主机租用注意事项有哪些?)
- 云空间无法连接服务器(怎样测试云服务器)
- linux安装php目录路径修改(ubuntu环境下的php相关路径与修改方法)
- 一般用云主机干嘛(免费云主机怎么申请?有什么限制?)
- dedecms伪静态要怎么设置(DedeCMS系统自定义字段图片调用问题的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9