Docker官方仓库Registry

Docker Registry 是Docker官方一个镜像,可以用来储存和分发Docker镜像。目前比较流行的两个镜像私库是Docker Registry ,HarBor 其中HarBor最合适企业级应用,提供良好的WEB界面进行管理,Registry在使用和部署上更为简单

环境准备:

  • 仓库所在机器IP:192.168.49.83
  • Registry镜像:docker pull registry
  • 测试机器IP:192.168.49.82

无认证方式部署

无认证方式部署后,拉取和推送镜像都不需要进行认证,此方法简单高效,适合公司内网环境

1、执行命令创建registry容器,默认为5000端口,如下:

docker run -itd --name registry -p 5000:5000 -v /data/registry:/var/lib/registry  --restart always registry

2、修改192.168.49.82的/etc/docker/daemon.json文件,添加仓库地址,重启docker,如图:

给镜像打标签,然后推送到仓库,如图:

3、通过浏览器访问即可看到仓库中镜像,如图:

查看镜像具体的标签信息,可查看仓库中镜像都有哪些版本,如图:

每次上传到仓库中的镜像都是存储在/var/lib/registry目录下的

有认证方式部署

registry运行后,默认情况下在路径/etc/docker/registry下会有一个config.yml文件,此文件可以理解为配置文件,定义了端口,存储路径等,后续认证文件也在这里定义,如图:

1、首先生成密码文件,使用htpasswd命令生成,输出到registry.passwd文件中,如下:

htpasswd -nbB registry Registry2024 >> registry.passwd

2、定义config.yml文件(可先运行临时容器将容器里的copy出来),添加认证信息,如图:

3、启动registry,如下:

docker run -itd --name registry -p 5000:5000 -v /root/config.yml:/etc/docker/registry/config.yml -v /root/registry.passwd:/etc/docker/registry/registry.passwd registry

容器外的路径根据需要修改

4、登录192.168.49.82,登录仓库,然后验证推送,如图:

通过https域名访问

如果要通过域名来访问registry,可直接外套一层nginx,通过nginx代理,如下:

server {
        listen 443 ssl;
        server_name registry.ywdevops.cn;
        ssl_certificate   /etc/nginx/conf.d/ssl/registry.ywdevops.cn.pem;
        ssl_certificate_key   /etc/nginx/conf.d/ssl/registry.ywdevops.cn.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;  
        ssl_prefer_server_ciphers on;  
        access_log  /var/log/nginx/registry.ywdevops.cn.log  main;
        error_log   /var/log/nginx/registry.ywdevops.cn_error.log;
        client_max_body_size 10240m;
        location / {
             proxy_pass http://192.168.51.228:5000;
             proxy_set_header   Host              $http_host;
             proxy_set_header   X-Real-IP         $remote_addr;
             proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
             proxy_set_header   X-Forwarded-Proto $scheme;
             proxy_read_timeout 900;
    	}
    }

修改/etc/docker/daemon.json,添加仓库地址后重启docker,如图:

注:insecure-registries中配置仓库地址的时候,不需要写https/http等协议头

给镜像打tag后,推送到仓库,如图:

最后查看仓库内容,如图:

标签