使用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

  1. 在Nexus 3界面上,点击“We have a lot of repositories!”。
  2. 然后点击“Create repository”。
  3. 选择Docker(hosted)来创建一个新的Docker镜像仓库。
  4. 配置如下:
    • Name: my-docker-hosted
    • Blob store: 默认
    • HTTP: 默认配置下的端口(例如:8082)

完成后,点击“Create repository”按钮。

2.2 创建Docker Proxy Repository(可选)

如果你还希望从Docker Hub中获取公共镜像,建议创建一个Docker Proxy仓库。

  1. 重复上述步骤,选择Docker(proxy)类型。
  2. 填写名称(如: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的基础上进一步探索更多高级功能,如权限管理、访问控制等,以满足不同的使用需求。希望这篇文章能对你有所帮助!