美文网首页
Docker私仓搭建

Docker私仓搭建

作者: 殷临风 | 来源:发表于2017-04-18 23:34 被阅读324次

    如果公司使用了docker, 而docker里面存放着私密的配置文件 , 像MySQL, 微信密钥等配置, 我们不希望别人能够看到, 这个时候, 私有仓库就显得很重要了, 下面简单的介绍下

    一. 下载安装docker
    yum install docker -y
    # 加入开机启动
    systemctl enable docker
    # 启动docker
    systemctl start docker
    
    二. 拉取registry镜像
    docker pull registry:2
    

    这里要指定版本2以上, registry以前是python写的, 后来由go重写, 提升了拉去镜像的性能, 所以如果用的是的docker 1.5+, 那么这个镜像就一定要使用2版本, 否则会不兼容

    三. 启动仓库容器
    docker run -d -p 5000:5000 --restart=always -v /opt/docker/registry/data:/var/lib/registry --name docker-registry registry:2
    

    这条命令有指定端口映射, 即容器的5000端口, 对应主机的5000端口, 另外也指定目录挂载, 容器的/var/lib/registry对应主机的/opt/docker/registry/data目录

    四. 配置容器支持http

    默认情况下, registry:2只支持https, 如果需要支持http, 需要配置docker

    vi /etc/sysconfig/docker
    
    # 找到 INSECURE_REGISTRY='--insecure-registry', 修改成如下
    INSECURE_REGISTRY='--insecure-registry yinnote.com:5000'
    
    # 保存配置, 重启服务
    systemctl daemon-reload
    systemctl restart docker 
    

    修改docker启动参数的方式很多, 这里只介绍我比较喜欢的一种, 记住, 修改了参数后, 一定要保存配置文件再重启, 否则不生效

    五. 测试
    # 将registry镜像打标签
    docker tag docker.io/registry:2 yinnote.com:5000/test:1.0
    
    # 上传镜像
    docker push yinnote.com:5000/test:1.0
    
    六. 授权认证

    如果我们不希望镜像被外人随意拉取, 那么就需要通过Nginx反向代理, 并配置登录认证. 当然也可以通过nginx代理镜像:containersol/docker-registry-proxy, 这里不做这种介绍, 毕竟最新版本的registry已经不支持这个镜像了

    注意, 官网有一段话说明http协议没法做登录认证, 所以只能配置https

    Warning: it’s not possible to use an insecure registry with basic authentication.
    

    https://docs.docker.com/registry/insecure/

    1. nginx配置反向代理
    server {
        listen       443 ssl;
        server_name  registry-docker.yinnote.com;
    
        ssl on;
        ssl_certificate      cert/www.yinnote.com.pem;
        ssl_certificate_key  cert/www.yinnote.com.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
    
        location / {
    
            proxy_pass http://127.0.0.1:5000;
       }
    }
    

    证书, 大家可以自己生成, 也可以去阿里云购买, 首年免费, 至于证书生成办法, 这里不做介绍

    2. 生成加密文件
    yum install httpd-tools -y
    htpasswd -c -d /usr/local/openresty/nginx/conf/pass_file magina
    

    magina是指定登录的用户名, 生成的文件路径一定要指定存在的目录下

    3. 添加认证配置
    location / {
    
        client_max_body_size    500m;
    
        auth_basic "yinnote docker仓库";
        auth_basic_user_file /usr/local/openresty/nginx/conf/pass_file;
    
        proxy_pass http://127.0.0.1:5000;
    }
    

    其中client_max_body_size, 是允许上传文件的大小, 这里最好设置大一点, 一般镜像会在200m左右, 记得修改了重启nginx

    nginx -s reload
    
    4. 登录
    docker login -u magina -p 123456 registry-docker.yinnote.com
    

    此时即可自由的拉取镜像

    相关文章

      网友评论

          本文标题:Docker私仓搭建

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