docker(3、镜像4) 1、公共 Registry 2、本地Registry 3、镜像命令

1、使用公共 Registry

保存和分发镜像的最直接方法就是使用 Docker Hub,除了 Docker Hub,quay.io 是另一个公共 Registry,提供与 Docker Hub 类似的服务。

下面介绍如何用 Docker Hub 存取我们的镜像。
1、首先得在 Docker Hub 上注册一个账号。
2、在 Docker Host 上登录(docker login -u smaller1206 输入密码后登录成功)

3、修改镜像的 repository 使之与 Docker Hub 账号匹配。
Docker Hub 为了区分不同用户的同名镜像,镜像的 registry 中要包含用户名,完整格式为:[username]/xxx:tag
我们通过 docker tag 命令重命名镜像。这里有centos 的镜像修改成加用户名的tag 和账号一致


注:Docker 官方自己维护的镜像没有用户名,比如 centos。
4、通过 docker push 将镜像上传到 Docker Hub。 


Docker 会上传镜像的每一层。因为 smaller1206/centos:v1 这个镜像实际上跟官方的 centos 镜像一模一样,Docker Hub 上已经有了全部的镜像层,所以真正上传的数据很少。同样的,如果我们的镜像是基于 base 镜像的,也只有新增加的镜像层会被上传。

如果想上传同一 repository 中所有镜像,省略 tag 部分就可以了,例如:

docker push smaller1206/centos

5、登录 https://hub.docker.com,在Public Repository 中就可以看到上传的镜像。


如果要删除上传的镜像,只能在 Docker Hub 界面上操作。


这个镜像可被其他 Docker host 下载使用了。 
2、搭建本地 Registry
Docker Hub 虽然非常方便,但还是有些限制,比如:
1、需要 internet 连接,而且下载和上传速度慢。
2、上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的。
3、安全原因很多组织不允许将镜像放到外网。
解决方案就是搭建本地的 Registry。

Docker 已经将 Registry 开源了,同时在 Docker Hub 上也有官方的镜像 registry。下面我们就在 Docker 中运行自己的 registry。
1、启动 registry 容器。

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2

我们使用的镜像是 registry:2。
-d 是后台启动容器。
-p 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。
-v 将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。

2、通过 docker tag 重命名镜像,使之与 registry 匹配。

docker tag smaller1206/centos:v1 registry.example.net:5000/smaller1206/centos:v1

smaller1206/centos:v1自己做的docker hub上的镜像,命名为本地registry格式registry.example.net:5000/smaller1206/centos:v1

docker tag centos registry.example.net:5000/smaller1206/centos:v2

centos是docker 上的原生镜像,命名为本地registry格式registry.example.net:5000/smaller1206/centos:v2
我们在镜像的前面加上了运行 registry 的主机名称和端口。
前面已经讨论了镜像名称由 repository 和 tag 两部分组成。而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx
只有 Docker Hub 上的镜像可以省略 [registry-host]:[port] 。
3、通过 docker push 上传镜像。

4、现在已经可通过 docker pull 从本地 registry 下载镜像了。

除了镜像的名称长一些(包含 registry host 和 port),使用方式完全一样。

以上是搭建本地 registry 的简要步骤。当然 registry 也支持认证,https 安全传输等特性,具体可以参考官方文档 https://docs.docker.com/registry/configuration/

3、镜像命令 

下面是镜像的常用操作子命令:

images    显示镜像列表

history   显示镜像构建历史

commit    从容器创建新镜像

build     从 Dockerfile 构建镜像

tag       给镜像打 tag

pull      从 registry 下载镜像

push      将 镜像 上传到 registry

rmi       删除 Docker host 中的镜像

search    搜索 Docker Hub 中的镜像

发布了62 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/cojn52/article/details/104555209