Docker私有镜像仓库搭建-爱代码爱编程
1、docker私有仓库的搭建
在 Docker 中,当我们执行 docker pull xxx 的时候,实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库,上面的镜像,大家都可以看到,也可以使用。例如:docker pull registry.hub.docker.com/library/alpine。当然我们也可以搭建自己的私有仓库。
搭建Docker私有仓库的方法有多种,如docker registry、nexus、harbor都可以搭建私有仓库。其中用docker命令拉取docker registry,将docker的仓库镜像拉取到本地,在本地构建一个docker仓库,这种方法要自己对仓库进行权限管理,没有图形化页面操作,命令操作比较繁琐,另外在dockertoolbox下搭建私有镜像库出现的问题比较多,建议还是安装linux系统进行搭建。nexus,harbor,docker-compose可以进行图形化页面仓库以及图形化权限管理,harbor也集成了mysql和log。下面以harbor和docker-compose为例。
2、所需环境
- docker
- docker-compose :https://github.com/docker/compose/releases
- openssl(可选): https授权证书。非生产环境可仅配置http。
- harbor:
官方地址:https://github.com/goharbor/harbor/releases
官方说明文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
证书文档:https://github.com/goharbor/harbor/blob/master/docs/configure_https.md
3、下载harbor并解压
下载tgz包并解压
tar zxf harbor-offline-installer-v1.9.1.tgz
其中harbor.yml就是配置文件
4、安装harbor
(1)修改hostname(主机)和port(端口)等
该配置文件除了主机和端口还包括账号、密码、数据库等等的设置。
注:修改配置文件后重启:
docker-compose down
./prepare
docker-compose up –d
(2)准备安装包
./prepare
(3)正式安装
./install.sh
5、通过浏览器访问
这时候就可以访问服务器地址(注意要带上端口)登录harbor管理界面了,默认账号和密码是admin和Harbor12345,在harbor.yml中也有写明。其中有一个默认叫library的公开项目。
创建项目
注:也可通过修改/etc/host目录来对hostname域名进行映射
6、推送镜像到harbor
(1)登录harbor
(a)在/etc/docker/daemon.json添加私库地址
harbor默认使用https,如果要使用http,则需要修改/etc/docker/daemon.json文件。因此在登录harbor之前需要在/etc/docker/daemon.json添加私库地址
(b)添加http允许权限
查看docker.service文件位置:
systemctl status docker
修改docker.service
重启docker:
systemctl restart docker
注:登录失败
(a)Error response from daemon: Get https://192.168.152.128:5000/v2/: http: server gave HTTP response to HTTPS client
在/etc/docker/daemon.json添加私库地址
(b)Error response from daemon: Get http://192.168.152.128:5000/v2/: dial tcp 192.168.152.128:5000: connect: connection refused
如果在修改/etc/docker/daemon.json和/lib/systemd/docker.service文件后还是出现拒绝连接则重启haobor即可:
docker-compose up –d
另:退出登录:docker logout [hostname]
(2)推送镜像到haobor
(a)制作镜像
docker tag [images]:[tag] [harbor ip]:[port]/[library]/[images]:[tag]
例:
docker tag nginx_1:v1 192.168.152.128:5000/mylib/nginx_1:v1
注:一定要将镜像的peoository命名为[harbor ip]:[port]/[library]/[images]:[tag]
(b)推送镜像
docker push [harbor ip]:[port]/[library]/[images]:[tag]
例:
docker push 192.168.152.128:5000/mylib/nginx_1:v1
注:denied: requested access to the resource is denied
出现此错误的原因之一是镜像的peoository有问题,其格式应该为:
[harbor ip]:[port]/[library]/[images]:[tag]
修改镜像格式为对应格式即可:
docker tag [images]:[tag] [harbor ip]:[port]/[library]/[images]:[tag]
(3)查看镜像
在推送完镜像后此时在镜像仓库中就可以看到了。
(4)从harbor拉取镜像
docker pull [harbor]:[5000]/[library][images]:[tag]
例:
docker pull 192.168.152.128:5000/mylib/nginx_1:v1
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/King_weng/article/details/106506031