美文网首页DevOps
Nexus3 Docker 仓库

Nexus3 Docker 仓库

作者: KengG | 来源:发表于2020-06-01 19:33 被阅读0次

    0. 创建 Network

    docker network create dev-ops

    1. Docker 安装 Nginx

    Nginx 的妙用

    Docker 安装 Nginx 时,要把容器中的文件挂载到本地目录,方便我们配置 Nginx,不用修改配置还要进入容器中;

    • 1.1 下载镜像

    docker pull nginx

    • 1.2 先运行一次容器(为了拷贝配置文件 )

    docker run -p 80:80 --name nginx --network dev-ops -v /opt/mount/nginx/html:/usr/share/nginx/html -v /opt/mount/nginx/logs:/var/log/nginx -d nginx

    /opt/mount/nginx是本地目录(随便起名字),该目录下有两个子目录html logs

    • 1.3 拷贝配置

    docker container cp nginx:/etc/nginx /opt/mount/nginx

    • 1.4 修改目录名字

    mv /opt/mount/nginx/nginx /opt/mount/nginx/conf

    • 1.5 停止、删除容器
    docker stop nginx
    docker rm nginx
    

    2. 使用 Docker 再次运行 Nginx

    docker run -p 80:80 --name nginx --network dev-ops -v /opt/mount/nginx/html:/usr/share/nginx/html -v /opt/mount/nginx/logs:/var/log/nginx -v /opt/mount/nginx/conf:/etc/nginx -d nginx
    

    3. Nexus3

    • 3.1 获取镜像

    docker pull sonatype/nexus3

    • 3.2 创建挂载目录

    docker volume create --name nexus3

    • 3.3 运行镜像

    docker run -dti --name nexus3 --network dev-ops --network-alias devops-nexus3 --restart=always -p 8081:8081 -v nexus3:/nexus-data sonatype/nexus3

    • 3.4 配置 Nginx
    touch nexus3.conf
    vim nexus3.conf
    
    server {
        listen       80;
        server_name  你自己的域名或者IP;
    
        location / {
            proxy_pass   http://devops-nexus3:8081;
            proxy_set_header Host $host;
        }
    }
    
    • 3.5 重启 Nginx
    docker restart nginx
    

    Nexus Docker 配置

    4. 配置 Nexus Docker

    upstream nexus_docker_get {
        # devops-nexus3 是上面启动 nexus3 配置的 --network-alias;
        # 8082 是配置 Docker Group 仓库配置的端口
        server devops-nexus3:8082;
    }
    
    upstream nexus_docker_push {
        # devops-nexus3 是上面启动 nexus3 配置的 --network-alias;
        # 8082 是配置 Docker Hosted 仓库配置的端口
        server devops-nexus3:8083;
    }
    server {
        listen         80;
        server_name    域名;
    
        set $upstream "nexus_docker_push";
        if ( $request_method ~* 'GET' ) {
            set $upstream "nexus_docker_get";
        }
        # [解决Nexus Docker仓库搜索镜像返回500错误](https://zhangge.net/5144.html)
        if ( $request_uri ~ '/search' ) {
            # 这是上面文章提到的问题,但是我没有遇到
            # set $upstream "nexus_docker_push";
        }
        location / {
            proxy_pass http://$upstream;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    

    5. Jenkins

    • 下载镜像

    docker pull jenkins/jenkins

    • 创建挂载目录

    mkdir -p /opt/mount/jenkins
    启动

    docker run -itd --name jenkins --network dev-ops --network-alias devops-jenkins --restart=always -p 8080:8080 -p  50000:50000 -v /opt/mount/jenkins:/var/jenkins_home jenkins/jenkins
    

    6. 问题 QA

    • 413 Request Entity Too Large

    这是因为我中间使用 Nginx 做了代理,Nginx 对请求的body大小做了限制;需要在 nginx 配置文件 http 节点 下面加入或者修改;

    # 该值可以加大点,毕竟 Docker image 动不动 几百兆
    client_max_body_size 50M;
    
    • unauthorized: access to the requested resource is not authorized

    通过 docker login 自己的Docker私服域名 登录成功后,推送镜像过程中出现的错误; 解决方式 点击进入;问题就是,我新建一个用于 Docker 仓库的 Docker 账号、角色;给角色设置的权限不对;

    以上是使用 Docker Nginx Nexus3 搭建的 Docker 仓库在搭建过程中也是各种搜索、格式参考文档,如果你在搭建过程中遇到问题,欢迎留言交流。

    相关文章

      网友评论

        本文标题:Nexus3 Docker 仓库

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