docker 安装nexus

本文档提供了Sonatype Nexus Repository Manager 3的Docker部署指南,包括运行、测试、构建镜像的方法及注意事项。还介绍了使用Chef Solo进行运行时和应用程序测试,以及如何创建Red Hat认证的容器镜像。

Sonatype Nexus3 Docker: sonatype/nexus3

A Dockerfile for Sonatype Nexus Repository Manager 3, based on CentOS.

Contribution Guidelines

Go read our contribution guidelines to get a bit more familiar with how
we would like things to flow.

Running

To run, binding the exposed port 8081 to the host.

$ docker run -d -p 8081:8081 --name nexus sonatype/nexus3

To test:

$ curl -u admin:admin123 http://localhost:8081/service/metrics/ping

Building the Nexus Repository Manager image

To build a docker image from the Docker file you can use this command:

$ docker build --rm=true --tag=sonatype/nexus3 .

The following optional variables can be used when building the image:

  • NEXUS_VERSION: Version of the Nexus Repository Manager
  • NEXUS_DOWNLOAD_URL: Download URL for Nexus Repository, alternative to using NEXUS_VERSION to download from Sonatype
  • NEXUS_DOWNLOAD_SHA256_HASH: Sha256 checksum for the downloaded Nexus Repository Manager archive. Required if NEXUS_VERSION
    or NEXUS_DOWNLOAD_URL is provided

Chef Solo for Runtime and Application

Chef Solo is used to build out the runtime and application layers of the Docker image. The Chef cookbook being used is available
on GitHub at sonatype/chef-nexus-repository-manager.

Testing the Dockerfile

We are using rspec as the test framework. serverspec provides a docker backend (see the method setin the test code)
to run the tests inside the docker container, and abstracts away the difference between distributions in the tests
(e.g. yum, apt,...).

rspec [--backtrace] spec/Dockerfile_spec.rb

Red Hat Certified Image

A Red Hat certified container image can be created using Dockerfile.rh.el which is built to be compliant with Red Hat certification.
The image includes additional meta data to comform with Kubernetes and OpenShift standards, a directory with the
licenses applicable to the software and a man file for help on how to use the software. It also uses an ENTRYPOINT
script the ensure the running user has access to the appropriate permissions for OpenShift 'restricted' SCC. In addition to the
Red Hat Enterprise Linux image, Dockerfile.rh.centos provides the same additions but with a CentOS base.

The Red Hat certified container image is available from the
Red Hat Container Catalog
and qualified accounts can pull it from registry.connect.redhat.com.

Notes

  • Default credentials are: admin / admin123

  • It can take some time (2-3 minutes) for the service to launch in a
    new container. You can tail the log to determine once Nexus is ready:

$ docker logs -f nexus
  • Installation of Nexus is to /opt/sonatype/nexus.

  • A persistent directory, /nexus-data, is used for configuration,
    logs, and storage. This directory needs to be writable by the Nexus
    process, which runs as UID 200.

  • There is an environment variable that is being used to pass JVM arguments to the startup script

    • INSTALL4J_ADD_VM_PARAMS, passed to the Install4J startup script. Defaults to -Xms1200m -Xmx1200m -XX:MaxDirectMemorySize=2g -Djava.util.prefs.userRoot=${NEXUS_DATA}/javaprefs.

    This can be adjusted at runtime:

    $ docker run -d -p 8081:8081 --name nexus -e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g  -Djava.util.prefs.userRoot=/some-other-dir" sonatype/nexus3
    

    Of particular note, -Djava.util.prefs.userRoot=/some-other-dir can be set to a persistent path, which will maintain
    the installed Nexus Repository License if the container is restarted.

  • Another environment variable can be used to control the Nexus Context Path

    • NEXUS_CONTEXT, defaults to /

    This can be supplied at runtime:

    $ docker run -d -p 8081:8081 --name nexus -e NEXUS_CONTEXT=nexus sonatype/nexus3
    

Persistent Data

There are two general approaches to handling persistent storage requirements
with Docker. See Managing Data in Containers
for additional information.

  1. Use a docker volume. Since docker volumes are persistent, a volume can be created specifically for
    this purpose. This is the recommended approach.

    $ docker volume create --name nexus-data
    $ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
    
  2. Mount a host directory as the volume. This is not portable, as it
    relies on the directory existing with correct permissions on the host.
    However it can be useful in certain situations where this volume needs
    to be assigned to certain specific underlying storage.

    $ mkdir /some/dir/nexus-data && chown -R 200 /some/dir/nexus-data
    $ docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3
    

Getting Help

Looking to contribute to our Docker image but need some help? There's a few ways to get information or our attention:


### 使用 Docker 安装 Nexus 的教程 #### 下载 Nexus3 镜像 在服务器命令行输入如下命令,下载 Nexus3 镜像(视网络情况,可能需要耐心等待一会儿): ```bash $ docker pull sonatype/nexus3 ``` 此操作会从 Docker Hub 获取最新的 Sonatype Nexus 3 镜像[^1]。 #### 查看已下载的 Nexus3 镜像 为了确认镜像已经成功下载,可以执行以下命令来查看本地可用的 Docker 镜像列表: ```bash docker images ``` 这一步骤有助于验证 `sonatype/nexus3` 是否存在于列表之中。 #### 准备必要的数据目录 创建 Nexus 所需的数据存储路径,并设置适当的权限以便容器能够正常读写这些位置。具体来说就是运行这两条指令: ```bash mkdir -p /opt/nexus-data:/nexus-data chown -R 200 /opt/nexus-data:/nexus-data ``` 这里 `/opt/nexus-data` 是主机上的挂载点,而 `/nexus-data` 则是在容器内部对应的映射路径;同时赋予该文件夹及其子项 ID 为 200 用户的所有权[^2]。 #### 启动 Nexus 容器服务 通过定义好的 YAML 文件启动 Nexus 实例,确保配置了正确的端口转发和服务环境变量。下面是一个简单的例子展示如何编写这样的 compose 文件片段: ```yaml version: "3.3" services: nexus: image: sonatype/nexus3:3.28.1 container_name: nexus3 restart: always environment: - TZ=Asia/Shanghai ports: - "8081:8081" - "28082:28082" volumes: - /data/nexus/nexus_data:/nexus-data ``` 这段配置指定了要使用的特定版本号以及一些基本参数,比如时区调整和外部访问所需的端口号映射关系等[^4]。 #### 访问 Nexus 登录页面 当一切准备就绪之后,在浏览器中打开 http://localhost:8081 或者实际部署机器 IP 地址加上指定端口即可进入 Nexus Web UI 页面。对于首次登录的情况,默认管理员账户名为 admin ,其初始密码保存于宿主机上 `/nexus-data/admin.password` 文件内,可以通过下列方式获取它: ```bash docker exec -it nexus cat /nexus-data/admin.password ``` 上述命令允许用户提取临时生成的一次性密码用于完成初次身份认证过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值