有时候使用 Docker Hub 这样的公共仓库可能不方便, 用户可以创建一 个本地仓库供私人使用.
两种不同的搭建 Docker 私有仓库的方法, 都必须要基于一个 Docker 服务器上, 相比较而言, Harbor 功能更强大些.
之前详细写过 Registry 私有仓库的搭建方法, 这里的 Registry 只是有一点配置不一样而已, 若要搭建 Registry 私有仓库, 最好结合: Docker 镜像的创建与构建私有库 https://blog.51cto.com/14227204/2454281 , 对比其不一样的地方, 选择适合自己的.
一, 搭建 Registry 私有仓库
环境如下
host | IP | service |
---|---|---|
docker01 | 192.168.171.150 | docker 私有仓库 |
docker02-test | 192.168.171.151 | test |
docker 安装可参考部署 Docker
1, 开始配置第一台 Docker 私有仓库服务器:
- [[email protected] ~]# docker pull registry
- [[email protected] ~]# 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: 将宿主机的目录挂载到容器中, 冒号前面是宿主机的目录, 冒号后面是容器中的目录
- [[email protected] ~]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- registry latest 2d4f4b5309b1 6 weeks ago 26.2MB
- CentOS 7 b5b4d78bc90c 3 months ago 203MB
- [[email protected] ~]# docker tag CentOS:7 192.168.171.150:5000/CentOS:7 # 更改镜像名称, 以便符合私有仓库名称规范
- # 注: 私有仓库镜像的命名规则: 192.168.171.150:5000/XXX(宿主机的 IP:5000 端口 / 镜像名称)
- [[email protected] ~]# VIM /usr/lib/systemd/system/docker.service
- ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.150:5000 #更改 docker 的配置文件, 以便指定私有仓库
- # 定位到上面那行, 在后面添加 "--insecure-registry" 并指定私有仓库的 IP 及端口
- [[email protected] ~]# systemctl daemon-reload
- [[email protected] ~]# systemctl restart docker # 重启使配置生效
- [[email protected] ~]# docker push 192.168.171.150:5000/CentOS:7 # 上传镜像到私有仓库
- [[email protected] ~]# curl 192.168.171.150:5000/v2/_catalog #查看私有仓库中的镜像
- {
- "repositories":["centos"]
- }
- [[email protected] ~]# curl 192.168.171.150:5000/v2/CentOS/tags/list #查看镜像的详细信息
- {
- "name":"centos","tags":["7"]
- }
2, 第二台 Docker 服务器进行测试
- [[email protected] ~]# VIM /usr/lib/systemd/system/docker.service
- ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.150:5000
- # 定位到上面那行, 添加 "--insecure-registry" 指定私有仓库的 IP 及参数
- [[email protected] ~]# systemctl daemon-reload
- [[email protected] ~]# systemctl restart docker
- [[email protected] ~]# docker pull 192.168.171.152:5000/CentOS:7
- [[email protected] ~]# 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 网址 https://github.com/docker/compose/releases
复制自己所需版本下提供的两条命令, 在第一台 Docker 服务器上依次进行操作:
- [[email protected] ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
- [[email protected] ~]# 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
- [[email protected] ~]# chmod +x /usr/local/bin/docker-compose #赋予该命令执行权限
- [[email protected] ~]# docker-compose --version
- docker-compose version 1.25.0-rc2, build 661ac20e
2, 去 GitHub 官网搜索 harbor------> 再点击 goharbor/harbor-------> 再点击 "releases" 网址 https://github.com/goharbor/harbor/releases
- [[email protected] ~]# tar zxf harbor-offline-installer-v1.9.1.tgz
- [[email protected] ~]# cd harbor/
- [[email protected] harbor]# VIM harbor.YAML
- hostname: 192.168.171.151 # 将 hostname 更改为本机 IP
- ...........
- harbor_admin_password: Harbor12345 # 这行指定的是登录 harbor 的登录名及密码
- [[email protected] harbor]# ./install.sh # 执行安装脚本
- ? ----Harbor has been installed and started successfully.----
- [[email protected] harbor]# ss -anput | grep 80 # 确定 80 端口在监听
- [[email protected] 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 及其监听端口
- [[email protected] harbor]# systemctl daemon-reload
- [[email protected] harbor]# systemctl restart docker
- [[email protected] harbor]# docker-compose stop # 停止所有容器
- [[email protected] harbor]# docker-compose start # 再启动所有容器
- # 其实 harbor 容器都配置的随着 docker 启动而启动, 主要我这里是为了以防万一有个容器没启来
3, 使用浏览器访问 harbor 服务器的 IP 地址, 使用配置文件中指定的用户名及密码登录 (默认用户为 "admin", 密码为 "Harbor12345")
4, 点击 "新建项目"
5, 定义项目名称
6, 回到 Harbor 服务器, 开始向 Harbor 上传镜像
- [[email protected] ~]# docker login -u admin -p Harbor12345 192.168.171.151:80 # 命令行登录到 harbor
- Login Succeeded
- # 执行上调命令后出现的警告只是, 警告你建议更改初始密码
- [[email protected] ~]# docker tag CentOS:7 192.168.171.151:80/test/CentOS:7
- # 注意要上传至 harbor 仓库的命名规范, 其中 test 是刚才在 harbor 创建的项目
- [[email protected] ~]# docker push 192.168.171.151:80/test/CentOS:7 # 上传至 harbor
7, 测试, 第二台 Docker 的测试端配置如下
- [[email protected] ~]# VIM /usr/lib/systemd/system/docker.service
- ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.171.151:80
- # 指定 Harbor 服务器的 IP 地址及 80 端口
- [[email protected] ~]# systemctl daemon-reload
- [[email protected] ~]# systemctl restart docker
- [[email protected] ~]# docker login -u admin -p Harbor12345 192.168.171.151:80 # 登录到私有仓库
- Login Succeeded
- [[email protected] ~]# docker pull 192.168.171.151:80/test/CentOS:7
来源: http://www.bubuko.com/infodetail-3653344.html