1. 用浏览器打开192.168.0.198:8081-->点击右上角登录-->点击页面上方的齿轮标志-->点击左侧的Repository中的Bolb Stores创建一个存储块-->点击左侧Repositories-->Create repository-->docker(hosted)-->输入名称;勾选Online,这个开关可以设置这个Docker repo是在线还是离线;选择HTTP并设置创建时用到的8082端口,这是在命令行连接时要用到的端口;勾选Force basic authentication,这样的话就不允许匿名访问了,执行docker pull或 docker push之前,都要先登录:docker login;勾选Docker Registry API Support,Docker registry默认使用的是API v2, 但是为了兼容性,我们可以勾选启用API v1。Storage选择之前创建的存储块设备;Hosted使用默认的Allow redeploy;选择左侧的Security中的Realms,将Docker Bearer Token Realm加入到右侧的Active框中 2. 使用本机的ubuntu16.04测试 root@ccjd:~# vim /lib/systemd/system/docker.service [Service] ... ExecStart=/usr/bin/dockerd --insecure-registry 192.168.0.198:8082 -H unix:// ... # 加入--insecure-registry 192.168.0.198:8082,这里加入的地址必须是宿主机的地址,测试发现如果添加的是docker容器的172地址,在认证时还是会提示"Error response from daemon: Get https://172.17.0.2:8082/v2/: http: server gave HTTP response to HTTPS client" root@ccjd:~# systemctl daemon-reload root@ccjd:~# systemctl restart docker root@ccjd:~# docker login 192.168.0.198:8082 -u admin -p admin123 WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded # 出现Login Succeeded就表示成功了 root@ccjd:~# docker tag centos 192.168.0.198:8082/centos # 给现有的centos镜像打一个标签叫192.168.0.198:8082/centos root@ccjd:~# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.0.198:8082/centos latest 75835a67d134 6 weeks ago 200MB centos latest 75835a67d134 6 weeks ago 200MB # 查看已有了新的镜像 root@ccjd:~# docker push 192.168.0.198:8082/centos The push refers to repository [192.168.0.198:8082/centos] f972d139738d: Pushed latest: digest: sha256:dc29e2bcceac52af0f01300402f5e756cc8c44a310867f6b94f5f7271d4f3fec size: 529 # 将镜像推送到本地仓库
1. 创建存储块-->创建group类型库 2. 这里需要注意,在三种类型中都不再选择"Docker Registry API支持",并修改配置文件,如下: root@ccjd:~# vim /etc/docker/daemon.json { "registry-mirrors":["http://192.168.0.130:8083"], "insecure-registries":["192.168.0.130:8083","192.168.0.130:8082"], "disable-legacy-registry":true } # 这里第一行定义了group类型的仓库,第二行定义了两个地址为安全地址,可以不用https连接,最后一行定义了关闭"Docker v1 API",这样就不用在定义三种类型时选择启用Docker v1 API了。 3. 测试发现,如果在group类型中一次性加入hosted和proxy类型的两个存储库,那么pull镜像时,proxy类型的库中就不会有反应,去除了hosted类型的库后就可以了。之后再将hosted类型的库加上也没有问题。 4. 官方推荐配置两个Connectors端口,一个配置在docker(group)用来访问所有库,搜索和下载images(group下包含proxy,所以创建proxy仓库的时候可以不设置Connectors-https端口),另一个配置在docker(hosted)用来push自己的images,使用docker(group)实现搜索和下载images。 The recommended minimal configuration requires one port for a Docker repository group used for read access to all repositories and one port for each hosted Docker repository that will receive push events from your users. 5. 测试 docker login 192.168.0.130:8083 -u admin -p admin123 docker pull centos 再次查看nexus3页面时,在proxy存储块中应该有centos镜像,之后再下载时就可以从私有库中下载了。 # 下面为三种类型库的配置截图