在docker上运行Nexus3容器

  • 在docker-compose.yml中的services节点添加:
nexus:
    image: sonatype/nexus3
    ports:
      - "8082:8081"
       # 开放docker私服的端口,这个端口可以随意配置
      - "8084:8080"
    volumes:
      - "/home/docker/nexus:/nexus-data"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
  • 执行以下命令部署该容器
docker stack deploy -c docker-compose.yml hmp_dev

注意:nexus的默认账号密码是admin/admin123, 部署好后请及时修改

创建私服仓库

  • 进入仓库管理界面
    df48c1b4ab404e40ad83c0049fa38745-1.png
  1. 进入Nexus3的管理界面
  2. 选择仓库管理菜单
  3. 点击创建新的仓库
  • docker仓库类型
    a9c310d6a217498cba8d3737f9a3e265-2.png

这个地方有三种仓库类型:
1. group 类型的仓库并不是真正意义上的仓库,是一个由多个仓库(私服或者代理)组成的仓库组合,为使用者提供统一的入口
2. hosted 类型的仓库就是及本地的私服,可用于私有镜像的发布和存储
3. proxy 类型的仓库就是远程仓库(如中央仓库)的一个代理

下面我们将创建三种不同的仓库,并进行一些配置为本地开发提供镜像的发布与下载支持。

配置docker中央仓库代理(proxy类型)

7ced331d5e854cfca09405d61894ca00-3.png

  1. 给代理仓库去个好听的名字
  2. 勾选Docker的API支持
  3. 输入远程镜像存储地址,由于某些原因国内无法访问Dockerhub的镜像仓库(或者比较慢),所以使用了daocloud的地址
  4. 勾选Docker的索引目录,这里选择使用docker hub的索引
  5. 点击创建仓库

注:图中使用镜像地址是http://f1361db2.m.daocloud.io,这个地方填入的地址其实就是国内的中央仓库加速地址,也是一个代理仓库。

配置本地docker仓库(hosted类型)

d65ad523d70f4d0eb4678d8a29910cce-4.png

  1. 为本地仓库去一个好听的名字
  2. 勾选DOcker的API支持
  3. 如果有需要请选择镜像的本地存储位置
  4. 点击创建仓库

配置docker仓库组(group类型)

29cefdd2c3184f6fa194598b5f94a5d1-5.png
87c75557960d41b4a7dff2b5f558f1a1-6.png

  1. 为仓库组去个名字
  2. 配置并开放端口,这里配置的HTTP的8080端口。在上边的compose文件中已经对该端口做了映射
  3. 勾选Docker的API支持
  4. 如果有需要请选择镜像的本地存储位置
  5. 选择需要组合的docker仓库并加入到组成员中去
  6. 点击创建仓库

到目前为止,nexus中的配置就已经完成了。

注意:私服地址为:http://192.168.0.40:8084

测试docker私服(以官方的httpd镜像为例)

# 直接拉取镜像
root@ubuntu:~# docker pull 192.168.0.40:8084/httpd
Using default tag: latest
Error response from daemon: Get https://192.168.0.40:8084/v2/: http: server gave HTTP response to HTTPS client

# 这个时候会报错,所以需要在docker的信任仓库中配置私服
root@ubuntu:~# vi /etc/docker/daemon.json
# 该文件可能是新建也可能是更新,在文件中添加以下内容
{
        "insecure-registries":["192.168.0.40:8084"]
}

# 重启docker
root@ubuntu:~# systemctl daemon-reload
root@ubuntu:~# systemctl restart docker

# 重新拉取镜像
root@ubuntu:~# docker pull 192.168.0.40:8084/httpd
Using default tag: latest
Error response from daemon: Get http://192.168.0.40:8084/v2/httpd/manifests/latest: no basic auth credentials

# 这个时候的错误说明还需要登录
root@ubuntu:~# docker login 192.168.0.40:8084
Username: admin
Password:
Login Succeeded

# 重新拉取镜像
root@ubuntu:~# docker pull 192.168.0.40:8084/httpd
Using default tag: latest
latest: Pulling from httpd
5e6ec7f28fb7: Pull complete
566e675a8212: Pull complete
ef5a8026039b: Pull complete
22ecb0106557: Pull complete
91cc511c603e: Pull complete
Digest: sha256:f3d37ac44680fdb30939790e82fb32745be6d1173b6df4fec5087729b5497ed5
Status: Downloaded newer image for 192.168.0.40:8084/httpd:latest

——————————————————————————
行路不知花开处,蓦然回首芷兰香。