Docker容器技术:镜像的发布

126 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

之前说过了如何build自己的image,这里继续讲解如何进行image的分享。这样可以给别人使用了。

1. Docker Hub介绍

hub.docker.com/

这个是类似github的网站,可以push你自己的docker image,同时也可以search并pull别人的image。仅仅使用别人的image都不需要注册。

登陆之后也可以看到当前用户自己创建的image。

2. push本地image到hub

之前我们本地有一个image,tag是xxx/hello-world:

注意这里如果你计划push到hub的话,你的tag前缀一定是你的用户名!否则push会报没有权限的错误,只能往自己的name下面push。

push之前你需要先登录docker:

然后我们就可以push了,参数就是image的名称:

接着我们看一下自己的仓库:

此时任何一个人都可以通过指定的命令来pull到本地:

docker pull xxxx/hello-world

但是上述操作有一个问题,例如这个image是怎么产生的?结构是怎么样的?会不会不安全呢?

所以相对直接使用image,更好的是给别人使用你的Dockerfile:

3. 另一种推荐方式

这里我们可以尝试使用另外一种方式,首先我们create并点击自动构建:

然后我们去github上面创建一个仓库,然后把在这个仓库中push本地的Dockerfile,然后建立一个账户关联,只要这个仓库有Dockerfile,更新之后docker这边会自动在后台build成为image。

这里的docker image可以看到dockerfile以及link的仓库地址:

我们还可以看到自动化构建的状态:

这里很推荐这种方式。

4. 搭建维护私有docker仓库

docker其实提供了一个registry的image ,通过一台linux服务器可以使用:

使用很简单,通过docker run创建一个container--一个web服务器,然后就可以往上面来进行push和pull了~

4.1 示例

我们首先在一台linux容器里面启动一台registry:

然后我们在另一台docker容器内部尝试访问这个仓库:

这里telnet命令判断服务可用。(没有就安装这个命令)

然后我们尝试push image,记住这里还需要改一下image的tag,此时我们可以删除原先image并重新build,Tag需要命名为registry的linux机器的ip地址:端口/名称:

然后就可以通过docker push,这里直接push有可能出现一些错误:警告你push的hub是不安全的。此时还需要做一些事情:

首先需要在/etc/docker下面新增一个json文件,同时写入:

表示信任这个地址的仓库!有了这个以后还需要编辑docker service的启动文件:

在里面加一行:

这样docker进程启动之后就会加载这个文件,之后我们重启docker服务之后就可以push了:

但是这个registry没有web界面,我们怎么验证push上去没有呢?这里我们可以通过registry的api来进行一些操作,可以看官网文档:

然后我们可以删除本地的image,然后pull回来: