美文网首页
nexus搭建docker镜像仓库

nexus搭建docker镜像仓库

作者: FyK_21f8 | 来源:发表于2021-04-01 21:28 被阅读0次

    1 从docker拉取Nexus3镜像,这里使用的是3.30.0版本

    docker pull sonatype/nexus3:3.30.0
    
    image.png
    docker images
    
    image.png

    2 创建nexus数据挂载目录

    mkdir /opt/nexus-data 
    

    这里会宿主机目录权限问题,简单粗暴解决就是直接给我挂载的目录777权限,哈哈。要么就是在启动容器的时候给容器root权限。

    3 运行nexus容器

    docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -v /opt/nexus-data:/nexus-data sonatype/nexus3:3.30.0
    
    image.png
    出现了网络警告,网络将不可用,同时无法进入容器,因为容器没启动成功。原因是是没有开启网络转发,这里需要设置一下,如果没有这个问题,这里可以跳过 image.png
    vim /etc/sysctl.conf
    
    #配置转发
    net.ipv4.ip_forward=1
    
    #重启服务,让配置生效
    service network restart
    
    #查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功
    
    net.bridge.bridge-nf-call-ip6tables=1
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-arptables=1
    net.ipv4.ip_forward=1
    
    image.png

    接着重启docker 重启nexus就可以了。

    #重启docker服务
    service docker restart 
    
    #重启容器,正常启动
    docker restart nexus3
    
    #进入容器
    docker exec -it nexus3 /bin/bash
    
    #ping一下,发现网络也正常了
    ping www.baidu.com
    

    等待了一段时间发现访问nexus还是没有起起来,通过docker logs -f nexus3看了一下日志,发现报错了,原因就是上面挂载了目录,目录的权限用户是root,nexus在容器内部中启动的时候是以nexus用户启动的,uid 是200,操作系统root用户的uid是1000,所以必然没有写入权限,启动报错。可以通过启动时添加--privileged=true赋予root权限解决这个问题,但是给一个容器赋予一个root权限是有点不安全。网上有些博客通过chown 200 -R /opt/nexus-data我没试成功,只能先这么搞了。

    # 完整的命令
    docker run -d --name nexus3 --restart=always --privileged=true -p 8081:8081 -p 8082:8082 -v /opt/nexus-data:/nexus-data sonatype/nexus3:3.30.0
    

    PS:这里给了两个端口,8081和8082,8081是nexus的默认端口,8082预留给docker私有仓库使用。

    4 创建私有docker仓库
    4.1 访问界面并登录


    image.png

    账号是admin,密码记录在挂载目录下的/admin.password文件里面,在登陆一波。
    4.2 创建仓库

    image.png
    点击齿轮 -> Repositories -> Create repository image.png
    选择docker(hosted)
    image.png
    配置一下http端口和仓库名称,其他默认。拉到最后面Create repository

    4.3 安全设置

    image.png
    Security -> Realms -> Docker bearer Token Realm -> Save

    4.4 测试


    image.png

    因为我们的仓库开放的是http的端口,而docker要求使用的是https,所以这里还要添加一下信任仓库。

    # 编辑docker服务端设置
    vim /etc/docker/daemon.json
    
    # 将下面内容加到配置文件中(文件是json,注意逗号等格式问题)
    "insecure-registries":["http://yourip:8082"]
    
    # 重启docker
    service docker restart
    
    # 查看设置是否生效,查看Insecure Registries:后面是否有你的nexus仓库地址
    docker info
    
    image.png

    再次登录成功了。

    4.5 制作镜像并向私有仓库推送镜像

    # 拉取hello-world镜像作为示例
    docker pull hello-world
    
    # 制作私有镜像
    docker tag hello-world yourip:8082/hello-world
    
    /# 推送到私有服务器
    docker push yourip:8082/hello-world
    
    image.png

    推送成功后到nexus页面查询我们是否推送成功。


    image.png

    可以看到已经看到了我们用于测试的nginx镜像了。

    额外用一张图补充docker tag命令的用法

    1387911631,874046429.jpg

    相关文章

      网友评论

          本文标题:nexus搭建docker镜像仓库

          本文链接:https://www.haomeiwen.com/subject/qjazhltx.html