使用Nexus 3 搭建私有 Docker Registry
随着容器技术的不断发展,Docker已成为现代开发流程中的重要工具。为了更好地管理和分享Docker镜像,搭建一个私有Docker Registry显得尤为重要。Nexus Repository Manager 3(简称Nexus 3)是一款优秀的开源工具,它支持Docker镜像的存储和管理。本文将逐步介绍如何使用Nexus 3搭建一个私有Docker Registry,并给出具体的代码示例。
1. Nexus 3 的安装
首先,我们需要安装Nexus 3。可以通过Docker来快速实现这一目标。以下是安装的基本步骤:
1.1 获取Nexus 3 Docker 镜像
首先,确保Docker已经安装并运行。接着,通过以下命令来拉取Nexus 3镜像:
docker pull sonatype/nexus3
1.2 启动Nexus 3 容器
使用以下命令启动Nexus 3容器:
docker run -d -p 8081:8081 --name nexus3 sonatype/nexus3
这会在后台运行Nexus 3,并将其映射到宿主机的8081端口。
1.3 访问Nexus 3
打开浏览器,访问 http://localhost:8081
。第一次访问时,你需要通过默认凭证登录:
- 用户名:
admin
- 密码:可以通过执行以下命令找到:
docker exec -it nexus3 cat /nexus-data/admin.password
2. 创建Docker仓库
登录后,你需要创建一个Docker仓库用于存储镜像。
2.1 创建Docker Hosted Repository
- 在Nexus 3界面上,点击“We have a lot of repositories!”。
- 然后点击“Create repository”。
- 选择Docker(hosted)来创建一个新的Docker镜像仓库。
- 配置如下:
- Name: my-docker-hosted
- Blob store: 默认
- HTTP: 默认配置下的端口(例如:8082)
完成后,点击“Create repository”按钮。
2.2 创建Docker Proxy Repository(可选)
如果你还希望从Docker Hub中获取公共镜像,建议创建一个Docker Proxy仓库。
- 重复上述步骤,选择Docker(proxy)类型。
- 填写名称(如:my-docker-proxy),并设置远程存储库为`
3. 配置Docker客户端
为了让Docker客户端能够向Nexus 3推送和拉取镜像,需要对Docker进行相应的配置。
3.1 登录到Nexus 3
使用以下命令登录:
docker login localhost:8082
输入你的Nexus 3登录凭证(用户名和密码)。
3.2 推送镜像到Nexus 3
假设你已经有一个Docker镜像(如:my-app),可以使用以下命令将其推送到Nexus 3:
docker tag my-app localhost:8082/my-docker-hosted/my-app:latest
docker push localhost:8082/my-docker-hosted/my-app:latest
4. 从Nexus 3 拉取镜像
你可以用以下命令从Nexus 3中拉取镜像:
docker pull localhost:8082/my-docker-hosted/my-app:latest
5. 监控和管理
Nexus 3 提供了一些监控和管理的界面,你可以监控仓库的使用情况,查看存储的镜像等。
6. 类图与关系图
为了进一步理解Nexus 3 中的架构,可以用类图和关系图来描述其内部结构。
6.1 类图
以下是Nexus 3的类图,我们使用Mermaid语法进行描述:
classDiagram
class Repository {
+String name
+String type
+BlobStore blobStore
}
class BlobStore {
+String name
+String type
}
class DockerImage {
+String repository
+String tag
}
Repository --> BlobStore
Repository --> DockerImage
6.2 关系图
以下是Nexus 3与Docker及其仓库之间的关系图:
erDiagram
USER {
string username
string password
}
REPOSITORY {
string name
string type
}
DOCKER_IMAGE {
string name
string tag
}
USER ||--o{ REPOSITORY : manages
REPOSITORY ||--o{ DOCKER_IMAGE : contains
结尾
通过以上步骤,你已经成功搭建了一个私有Docker Registry,使用Nexus 3可以方便地管理Docker镜像。在未来的项目中,无论是个人开发还是团队协作,私有Docker Registry都将发挥重要的作用。你可以在Nexus 3的基础上进一步探索更多高级功能,如权限管理、访问控制等,以满足不同的使用需求。希望这篇文章能对你有所帮助!