docker 仓库镜像 替换_「Docker」 - 镜像仓库

本文介绍了Docker镜像仓库的作用,如Docker Hub,以及如何管理Docker镜像,包括拉取、搜索和删除镜像。Docker Hub作为官方镜像仓库,提供了丰富的镜像资源和权限管理。此外,通过docker inspect可以获取镜像详细信息。
摘要由CSDN通过智能技术生成

一、镜像仓库

将Docker镜像和Git进行对比,镜像仓库类似GitHub、GitLab等托管平台,Docker的镜像仓库托管的不是代码项目,而是镜像。

Docker镜像仓库最大的作用是实现了Docker镜像的分发。借助镜像仓库,得到了一个镜像的中转站,可以将开发环境上所使用的镜像推送至镜像仓库,并在测试或生产环境上拉取到它们,而这个过程仅需要几个命令,甚至自动化完成。

Docker另一项重要的功能是将镜像管理纳入到了功能之中,实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了移植过程中的繁琐操作。利用Docker的镜像管理功能,可以很方便的通过网络传输和分享镜像,并保障镜像内容的一致性。

8c8bca3897c84feb91a4b13d173a5069.png

A、获取镜像

可以通过很多方式将镜像引入Docker之中,但最常用的获取镜像的方式是直接从镜像仓库中拉取,因为这种方式简单、快速、有保障。

d999c7ec33a1192689a9c9a64f1773a6.png

可以使用docker pull命令拉取镜像,命令的参数就是镜像仓库名。

# 拉取镜像
docker pull ubuntu

Using default tag: latest
latest: Pulling from library/ubuntu
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
Digest: sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Status: Downloaded newer image for ubuntu:latest

# 查看本地镜像
docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              47b19964fb50        12 days ago         88.1MB

运行命令后,Docker就会开始从镜像仓库中拉取指定的镜像,在控制台中,可以看到镜像拉取的进度。下载进度会分为几行,每行代表一个镜像层。Docker首先会拉取镜像所基于的所有镜像层,之后再单独拉取每一个镜像层并组合成这个镜像。如果在本地已经存在相同的镜像层(共享于其他的镜像),Docker就直接略过这个镜像层的拉取而直接采用本地的内容。

当没有提供镜像标签时,Docker会默认使用latest这个标签,也能够使用完整的镜像命名来拉取镜像。

二、Docker Hub

Docker Hub是Docker官方建立的中央镜像仓库,除了普通镜像仓库的功能外,它内部还有更加细致的权限管理,支持构建钩子和自动构建,以及优雅的web操作页面。

754d5fbf57e2fee2b180fa764893ffcf.png

Docker Hub的定位是Docker的中央镜像仓库系统,同时也是Docker Engine的默认镜像仓库,所以使用Docker Hub是开发者共享镜像的首选,常用服务软件的镜像都能在Docker Hub中找到,甚至能找到针对它们不同用法的不同镜像。

同时,Docker Hub也允许用户上传镜像,与Docker用户共享成果。

A、搜索镜像

由于Docker Hub提供了一套完整的web操作界面,搜索其中的镜像会非常方便。

a594fe7a02be84881a8d47e70ae486ab.png

除了直接通过Docker Hub网站搜索镜像这种方式外,还可以用docker CLI中docker search这个命令搜索Docker Hub中的镜像。

docker search ubuntu

NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                 Ubuntu is a Debian-based Linux operating sys…   9198                [OK]
dorowu/ubuntu-desktop-lxde-vnc                         Ubuntu with openssh-server and NoVNC            270                                     [OK]
rastasheep/ubuntu-sshd                                 Dockerized SSH service, built on top of offi…   201                                     [OK]

使用docker search命令,可以得到一个类似于Docker Hub网页版搜索的镜像列表结果,其中的信息与网页版也是类似的。通过这种方式可以在不方便访问web的环境下搜索镜像。

三、管理镜像

docker images可以列出本地 Docker 中的所有镜像,如果要获得镜像更详细的信息,可以通过docker inspect命令。

A、参数识别

不论通过镜像名还是镜像ID传递到docker inspect或者其他类似的命令(需要指定Docker对象的命令)里,Docker都会根据传入的内容去寻找与之匹配的内容,只要所给出的内容能够找出唯一的镜像,那么Docker就会对这个镜像执行给定的操作。反之,如果找不到唯一的镜像,那么操作不会进行,Docker也会显示错误。

例如:

docker images

REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
php                   7-fpm               f214b5c48a25        11 days ago         368MB
ubuntu                latest              cd6d8154f1e1        13 days ago         84.1MB
redis                 3.2                 2fef532eadb3        13 days ago         76MB
redis                 4.0                 e1a73233e3be        13 days ago         83.4MB
openresty/openresty   1.13.6.2-alpine     08d5c926e4b6        3 months ago        49.3MB
cogset/cron           latest              c01d5ac6fc8a        16 months ago       125MB

镜像ID前缀为2的只有redis:3.2,可以使用2来指代这个镜像。

docker inspect 2

而前缀为c的镜像有两个,这时候如果直接使用c来指代镜像的话,Docker会提示未能匹配到镜像。

B、删除镜像

虽然Docker镜像占用的空间比较小,但日渐冗杂的镜像和凌乱的镜像版本会让管理越来越困难,所以有时候需要清理一些无用的镜像,将它们从本地的Docker Engine中移除。

# 删除本地镜像
docker rmi ubuntu

Untagged: ubuntu:latest
Untagged: ubuntu@sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Deleted: sha256:47b19964fb500f3158ae57f20d16d8784cc4af37c52c49d3b4f5bc5eede49541
Deleted: sha256:d4c69838355b876cd3eb0d92b4ef27b1839f5b094a4eb1ad2a1d747dd5d6088f
Deleted: sha256:1c29a32189d8f2738d0d99378dc0912c9f9d289b52fb698bdd6c1c8cd7a33727
Deleted: sha256:d801a12f6af7beff367268f99607376584d8b2da656dcd8656973b7ad9779ab4
Deleted: sha256:bebe7ce6215aee349bee5d67222abeb5c5a834bbeaa2f2f5d05363d9fd68db41

删除镜像的过程实际是删除镜像内的镜像层,在命令打印的结果里,可以看到被删除的镜像层以及它们的ID。如果存在两个镜像共用一个镜像层的情况,也不需要担心Docker会删除被共享的那部分镜像层,只有当镜像层只被当前被删除的镜像所引用时,Docker才会将它们从硬盘空间中移除。

docker rmi命令也支持同时删除多个镜像,只需要通过空格传递多个镜像ID或镜像名即可。


参考:

http://blog.poetries.top/2018/11/20/docker-base/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值