Docker 部署Registry私有仓库+Harbor私有仓库
有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一 个本地仓库供私人使用。 两种不同的搭建Docker私有仓库的方法,都必须要基于一个Docker服务器上,相比较而言,Harbor功能更强大些。 之前详细写过Registry私有仓库的搭建方法,这里的Registry只是有一点配置不一样而已,若要搭建Registry私有仓库,最好结合:Docker 镜像的创建与构建私有库,对比其不一样的地方,选择适合自己的。
一、搭建Registry私有仓库
环境如下
host |
IP |
service |
---|---|---|
docker01 |
192.168.171.150 |
docker私有仓库 |
docker02-test |
192.168.171.151 |
test |
docker安装可参考部署 Docker
1、开始配置第一台Docker私有仓库服务器:
[root@docker01 ~]# docker pull registry
[root@docker01 ~]# docker run -tid --name registry --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry registry
#运行该镜像,各个选项含义如下:
# -tid:以后台持久运行,并分配一个可交互的为终端
# --name registry :给容器定义一个名字
# --restart=always:该容器可以随着docker服务的启动而启动
# -p:将容器的端口映射到宿主机,冒号前面是宿主机的端口,冒号后面是容器的端口,registry的默认端口是5000
# -v:将宿主机的目录挂载到容器中,冒号前面是宿主机的目录,冒号后面是容器中的目录
[root@docker01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest 2d4f4b5309b1 6 weeks ago 26.2MB
centos 7 b5b4d78bc90c 3 months ago 203MB
[root@docker01 ~]# docker tag centos:7 192.168.171.150:5000/centos:7 # 更改镜像名称,以便符合私有仓库名称规范
#注:私有仓库镜像的命名规则:192.168.171.150:5000/XXX(宿主机的IP:5000端口/镜像名称)
[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.150:5000 #更改docker的配置文件,以便指定私有仓库
#定位到上面那行,在后面添加“--insecure-registry”并指定私有仓库的IP及端口
[root@docker01 ~]# systemctl daemon-reload
[root@docker01 ~]# systemctl restart docker # 重启使配置生效
[root@docker01 ~]# docker push 192.168.171.150:5000/centos:7 # 上传镜像到私有仓库
[root@docker01 ~]# curl 192.168.171.150:5000/v2/_catalog #查看私有仓库中的镜像
{"repositories":["centos"]}
[root@docker01 ~]# curl 192.168.171.150:5000/v2/centos/tags/list #查看镜像的详细信息
{"name":"centos","tags":["7"]}
2、第二台Docker服务器进行测试
[root@docker02-test ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.150:5000
#定位到上面那行,添加“--insecure-registry”指定私有仓库的IP及参数
[root@docker02-test ~]# systemctl daemon-reload
[root@docker02-test ~]# systemctl restart docker
[root@docker02-test ~]# docker pull 192.168.171.152:5000/centos:7
[root@docker02-test ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.171.152:5000/centos 7 b5b4d78bc90c 3 months ago 203MB
二、配置Harbor私有仓库 Harbor私有仓库和第一个Registry私有仓库相比较而言,功能强大很多,并且支持web图形化管理,推荐使用。
环境如下
hostname |
IP |
service |
---|---|---|
docker01 |
192.168.171.151 |
harbor |
docker03 |
192.168.171.152 |
test |
1、打开github.com官网,在登录页面的右上角搜索compose---->找到docker/compose---->再找releases 网址
复制自己所需版本下提供的两条命令,在第一台Docker服务器上依次进行操作:
[root@docker01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@docker01 ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@docker01 ~]# chmod +x /usr/local/bin/docker-compose #赋予该命令执行权限
[root@docker01 ~]# docker-compose --version
docker-compose version 1.25.0-rc2, build 661ac20e
2、去github官网搜索harbor------>再点击goharbor/harbor------->再点击“releases”
[root@docker01 ~]# tar zxf harbor-offline-installer-v1.9.1.tgz
[root@docker01 ~]# cd harbor/
[root@docker01 harbor]# vim harbor.yml
hostname: 192.168.171.151 # 将hostname更改为本机IP
...........
harbor_admin_password: Harbor12345 # 这行指定的是登录harbor的登录名及密码
[root@docker01 harbor]# ./install.sh # 执行安装脚本
✔ ----Harbor has been installed and started successfully.----
[root@docker01 harbor]# ss -anput | grep 80 # 确定80端口在监听
[root@docker01 harbor]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.151:80
#定位到该行,添加“--insecure-registr”以便指定harbor的IP及其监听端口
[root@docker01 harbor]# systemctl daemon-reload
[root@docker01 harbor]# systemctl restart docker
[root@docker01 harbor]# docker-compose stop # 停止所有容器
[root@docker01 harbor]# docker-compose start # 再启动所有容器
#其实harbor容器都配置的随着docker启动而启动,主要我这里是为了以防万一有个容器没启来
3、使用浏览器访问harbor服务器的IP地址,使用配置文件中指定的用户名及密码登录(默认用户为“admin”,密码为“Harbor12345”)
4、点击“新建项目”
5、定义项目名称
6、回到Harbor服务器,开始向Harbor上传镜像
[root@docker01 ~]# docker login -u admin -p Harbor12345 192.168.171.151:80 # 命令行登录到harbor
Login Succeeded
#执行上调命令后出现的警告只是,警告你建议更改初始密码
[root@docker01 ~]# docker tag centos:7 192.168.171.151:80/test/centos:7
#注意要上传至harbor仓库的命名规范,其中test是刚才在harbor创建的项目
[root@docker01 ~]# docker push 192.168.171.151:80/test/centos:7 # 上传至harbor
7、测试,第二台Docker的测试端配置如下
[root@docker03 ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.151:80
#指定Harbor服务器的IP地址及80端口
[root@docker03 ~]# systemctl daemon-reload
[root@docker03 ~]# systemctl restart docker
[root@docker03 ~]# docker login -u admin -p Harbor12345 192.168.171.151:80 # 登录到私有仓库
Login Succeeded
[root@docker03 ~]# docker pull 192.168.171.151:80/test/centos:7
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python的这些高级用法你都知道吗?
- ggstatsplot绘图|统计+可视化,学术科研神器
- 用python下载哔哩哔哩视频?
- 数据处理|数据查重怎么办?去重,就这么办!
- FFmpeg合并MP4文件
- Broom |tidy up a bit,模型,检验结果一键输出!
- 今日算法题-动态规划法
- 3分钟短文 | PHP获取函数的代码片段,唯有反射最高效!
- ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
- 基因矩阵转置文件格式(* .gmt)
- gganimate|创建可视化动图,让你的表会说话
- ggplot2|玩转Manhattan图-你有被要求这么画吗?
- deconstructSigs|探寻cosmic的独特“气质”-mutation signature !
- barplot3d|圣诞节送你一个mutation signature搭建的“乐高”
- R读取gmt文件