liujiusheng / blog

个人博客,blog
19 stars 0 forks source link

Docker私有仓库搭建 #169

Open liujiusheng opened 4 years ago

liujiusheng commented 4 years ago

私有仓库安装有两种方式,其中一种比较简单(Registry),但是功能不够,安全性也不够,不便于管理,另一种支持企业级的管理(Harbor),可以有用户控制,web管理界面等。 --restart=always能让docker重启的时候容器自动重启

Registry

安装超级简单: docker run -d -p 5000:5000 --name registry registry:2 一行命令就安装好了。

向仓库推送一个本地已经存在的nginx的镜像: docker tag nginx localhost:5000/nginx docker push localhost:5000/nginx 两行命令就搞定了

Docker内置的search命令只能检索docker hub里面的镜像,不能检索本地私有仓库的镜像。所以要查看本地私有仓库已有的镜像需要借助于shell脚本。 执行: curl localhost:5000/v2/_catalog 就可以查看本地私有仓库中有哪些镜像了。

注意

以上的localhost都还不能换成ip地址,好像使用ip地址就必须配置https,或者要设置docker的daemon.json文件里的安全配置,在daemon.json中添加如下内容并重新加载配置和重启docker之后就可以生效了。 "insecure-registries": ["192.168.17.135:5000"] 重新加载配置,重启docker systemctl daemon-reload systemctl restart docker

这个时候前面的localhost就可以换成ip地址进行使用了。 值得注意的是,如果在tag和push阶段推向仓库的是localhost那么在使用ip地址进行curl查询的时候是查询不到的,所以在使用的时候应该配套使用。

重启docker之后容器默认是关闭了的,所以需要重新启动起来: 关闭容器:docker stop 容器ID 启动容器:docker start 容器ID

参考:https://docs.docker.com/registry/

创建存放证书的目录: mkdir -p /home/registry mkdir -p /home/registry/certs不手动把certs目录加好的话后面生成证书的时候会提示无法打开目录。

Registry也支持用户名密码登录。由于密码存在htpasswd文件中是加密了的,所以必须要引入证书。 启动时命令加上:

-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \

就可以支持用户名和密码登录的方式了。

登录:docker login 10.1.10.1:5000 -u uesr -p password 退出:docker logout 10.1.10.1:5000

添加用户: docker run --entrypoint htpasswd registry -Bbn user123 passwd123 >> /home/registry/auth/htpasswd

参考: https://www.cnblogs.com/Dapeng-W/p/docker-registry_htpasswd.html (照这个做应该能操作成功)https://blog.csdn.net/weixin_30564785/article/details/97823734

Harbor

下载代码包后运行: tar -xvf harbor-offline-installer-v1.10.1.tgz 解压文件,并得到harbor目录。

进入harbor目录修改harbor.yml文件中的hostname配置,保存后退出。

此时如果直接执行./install.sh进行安装会提示需要先安装docker-compose

docker-compose的安装比较容易,进入github找到相应的仓库安装就行了: docker-compose

然后执行后面两句语句就安装成功了 curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-uname -s-uname -m-o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

最新版的里面需要使用https了,所以要配置密钥

启动成功倒是很容易,在浏览器里面也很容易就访问到管理界面了,但是修改了配置之后怎么重启呢?好像对初学者来说harbor官方文档中这部分的内容隐藏得很深,而且执行了之后并不成功。所以在真正生产环境中部署这个还是要慎重,至少我现在还不能完全掌控它。

参考:

https://www.cnblogs.com/huanchupkblog/p/10843800.html