Docker镜像管理

准备

理解镜像地址结构:

${registry_uri}/${repository_path}/${image_name}:${tag_name}
#eg. docker.io/library/alpine:3.10.1

自己注册一个docker_hub的账号,利用它提供的仓库学习
注册地址
在这里插入图片描述

通过docker客户端的登录命令登录docker_hub,测试刚才注册的账号:

docker login docker.io

在这里插入图片描述

登录信息存储位置:/root/.docker/config.json
可以通过cat命令查看:
在这里插入图片描述
通过base64解码可以反解出密码,命令如下:
echo “加密后的密码” | base64 -d

镜像查询

docker search ${image_name}
#eg. docker search alpine

alpine是Linux的一个体积较小的发行版。docker search 命令和dockerhub官网搜索效果是一样的。

下载镜像(拉取镜像)

docker pull ${image_name}
# eg. docker pull alpine

[root@centos-local-7 ~]# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
540db60ca938: Pull complete
Digest: sha256:69e70a79f2d41ab5d637de98c1e0b055206ba40a8145e7bddb55ccc04e13cf8f
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

从名执行的输出提示可以看到,拉取镜像时,如果没有指定tag,那么默认拉取最新的(latest),如果时从docker官方(即:docker.io/library)仓库拉取镜像,可以直接写镜像名称,不用写全镜像路径结构,最终拉取的镜像是:docker.io/library/alpine:latest。如果用私有仓库,必须写全。

# 拉取指定tag的alpine
docker pull alpine:3.13.5

这里选择的tag是最新的版本,也就是和前面不写tag时默认拉取的latest版本是同一个,这次会发现拉取速度的比上一次快。

# 通过镜像地址的完整结构拉取
docker pull docker.io/library/alpine:3.13

拉取是发现也没有重新下载,感觉好像和3.13.5是同一个,然后又试着拉取了一下3.11.11版本,这回有新的下载。下一个命令可以验证一下。

查看本地镜像

docker images
# 或者
docker image ls
# 可以带上筛选grep
docker images | grep alpine

[root@centos-local-7 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.11.11 e389ae589224 2 weeks ago 5.62MB
alpine 3.13 6dbb9cc54074 2 weeks ago 5.61MB
alpine 3.13.5 6dbb9cc54074 2 weeks ago 5.61MB
alpine latest 6dbb9cc54074 2 weeks ago 5.61MB
hello-world latest d1165f221234 8 weeks ago 13.3kB

[root@centos-local-7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.11.11 e389ae589224 2 weeks ago 5.62MB
alpine 3.13 6dbb9cc54074 2 weeks ago 5.61MB
alpine 3.13.5 6dbb9cc54074 2 weeks ago 5.61MB
alpine latest 6dbb9cc54074 2 weeks ago 5.61MB
hello-world latest d1165f221234 8 weeks ago 13.3kB

[root@centos-local-7 ~]# docker images | grep hello-world
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 8 weeks ago 13.3kB

查看到之前拉取的所有镜像,这里可以看出latest和3.13还有3.13.5指向的是同一个镜像ID,也就是说他们其实是一样的。
也就是说,tag是类似指针的东西。

给镜像打标签

# 把alpine镜像标签打到自己的仓库
# docker tag {imageId} {全格式镜像名}
docker tag 6dbb9cc54074 docker.io/${刚才再dockerhub上创建的用户名就是一自己的仓库}/alpine:v-3.13
# eg. docker tag 6dbb9cc54074 docker.io/adminxxxx/alpine:v-3.13

产看一下结果:
在这里插入图片描述

推送镜像

# 把刚才打好标签的镜像推送到自己的仓库,之前登录过了,可以直接推送
docker push docker.io/adminxxxx/alpine:v-3.13

[root@centos-local-7 ~]# docker push docker.io/adminhubo/alpine:v-3.13
The push refers to repository [docker.io/adminxxxx/alpine]
b2d5eeeaba3a: Mounted from library/alpine
v-3.13: digest: sha256:def822f9851ca422481ec6fee59a9966f12b351c62ccb9aca841526ffaa9f748 size: 528

推送的速度比较快,因为dockerhub上时有这个镜像的,我们push时只是打了一个标签指向这个镜像,不会把这个镜像实体再次推上去。从输出的提示信息也可以看出:Mounted from library/alpine,这是从官方仓库的library/alpine挂载的。

到dockerhub官网查看自己的仓库:
在这里插入图片描述
在这里插入图片描述

docker pull 和 docker push 命令都使用的https协议,需要证书,如果私有仓库没有证书需要修改配置使用http协议。

删除镜像

# 删除docker.io/library/alpine:latest镜像
docker rmi docker.io/library/alpine:latest

在这里插入图片描述

# 删除镜像
# docker rmi {imageID}
docker rmi 6dbb9cc54074
# 如果有其他标签指向这个镜像则会提示错误,我无法删除
# 如果要强制删除: docker rmi -f {imageID}
docker rmi -f 6dbb9cc54074

在这里插入图片描述

docker命令官网详细参考

Docker镜像特性

Docker第四篇(docker镜像特性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值