概述
https://www.ivankrizsan.se/2016/06/09/create-a-private-docker-registry/
创建一个私有Docker注册表
目录[ 显示 ]
在本文中,我将展示如何使用Sonatype的Nexus Repository Manager 3.0 OSS 设置私人Docker注册表。可能还有其他的指南,但是如果没有别的我为自己写作的话。
我建立一个私人Docker注册表的主要动机是:
- Docker镜像的分布。
这可能是多台计算机之间或组织内部的小规模。 - 限制Docker镜像的分发。
虽然我更愿意在DockerHub上提供我的Docker镜像,但有些情况下,我觉得Docker镜像尚未准备好分发给更多的观众。
在一个组织中,将Docker映像部署到公共注册表可能不合适或不合适。 - 在我的所有电脑上使用相同版本的Docker镜像。
如果我在第一台计算机上构建Docker镜像,然后在稍后的某个时间点在另一台计算机上创建Docker镜像,那么这些镜像之间可能存在差异。这可能是由于创建映像时使用的软件库更新,操作系统补丁等引起的。这种差异可能很微妙,但我更愿意消除尽可能多的潜在混淆来源,甚至可能出现的错误。
由于我已经在摆弄Docker,我将使用Sonatype的Docker镜像在Docker容器中运行Nexus 3 OSS 。
准备工作
作为一个例子,我将把官方Tomcat Docker镜像复制到我自己的私人Docker注册表中。为此,我们首先需要取出Tomcat映像:
1
|
docker
pull
tomcat
:
latest
|
此外,我将在主机中创建一个目录来保存Nexus 3数据和日志,如Nexus 3映像文档中所述:
1
2
|
mkdir
-
p
/
some
/
dir
/
nexus3
/
data
chown
-
R
200
/
some
/
dir
/
nexus3
/
data
|
创建一个Docker组合配置
为了简化Nexus 3 Docker容器的启动,我将使用Docker Compose。
- 转到“nexus3”目录。
这是我们在上述准备中创建的“data”目录的父目录。 - 使用以下内容创建一个名为“docker-compose.yml”的文件:
1
2
3
4
5
6
7
|
nexus
:
image
: sonatype/nexus3
:latest
ports
:
-
"8081:8081"
-
"8123:8123"
volumes
:
-
./
data
:/nexus-data
|
注意:
- 两个端口暴露。
在端口8081上,Nexus 3的Web GUI将可用。Docker注册表API将暴露在端口8123上。后一个端口可能会根据需要进行更改,请记住相应地配置Nexus 3。 - 共享目录“nexus-data”,映射到主目录“data”。
该目录将包含Nexus 3的持久数据。
启动Nexus
在终端窗口中,Docker快速入门终端(如果您使用的是Docker Toolbox,当前目录是我们之前创建的docker-compose.yml文件的目录),请使用以下命令启动Nexus 3 Repository管理器:
1
|
docker
-
compose
up
-
d
|
如果您在Linux中运行Docker,则必须在上述命令之前添加“sudo”。
然后使用logs命令查看Nexus Docker容器中的日志:
1
|
docker
-
compose
logs
|
一段时间后,Nexus日志中会显示与此相似的日志输出,表示Nexus已成功启动:
1
2
3
4
5
|
nexus_1 | -------------------------------------------------------------------
nexus_1 |
nexus_1 | Started Sonatype Nexus OSS 3.0.0-03
nexus_1 |
nexus_1 | -------------------------------------------------------------------
|
在Nexus 3中创建一个Docker Registry
随着Nexus 3的启动和运行,我们现在应该能够创建一个Docker注册表。
- 找到Docker主机的IP地址。
如果您在Mac OS X或Windows上运行Docker,可以使用命令“docker-machine ip default”获取它。
如果您在Linux上运行Docker,它将与主机的IP地址相同,可以使用“ifconfig”命令找到它。
在我的情况下,Docker主机的IP地址是192.168.1.72。 - 在Web浏览器中打开URL [Docker主机IP地址]:8081。
- 登录到Nexus 3.
单击右上角的登录按钮并使用用户名“admin”和密码“admin123”。如果这些凭据已更改,请检查DockerHub中的Nexus 3 Docker映像页面。 - 单击齿轮转到服务器管理和配置部分。
- 点击存储库。
- 点击创建存储库按钮。
- 在存储库类型列表中,选择“docker(hosted)”作为新注册表的类型。
- 配置Docker存储库。
给存储库一个名字 - 在我的情况下是“IvansDockerRepo”。
确保在线复选框被选中。
选中存储库连接器下的HTTP复选框并输入端口号8123.
选中启用Docker V1 API复选框。
在Blob商店下选择默认。 - 点击创建存储库按钮。
私人Docker注册表现在可以使用了。
从客户端登录到私有Docker注册表
在我们可以从Docker客户端与Docker注册表进行交互之前,我们需要登录到注册表。
- 允许不安全的连接Windows和OS X
由于我们已经在普通的HTTP端点上公开了私有Docker注册表,因此我们需要配置作为客户端的Docker守护进程作为私有Docker注册中心,以允许不安全的连接。这在所有环境中都不是可取的,但为了这个例子,不安全的连接很简单并且足够了。
- 找到包含密钥“InsecureRegistry”的Docker config.json文件。
在Mac OS X上,假设Docker机器的名称是“default”,它位于〜/ .docker / machine / machines / default目录中。
在Windows上,再次假设Docker机器的名称是“default”,它位于C: Users [您的用户名] 。docker machine machines default目录中。
可以在其中找到“InsecureRegistry”密钥的配置文件部分如下所示:
12345678910111213141516171819"HostOptions" : {"Driver" : "" ,"Memory" : 0 ,"Disk" : 0 ,"EngineOptions" : {"ArbitraryFlags" : [] ,"Dns" : null ,"GraphDir" : "" ,"Env" : [] ,"Ipv6" : false ,"InsecureRegistry" : [] ,"Labels" : [] ,"LogLevel" : "" ,"StorageDriver" : "" ,"SelinuxEnabled" : false ,"TlsVerify" : true ,"RegistryMirror" : [] ,"InstallURL" : "https ://get.docker.com"} ,
- 将Nexus 3 GUI公开的IP连同端口号8123一起插入到“InsecureRegistry”键的值中。在我的情况下,修改后的键值将如下所示:
1"InsecureRegistry": [“192.168.1.72:8123”],
- 如果您使用Docker for Mac或Windows Beta:
New方法(请确保您有最新的更新):可以在Docker首选项中的高级选项卡中配置不安全的注册表。旧方法:使用此内容创建一个名为config.json的文件(根据需要替换IP地址):
{“存储驱动程序”:” AUFS”,”调试”:真”不安全 - 登记”:[‘192.168.1.72:8123’]}
使用commando设置配置:
皮纳塔设置守护进程@ conf.json - 重新启动Docker机器。
- 允许不安全的连接Linux
为了允许来自在Linux上运行的Docker客户端的不安全连接:
- 编辑文件/ etc / default / docker 并添加以下行:
DOCKER_OPTS =“$ DOCKER_OPTS -insecure-registry = [Nexus3 Docker host IP]:8123” - centos7:
此时就可以
- 进入私人码头注册表
您现在应该可以使用以下命令(根据需要替换IP地址)使用用户名“admin”和密码“admin123”登录到Nexus 3注册表,两者均不带引号:
1
|
docker
login
-
u
admin
-
p
admin123
192.168.1.72
:
8123
|
结果应该是一条消息,说明登录成功。
将Docker镜像推送到私有注册表
在早些时候拉出正式的Tomcat映像并登录到我们的私有注册表后,我们现在已准备好将Tomcat Docker映像推送到我们的注册表中。在下面的说明中,根据需要替换Docker注册表的IP地址。
- 标记图像。
码头标记tomcat:latest 192.168.1.72:8123/ivans_tomcat:latest
这将告诉Docker将用于Docker镜像的新名称以及我们稍后将推送镜像的注册表的IP地址。 - 将图像推送到我们的私人注册表。
docker push 192.168.1.72:8123/ivans_tomcat:latest - 在浏览器中打开URL http://192.168.1.72:8081。
- 点击左侧浏览列中的组件类别。
- 在出现的组件列表中单击名为“IvansDockerRepo”的Docker注册表。
- 在IvansDockerRepo中的组件列表中,应该有一个名称为“ivans_tomcat”的单个条目。
- 要拉图像,也许在另一台计算机上,请使用以下命令。
12docker login - u admin - p admin123 192.168.1.72 : 8123docker pull 192.168.1.72 : 8123 / ivans_tomcat : latest
最后
以上就是不安冥王星为你收集整理的nexus docker docker login push pull创建一个私有Docker注册表准备工作创建一个Docker组合配置启动Nexus在Nexus 3中创建一个Docker Registry从客户端登录到私有Docker注册表将Docker镜像推送到私有注册表的全部内容,希望文章能够帮你解决nexus docker docker login push pull创建一个私有Docker注册表准备工作创建一个Docker组合配置启动Nexus在Nexus 3中创建一个Docker Registry从客户端登录到私有Docker注册表将Docker镜像推送到私有注册表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复