> 原文链接地址:『高级篇』docker 之镜像仓库 (20)
三步走的第二步, 开始查看镜像仓库, 就一起学一学 docker 仓库, 仓库分 2 种, 别人家的仓库也叫公共仓库, 自己的仓库也叫私有仓库. 公共仓库和私有仓库最大的却别就是网速, 公共仓库从公网, 私有仓库是从局域网, 速度的差别, 安全性, 公共的肯定没有私有的安全, 保存在自己的硬盘上是最稳的. 其实在中级的时候我已经说过 docker 仓库的创建, 这次用 Mac 本来实现 docker 仓库的创建. 源码: https://github.com/limingios/msA-docker
公有仓库
最权威的公有仓库就是 hub.docker.com
打包
- docker tag zookeeper:3.5 zhugeaming/zookeeper:3.5
- docker login
- docker push zhugeaming/zookeeper:3.5
私有仓库 (一)
- https://hub.docker.com/_/registry/
- docker pull registry:2
安装说明
官方的安装说明
docker run -d -p 5000:5000 --name registry registry:2
push 到本地的 registry
- docker tag zookeeper:3.5 localhost:5000/zookeeper:3.5
- docker push localhost:5000/zookeeper:3.5
在生产环境下, 并不能满足要求, 单点登录, 一个服务器出了问题, 另一个服务器就很难托管过来, 它并没有界面, 给他交互不是很方便.
所以业内又出现了一个新的叫 harbor, 更适合生产环境中.
私有仓库 (二)
https://github.com/goharbor/harbor/
详细往下看 最终我放弃了 Mac 下直接安装 harbor, 通过 Vagrant 的方式虚拟机来安装 harbor
准备工作
选择线下安装
- cp Downloads/harbor-offline-installer-v1.6.1.tgz ~/App/
- cd ~/App
- tar -xvf harbor-offline-installer-v1.6.1.tgz
修改配置文件
修改红色部分
- cd harbor
- ll
- vi harbor.cfg
方便管理, Mac 系统管理, 修改存储路径
vi docker-compose.YAML
安装
奇葩问题
想在 Mac 上安装一个 harbor 下载了 harbor-offline-installer-v1.6.1.tgz
将文件放在了 Mac 本的 / user/liming/App / 目录下, 并解压
修改了配置文件和挂载文件的路径.
运行 install 的时候必须加 sudo, 负责权限不足, 加了 sudu 后可以正常安装并安装成功.
但是剩余的问题来了, 里面的容器无法访问挂载的配置文件, 提示权限不足. 为了弥补权限不足的问题, 我在 docker-compose.YAML 做了配置都增加了
privileged: true, 但是不生效, 困扰了几天身边没有 docker 方面的人, 帮忙解答下.
Vagrant 方式安装
修改 host 文件和端口, 可以不修改端口 vi harbor.cfg
vi docker-compose.YAML
安装 ./install.sh
浏览
ifconfig
访问 harbor
http://172.28.128.3:8888/
用户名: admin
密码: Harbor12345
library 公开的所有用户都可以 push
添加项目 micro-service, 私有项目
点击项目可以进入项目中.
添加成员
项目管理员 等于 admin
开发人员 等于 对项目的镜像 有 push 和 pull 的权限
访客 等于 只有 pull 的权限
复制功能
生产环境, 很多的机房, 每个机房之间的网速是很快的, 但是跨机房的, 可能网速的稳定性和速度就差一些, 每个机房部署一个 harbor, 在通过一个中心的 harbor, 当有镜像的自动去同步其他的服务器, 复制规则是可以针对项目的, 每个项目自己的一个复制规则.
创建用户
添加成员
分配开发人员
Harbor 其实操作很简单, 随便点点都了解了.
本地的微服务镜像推送
现在想想办法把镜像都推送到 mico-service 里面
host 文件修改 sudo vi /etc/hosts
上传基础镜像
hub.idig88.com 已经配置了基础
docker tag java:openjdk-8 hub.idig88.com:8888/micro-service/java:openjdk-8
- The push refers to repository [hub.idig88.com:8888/micro-service/java]
- Get https://hub.idig88.com:8888/v2/: http: server gave HTTP response to HTTPS client
配置地址: 登录服务器上.
- vi /usr/lib/systemd/system/docker.service
- service docker restart
配置地址: 本机 Mac. 修改后点击 App& Restart
再次上传基础镜像
docker login http://hub.idig88.com:8888 -u liming -p 密码
- docker push hub.idig88.com:8888/micro-service/java:openjdk-8
- docker tag python:3.6 hub.idig88.com:8888/micro-service/python:3.6
- docker push hub.idig88.com:8888/micro-service/python:3.6
推送微服务到仓库中
已经将基础的镜像推送到了镜像仓库中, 现在需要修改对应的 dockerfile 文件, 更改基础镜像的名称. 修改配置文件
6 个微服务 Dockerfile
From hub.idig88.com:8888/micro-service/
6 个 sh 脚本修改增加了推送功能
查看仓库
8 个镜像全部到位
PS: 经历了 2 天大概做了不下 20 小时, 我最终还是放弃了 Mac 下安装 harbor 的方式, 时刻要记住 Mac 只是个编辑器, 不要什么都在上边装, 很多时候通过虚拟机更类似生成环境. 这一次说完了 docker 仓库, 下次开始服务编排工具. 感觉好爽啊!
来源: http://www.bubuko.com/infodetail-2945804.html