博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker 镜像的推送(六)
阅读量:6923 次
发布时间:2019-06-27

本文共 3554 字,大约阅读时间需要 11 分钟。

一、为镜像命名

无论采用何种方式保存和分发镜像,首先都得给镜像命名。

当我们执行 docker build 命令时已经为镜像取了个名字,例如前面:

ubuntu_with_apache_dockerfile

这里的 ubuntu_with_apache_dockerfile 就是镜像的名字。通过dock images可以查看镜像的信息。

Docker 镜像的推送(六)

这里注意到 ubuntu_with_apache_dockerfile 对应的是 REPOSITORY,而且还有一个叫 latest 的 TAG。

实际上一个特定镜像的名字由两部分组成:repository 和 tag。

[image name] = [repository]:[tag]

如果执行 docker build 时没有指定 tag,会使用默认值 latest,我们也可以在构建的时候指定版本号作为 tag。

docker build -t ubuntu_with_apache_dockerfile:2.4

也可以使用 docker tag 对镜像重新命名,后面我们马上会用到。

二、推送到官方 Docker Hub

保存和分发镜像的最直接方法就是使用 Docker Hub。

Docker Hub 是 Docker 公司维护的公共 Registry。用户可以将自己的镜像保存到 Docker Hub 免费的 repository 中。如果不希望别人访问自己的镜像,也可以购买私有 repository。

除了 Docker Hub,阿里云也提供国内的 Docker Hub,地址为  。

下面介绍如何用 Docker Hub 存取我们的镜像。

1、首先得在 Docker Hub 上注册一个账号。

注册大家可以登录地址  进行注册,也可以直接使用阿里云 Docker Hub,速度会快些。

2、在 Docker Host 上登录

使用你们创建的账号和密码即可登录。

Docker 镜像的推送(六)

3、修改镜像命名

修改镜像的 repository 使之与 Docker Hub 账号匹配。

Docker Hub 为了区分不同用户的同名镜像,镜像的 registry 中要包含用户名,完整格式为:[username]/xxx:tag。

我们通过 docker tag 命令重命名镜像。Docker 官方自己维护的镜像没有用户名,比如 ubuntu ,如下图。

Docker 镜像的推送(六)

4、镜像上传

通过docker push将镜像上传到 Docker Hub。

Docker 镜像的推送(六)

Docker 会上传镜像的每一层。因为 wangzan18/ubuntu:v2.4 这个镜像实际上跟官方的 ubuntu 镜像一模一样,Docker Hub 上已经有了全部的镜像层,所以真正上传的数据很少。同样的,如果我们的镜像是基于 base 镜像的,也只有新增加的镜像层会被上传。如果想上传同一 repository 中所有镜像,省略 tag 部分就可以了,例如:

docker push wangzan18/ubuntu

5、登录查看上传的镜像

登录  在Public Repository 中就可以看到上传的镜像。

Docker 镜像的推送(六)

6、镜像的删除

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

Docker 镜像的推送(六)

7、镜像的拉取

因为我们上传的是公共镜像仓库,任何人都可以下载使用。

docker pull wangzan18/ubuntu:v2.4

三、推送到阿里云 Docker Hub

1、注册账号

登录  注册账号。开头服务,设置 Docker 密码,后面进行登录使用,务必记住。

Docker 镜像的推送(六)

2、创建仓库命名空间

Docker 镜像的推送(六)

3、创建镜像仓库

因为我们目前还涉及不到自动构建,所以代码源我们这里选择本地仓库。

Docker 镜像的推送(六)

创建完成之后,我们可以查看阿里云的操作指南,非常详细。

Docker 镜像的推送(六)

4、登录阿里云docker registry

登录registry的用户名是您的阿里云账号全名,密码是您开通服务时设置的密码。

sudo docker login --username=wangzan18@126.com registry.cn-hangzhou.aliyuncs.com

Docker 镜像的推送(六)

5、对镜像重新tag

docker tag 20c44cd7596f registry.cn-hangzhou.aliyuncs.com/wzlinux/ubuntu:2.5

我们首先获取镜像的 ID,然后对 ID 进行 tag。

Docker 镜像的推送(六)

5、将镜像推送到registry

docker push registry.cn-hangzhou.aliyuncs.com/wzlinux/ubuntu:2.5

Docker 镜像的推送(六)

6、查看推送的镜像

Docker 镜像的推送(六)

7、拉取镜像

因为我们是公共镜像,任何人都可以拉取。

docker pull registry.cn-hangzhou.aliyuncs.com/wzlinux/ubuntu:2.5

Docker 镜像的推送(六)

四、运行自己的 Docker Registry

显然,拥有 Docker 镜像的一个公共的 Registry 非常有用,但是,有时候我们可能希望构建和存储包含不想被公开的信息或数据的镜像。这时候我们有以下两种选择。

  • 利用 Docker Hub 上的私有仓库。
  • 在防火墙后运行我们自己的 Registry。

感谢 Docker 公司的团队开源了他们用于运行 Docker Registry 代码,这样我们就可以基于此代码在内部运行自己的 Registry。目前 Registry 还不支持用户界面,只能以 API 服务的方式来运行。

1、从容器运行 Registry

从 Docker 容器安装一个 Registry 非常简单。如下操作。

docker run -d -p 5000:5000 registry:2

Docker 镜像的推送(六)

2、测试新 Registry

那我们就拿本地镜像 ubuntu 进行测试,看看它是否可以上传到我们新的镜像,我们首先要找到镜像的ID。

root@ubuntu:~# docker images ubuntuREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEubuntu              latest              20c44cd7596f        11 days ago         123MB

然后我们使用新的 Registry 为镜像打标签。

root@ubuntu:~# docker tag 20c44cd7596f localhost:5000/wzlinux/ubuntu:2.0root@ubuntu:~# docker images localhost:5000/wzlinux/ubuntuREPOSITORY                      TAG                 IMAGE ID            CREATED             SIZElocalhost:5000/wzlinux/ubuntu   2.0                 20c44cd7596f        11 days ago         123MB

我们在镜像的前面加上了运行 registry 的主机名称和端口。

前面已经讨论了镜像名称由 repository 和 tag 两部分组成。而 repository 的完整格式为:[registry-host]:[port]/[username]/xxx

只有 Docker Hub 上的镜像可以省略 [registry-host]:[port] 。

3、将镜像推送到新 Registry

docker push localhost:5000/wzlinux/ubuntu

Docker 镜像的推送(六)

4、从本地 Registry 拉取镜像

root@ubuntu:~# docker pull localhost:5000/wzlinux/ubuntu:2.02.0: Pulling from wzlinux/ubuntuDigest: sha256:d4558f7616365813792918b6d73dc474bcacf99b13d1ed947731a653fb6e260cStatus: Downloaded newer image for localhost:5000/wzlinux/ubuntu:2.0

参考文档:

     本文转自 wzlinux 51CTO博客,原文链接:http://blog.51cto.com/wzlinux/2045716,如需转载请自行联系原作者

你可能感兴趣的文章
折半算法的demo
查看>>
windows && linux 访问github
查看>>
【JavaScript】容器尺寸/偏移尺寸/滚动条距离
查看>>
commons-fileupload的使用
查看>>
518抽奖软件教程之:开盘选房摇号
查看>>
Perl模块list
查看>>
网规:第2章 计算机网络规划与设计-2.5逻辑网络设计
查看>>
[软件] 装机员Ghost Win10 RS1 1067 64位纯净贺岁版2017
查看>>
Ubuntu 16.04 安装搜狗拼音
查看>>
项目开发之产品环境
查看>>
通过Intel XDK编写跨平台app(二)
查看>>
cache和buffer介绍
查看>>
论刚入门的菜鸟如何学网络安全,如何学习***测试,网络安全菜鸟的学习之旅...
查看>>
feignclient的拦截
查看>>
聊聊flink的log.file配置
查看>>
伪造的ARP应答报文,阻碍对方通信
查看>>
iOS BLE4.0开发--工作中遇到的一些坑
查看>>
执行Shell脚本的4种方法
查看>>
部署QtQuick应用程序到安卓设备上时,AVD突然检测不到目标设备
查看>>
Linux笔记(shell基础,历史命令,命令补全/别名,通配符,输出重定向)
查看>>