Docker部署私有仓库(registry&Harbor)

仓库(Repository)是集中存放镜像的地方。
一个容易混淆的概念是注册服务器(registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址docker.sina.com.cn/centos:centos7来说,docekr.sian.com.cn是注册服务器地址,centos是仓库名,centos7是仓库的tag(标签)。

Docker Hub 官方仓库
目前docker官方维护了一个公共仓库,Docker Hub,其中已经包括了超过1500的镜像。大部分需求,都可以通过在Docker Hub中直接下载镜像来实现。

部署私有仓库:

1, 通过官方的registry镜像来部署私有仓库:

项目环境:
两台主机(centos7):docker01:172.16.1.30
docker02:172.16.1.40**

docker01:
(1)基于registry镜像运行一个容器:
[[email protected] ~]# docker run -d --name registry --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry registry:latest

参数说明:
#registry服务默认监听的是5000端口
-v = --volume 数据卷,进行一个挂载:宿主机:容器内

(2)命名私有仓库镜像:
##如果不对私有仓库命名的话,默认走的是公共仓库(docker hub),所以需要命名镜像。
私有仓库镜像的命名规则:宿主机ip地址:端口号/xxxx(需要更改的名称)
以nignx镜像为例,下载nginx镜像:
[[email protected] ~]# docker pull nginx

[[email protected] ~]# docker tag  nginx:latest 172.16.1.30:5000/nginx:latest

注意:当你对源镜像(nginx:latest)进行命名后,命名后的镜像名称也视为一个标签,因为id号是相同的。
如果当源镜像(nginx:latest)删除,命名后的镜像依然会存在,因为删除的是一个标签。

(3)修改docker主配置文件:
[[email protected] ~]# vim /usr/lib/systemd/system/docker.service

指定本地仓库的ip地址+端口号:

重新加载进程并重启docker服务:

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker

(4)将本地镜像push到私有仓库中:
[[email protected] ~]# docker push 172.16.1.30:5000/nginx:latest

//查看私有仓库中的镜像:

[[email protected] ~]# curl 172.16.1.30:5000/v2/_catalog
{"repositories":["nginx"]}

//查看仓库中镜像的标签:

[[email protected] ~]#  curl 172.16.1.30:5000/v2/nginx/tags/list
{"name":"nginx","tags":["latest"]}

docker02:
连接docker01,从docker01的仓库中拉取镜像:
(1)修改docker的配置文件:
[[email protected] ~]# vim /usr/lib/systemd/system/docker.service

重启docker服务:

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker

(2)从私有仓库中拉取镜像:

[[email protected] ~]# docker pull 172.16.1.30:5000/nginx #使用pull命令进行拉取

(3)部署nginx服务:

[[email protected] ~]# mkdir html
[[email protected] ~]# echo "welcome to nginx web" > html/index.html

[[email protected] ~]# docker run -itd --name nginx -p 80:80 -v /root/html:/usr/share/nginx/html 172.16.1.30:5000/nginx

访问nginx页面:

2,部署Harbor(哈勃)私有仓库:

registry是官方的一个私有仓库,而harbor是第三方的一个私有仓库。

(1)下载compose:
安装依赖:
[[email protected] ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
从github官网上进行下载:
URL:https://github.com/docker/compose/releases

[[email protected] ~]# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-uname -s-uname -m-o /usr/local/bin/docker-compose

[[email protected] ~]# chmod +x /usr/local/bin/docker-compose

查看compose版本:

[[email protected] ~]# docker-compose -version
docker-compose version 1.24.0, build 0aa59064

(2)下载harbor安装包并进行解压:

[[email protected] ~]# tar zxf harbor-offline-installer-v1.7.4.tgz -C /usr/local/
[[email protected] ~]# cd /usr/local/harbor/

编写harbor配置文件:
[[email protected] harbor]# vim harbor.cfg

执行脚本:
[[email protected] harbor]# ./install.sh

进入网站:用户admin,密码:Harbor12345(在harbor配置文件中可以查看到)
URL:http://172.16.1.30
[[email protected] harbor]# vim harbor.cfg


登陆界面如下:

(3)我们在网页上新建一个项目:


##修改docker配置文件:
[[email protected] ~]# vim /usr/lib/systemd/system/docker.service

//重新加载docker:

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker

//重启compose:
注意:因为刚刚已经重启了docker服务,所以我们需要将所有容器给重新启动。

[[email protected] harbor]# docker ps -a -q | xargs docker start

[[email protected] harbor]# docker-compose stop


[[email protected] harbor]# docker-compose start

(4)在本地终端上连接harbor:
[[email protected] harbor]# docker login -u admin -p Harbor12345 172.16.1.30:80

(5)将需要上传到harbor私有仓库的镜像进行push:
#例如将本地的一个nginx镜像命令并且push到仓库:
[[email protected] harbor]# docker tag nginx:latest 172.16.1.30:80/sunqiuming/nginx:latest

[[email protected] harbor]# docker push 172.16.1.30:80/sunqiuming/nginx:latest #push到刚才在网页上创建的项目

push成功后,我们在网页上进行查看:

docker02进行连接harbor:
(1)为了在docker02不再进入配置文件进行修改,将docker01上的docker配置文件拷贝给docker02:
#免密登陆:
[[email protected] ~]# ssh-keygen

[[email protected] ~]# ssh-copy-id 172.16.1.40

[[email protected] ~]# scp /usr/lib/systemd/system/docker.service [email protected]:/usr/lib/systemd/system/docker.service

重启docker服务:
[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker

(2)连接harbor私有仓库:

(3)从harbor私有仓库中拉取镜像:
[[email protected] ~]# docker pull 172.16.1.30:80/sunqiuming/nginx #指向的是刚才上传镜像的仓库中进行拉取。

(4)最后在基于该镜像,运行nginx服务并测试网页:
[[email protected] ~]# docker run -d --name nginx -p 80:80 172.16.1.30:80/sunqiuming/nginx:latest

私有仓库部署完成。。。。。。。

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/13972012/2446357

时间: 2024-10-10 22:31:45

Docker部署私有仓库(registry&Harbor)的相关文章

Docker 之 私有仓库registry

摘要: 1.拉去 registry镜像,例如在daocloud.io/registry这个私有镜像仓库 docker pull daocloud.io/registry 2.运行容器,挂在镜像内docker镜像仓库/var/lib/registry 至本地/root/my_docker_registry 1.拉去 registry镜像,例如在daocloud.io/registry这个私有镜像仓库 docker pull daocloud.io/registry 2.运行容器,挂在镜像内dock

Docker搭建私有仓库registry

拉取上传镜像 拉取镜像 docker pull <registry>[:<port>]/[<namespace>/]<name>:<tag> # registry :仓库服务器地址;不指定默认是docker hub # port :端口;默认443,因为是https协议: # namespace :名称空间,指是哪个用户的仓库,如果是顶层仓库,可以省: # name :仓库名: # tag :标签名:默认是latest版本: 上传镜像 docke

教你分分钟搞定Docker私有仓库Registry

一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像. 二.安装Docker及Registry 安装Docker见之前博文: http://www.cnblogs.com/Javame/p/5492543.html 安装Regi

(转)教你分分钟搞定Docker私有仓库Registry

转:https://www.cnblogs.com/Javame/p/7389093.html 一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要Docker Registry,它可以用来存储和管理自己的镜像. 二.安装Docker及Registry 安装Docker见之前博文: htt

docker基础 私有仓库repository搭建(1) registry

使用docker的login命令之后,可以使用push命令将镜像推送到dockerhub上,但是dockerhub毕竟在公网上,免费的帐户只有一个private 的repository是免费的,剩下的就都只能做成public的.由于种种限制,企业私有仓库的创建就有了各种应用场景.本文将从使用registry的方式简单介绍如何搭建私有的repository. pull registry镜像 使用到的registry镜像 [[email protected] ~]# docker search re

docker创建私有仓库

1.查看远程仓库中的列表$ sudo docker search registry    //会列出你所需要的仓库 2.获取registry仓库$ sudo docker pull registry   //最新 3.运行 $ sudo docker run -p 5000:5000  docker.io/registry   //-p映射端口 3.1查看容器运行情况[[email protected] docker]# docker psCONTAINER ID        IMAGE   

Docker的私有仓库

学习Docker的过程中Docker的私有仓库一直没能成功,就是因为CentOS 6.x和CentOS 7默认引入了支持https认证,每次在push和pull的时候都会报错,今天是周末,利用一天的时间反复测试和网上案列的整合,总算是成功了,也借此机会对学习Docker的朋友有所帮助. 个人的愚见:博友在练习的时候建议用CentOS 7.x系统,不建议用CentOS 6.x系统 一.准备 地址规划: Docker私有仓库地址:192.168.0.109 Docker客户端地址:192.168.0

【Docker构建私有仓库】

Docker默认不允许非HTTPS方式推送镜像,我们可以通过Docker的配置选项来取消此限制: [[email protected] ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["http://95822026.m.daocloud.io"], "insecure-registries": ["192.168.43.174:5000"] } # ??这是Jso

【Docker构建私有仓库】 -- 2019-08-16 13:04:42

原文: http://blog.gqylpy.com/gqy/331 "> Docker默认不允许非HTTPS方式推送镜像,我们可以通过Docker的配置选项来取消此限制: [[email protected] ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["http://95822026.m.daocloud.io"], "insecure-registries":