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管理界面了,默认账号和密码是adminHarbor12345,在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

 

猜你喜欢

转载自blog.csdn.net/King_weng/article/details/106506031