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

你在终端上运行的docker命令实际上都是使用boot2docker虚拟机来运行容器及各种东西。所以当你执行像docker push some_repo这样的命令时,是boot2docker虚拟机在与registry交互,而不是我们自己的机器。

接下来是一个非常重要的点:为了将Docker镜像推送到远端的私有仓库,SSH管道需要在boot2docker虚拟机上配置好,而不是在你的本地机器上配置。

有许多种方法实现它。我给你展示最简短的一种(可能不是最容易理解的,但是能够帮助你实现自动化)

在这之前,我们需要对 SSH 做最后一点工作。

设置 SSH

让我们把boot2docker 的 SSH key添加到远端服务器的“已知主机”里面。我们可以使用ssh-copy-id工具完成,通过下面的命令就可以安装上它了:

brew install ssh-copy-id

然后运行:

ssh-copy-id -i /Users/username/.ssh/id_boot2docker root@your-registry.com

用你ssh key的真实路径代替/Users/username/.ssh/id_boot2docker。

这样做能够让我们免密码登录SSH。

现在我们来测试以下:

boot2docker ssh "ssh -o 'StrictHostKeyChecking no' -i /Users/michelangelo/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@registry.touchwa.re &"&

分开阐述:

boot2docker ssh允许你以参数的形式传递给boot2docker虚拟机一条执行的命令;

最后面那个&表明这条命令将在后台执行;

ssh -o 'StrictHostKeyChecking no' -i /Users/michelangelo/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@registry.touchwa.re &是boot2docker虚拟机实际运行的命令;

-o 'StrictHostKeyChecking no'——不提示安全问题;

-i /Users/michelangelo/.ssh/id_boot2docker指出虚拟机使用哪个SSH key来进行身份验证。(注意这里的key应该是你前面添加到远程仓库的那个)

最后我们将打开一条端口5000映射到localhost:5000的SSH通道。

从其他服务器上拉取

你现在将可以通过下面的简单命令将你的镜像推送到远端仓库:

docker push localhost:5000/username/repo_name

在下一篇文章中,我们将会了解到如何自动化处理这些事务,并且真正地容器化一个Rails应用。请继续收听!

如有错误,请不吝指出。祝你Docker之路顺利!

CentOS 6/7系列安装Docker  

Docker的搭建Gitlab CI 全过程详解  

Docker安装应用(CentOS 6.5_x64)  

在 Docker 中使用 MySQL

Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker  

Docker安装应用(CentOS 6.5_x64)  

Ubuntu 14.04安装Docker   

阿里云CentOS 6.5 模板上安装 Docker  

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

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

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