搭建一个私有的Docker registry(2)

现在回过头来看我们的DO服务器,SSH登录其上。我们将要使用一个官方Docker registry镜像

输入如下命令,开启registry。

docker run \

-e SETTINGS_FLAVOR=s3 \

-e AWS_BUCKET=bucket-name \

-e STORAGE_PATH=/registry \

-e AWS_KEY=your_aws_key \

-e AWS_SECRET=your_aws_secret \

-e SEARCH_BACKEND=sqlalchemy \

-p 5000:5000 \

--name registry \

-d \

registry

Docker将会从Docker Hub上拉取所需的文件系统分层(fs layers)并启动守护容器(daemonised container)。

测试registry

如果上述操作奏效,你可以通过ping命令,或者查找它的内容来测试registry(虽然这个时候容器还是空的)。

我们的registry非常基础,而且没有提供任何“验明正身”的方式。因为添加身份验证可不是一件轻松事(至少我认为没有一种部署方法是简单的,像是为了证明你努力过似的),我觉得“查询/拉取/推送”仓库内容的最简单方法就是通过SSH通道的未加密连接(通过HTTP)。

打开SSH通道的操作非常简单:

ssh -N -L 5000:localhost:5000 root@your_registry.com

这条命令建立了一条从registry服务器(前面执行docker run命令的时候我们见过它)的5000号端口到本机的5000号端口之间的 SSH 管道连接。

如果你现在用浏览器访问 :5000/v1/_ping,将会看到下面这个非常简短的回复。

{}

这个意味着registry工作正常。你还可以通过登录 :5000/v1/search 来查看registry内容,内容相似:

{

"num_results":2,

"query":"",

"results":[

{

"description":"",

"name":"username/first-repo"

},

{

"description":"",

"name":"username/second-repo"

}

]

}

创建一个镜像

我们现在创建一个非常简单的Docker镜像,来检验我们新弄好的registry。在我们的本机上,用如下内容创建一个Dockerfile(这里只有一点代码,在下一篇文章里我将会展示给你如何将一个Rails应用绑定进Docker容器中。):

# ruby 2.2.0 的基础镜像

FROM ruby:2.2.0

MAINTAINER MichelangeloChasseur<michelangelo.chasseur@touchwa.re>

并创建它:

docker build -t localhost:5000/username/repo-name .

localhost:5000这个部分非常重要:Docker镜像名的最前面一个部分将告知docker push命令我们将要把我们的镜像推送到哪里。在我们这个例子当中,因为我们要通过SSH管道连接远程的私有registry,localhost:5000精确地指向了我们的registry。

如果一切顺利,当命令执行完成返回后,你可以输入docker images命令来列出新近创建的镜像。执行它看看会出现什么现象?

推送到仓库

接下来是更好玩的部分。实现我所描述的东西着实花了我一点时间,所以如果你第一次读的话就耐心一点吧,跟着我一起操作。我知道接下来的东西会非常复杂(如果你不自动化这个过程就一定会这样),但是我保证到最后你一定都能明白。在下一篇文章里我将会使用到一大波shell脚本和Rake任务,通过它们实现自动化并且用简单的命令实现部署Rails应用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7436ccb03bd8470fe22760dafc5b504e.html