[TOC]
## 1、Harbor镜像仓库
需要依赖Python 2.7或以上版本,Docker引擎1.10以上,还有Docker Compose 1.6.0或以上版本。
注:CentOS 7.2自带Python 2.7.5
安装Harbor
下载最新的offline离线安装包https://github.com/goharbor/harbor/releases
解压安装包tar xvf harbor-offline-installer-v1.7.4.tgz
修改配置文件harbor.cfg
必需的参数有:
1.hostname:目标主机的主机名,用于访问UI和注册服务。不能使用localhost和127.0.0.1,因为harbor需要被外部客户端访问,我这里修改成了IP地址。
2.ui\_url\_protocol:用于访问UI和令牌/通知服务的协议,默认为http,如果在Nginx上启用了SSL认证可以设置成https,我这里用的默认的http。
3.max\_job\_workers:作业服务中的最大复制worker数,这里默认写的50,考虑到我的服务器的性能,我这里修改成了5。
4.customize\_crt:设置为on,prepare脚本创建用于生成/验证注册表令牌的私钥和根证书。如果设置成off,密钥和根证书将由外部源提供,我设置的是on。
5.ssl\_cert:SSL证书的位置,只有协议设置成https的时候,这个属性才会生效。
6.ssl\_cert\_key:SSL秘钥的位置,只有协议设置成https的时候,这个属性才会生效。
7.secretkey\_path:密码存放的路径,这里最好别修改,否则后面会报错,我修改成了/data/。
8.log\_rotate\_count:日志文件保留的数量,达到最大值后会循环删除之前的日志。
9.log\_rotate\_size:每个日志的大小,我为了节省空间设置日志最多保留5个,每个最大200MB。
10.db\_password:用于DB身份验证的MySQL数据库的根密码。
11.harbor\_admin\_password:设置admin的密码,默认Harbor12345
运行prepare更新参数./prepare
开始安装,执行./install.sh进行安装
安装完成,访问一下http://ip
测试一下
docker pull hello-world
docker tag hello-world xxx.xxx.xxx.xxx/library/hello-world
docker push xxx.xxx.xxx.xxx/library/hello-world
报443端口问题请参考http://www.ilkhome.cn/?post=450
push镜像失败,报denied: requested access to the resource is denied
解决办法:遇到这种情况,登录一下harbor仓库,登录成功,就OK了。
~~~
docker login xxx.xxx.xxx.xxx
Username: admin
Password:
Login Succeeded
~~~
停止:
~~~
docker-compose -f docker-compose.yml stop
~~~
启动:
~~~
docker-compose -f docker-compose.yml start
~~~
## 2、registry镜像仓库
获取registry镜像
~~~
docker pull registry:latest
~~~
启动一个容器
~~~
docker run -d -v /docker/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
~~~
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/docker/registry目录挂载到该目录,即可实现将镜像保存到主机的/docker/registry目录了。
运行docker ps看一下容器情况
检查5000端口
~~~
netstat -an | grep 5000
~~~
打开浏览器输入[http://127.0.0.1:5000/v2](http://127.0.0.1:5000/v2),出现{}说明registry运行正常
验证
现在我们通过将镜像push到registry来验证一下。
我的机器上有个hello-world的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库
~~~
docker tag hello-world 127.0.0.1:5000/hello-world
~~~
接下来,我们运行docker push将hello-world镜像push到我们的私有仓库中
~~~
docker push 127.0.0.1:5000/hello-world
~~~
现在我们可以查看我们本地/docker/registry目录下已经有了刚推送上来的hello-world。我们也在浏览器中输入[http://127.0.0.1:5000/v2/\_catalog](http://127.0.0.1:5000/v2/\_catalog),可以看到{"repositories": \[hello-world\]}
现在我们可以先将我们本地的127.0.0.1:5000/hello-world和hello-world先删除掉
~~~
docker rmi hello-worlddocker rmi 127.0.0.1:5000/hello-world
~~~
然后使用docker pull从我们的私有仓库中获取hello-world镜像
~~~
docker pull 127.0.0.1:5000/hello-world
~~~
可能问题
可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。这是我们需要修改docker的配置文件在你要远程访问 docker registry 的机器上,修改文件 /etc/default/docker 或 /etc/sysconfig/docker,具体是哪个取决于你的系统,添加下面的内容
~~~
ADD_REGISTRY='--add-registry xxx.xxx.xxx.xxx:5000'DOCKER_OPTS="--insecure-registry xxx.xxx.xxx.xxx:5000"INSECURE_REGISTRY='--insecure-registry xxx.xxx.xxx.xxx:5000'
~~~
然后重启docker后台进程
service docker restart
这时候再push即可
部署WebUI
目前找到了两个 web ui,一个是 docker-registry-frontend[https://github.com/kwk/docker-registry-frontend](http://www.ilkhome.cn/index.php/go/aHR0cHM6Ly9naXRodWIuY29tL2t3ay9kb2NrZXItcmVnaXN0cnktZnJvbnRlbmQ=),另一个是 hyper/docker-registry-web[https://hub.docker.com/r/hyper/docker-registry-web/](http://www.ilkhome.cn/index.php/go/aHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2h5cGVyL2RvY2tlci1yZWdpc3RyeS13ZWIv)。
这两个 ui 功能差不多,只需任选其一就可以了。截止到我安装的时候,docker-registry-frontend 的功能还不完善,没有删除镜像的功能,只能浏览。后一个同时具备 删除和浏览 的功能。
1、创建工作目录
~~~
$ mkdir -p /docker/registryconf /docker/webconf$ cd /docker
~~~
2、建一个用于 registry 的配置文件
~~~
$ vim /docker/registryconf/config.yml
~~~
~~~
version: 0.1log: level: info formatter: text fields: service: registry-srv environment: productionstorage: cache: layerinfo: inmemory filesystem: rootdirectory: /var/lib/registry delete: # 要在 ui 上能够删除镜像,enable 的值必须是 true enabled: truehttp: addr: :5000
~~~
3、新建一个用于 ui 的配置文件
~~~
$ vim /docker/webconf/config.yml
~~~
~~~
registry: # Docker registry url url: http://registry-srv:5000/v2 # Docker registry fqdn name: localhost:5080 # To allow image delete, should be false readonly: false auth: # Disable authentication enabled: false
~~~
4、新建一个启动脚本
~~~
$ vim docker-compose-registry.yml
~~~
~~~
version: '2'services: registry-srv: image: registry volumes: - /docker/registryconf:/etc/docker/registry:ro - /docker/registry:/var/lib/registry - /etc/localtime:/etc/localtime container_name: registry-srv restart: always ports: - "5000:5000" registry-web: image: hyper/docker-registry-web volumes: - /docker/webconf:/conf/:ro - /etc/localtime:/etc/localtime container_name: registry-web depends_on: - registry-srv restart: always ports: - "5080:8080"
~~~
5.启动
~~~
docker-compose -f docker-compose-registry.yml up -d
~~~
打包好的配置文件放在/根目录 运行docker-compose -f docker-compose-registry.yml up -d即可启动
[下载配置文件docker.zip](http://www.ilkhome.cn/content/uploadfile/201812/74eb1544688617.zip)
- 微服务介绍
- 软件架构设计
- 系统简介
- 运行环境
- 模块介绍
- 启动部署命令参数
- 打包说明
- 开发说明
- Java8
- 认证理论
- 有网络隔离
- 无网络隔离
- token自动续签设计
- url级权限控制
- 单点登录
- 登录
- 用户名密码(+验证码)登录
- 通过openId获取token
- 通过手机号获取token
- 第三方系统接口对接
- 第三方系统单点登录
- 通用刷新token
- 账号登出接口
- 统一异常处理
- 日志埋点工具
- 审计日志
- yml自定义配置自动提示
- Redis使用
- CacheManager集成
- 搜索中心
- 网关zuul动态路由
- swagger
- 解决开发环境的服务冲突和实例乱窜
- 多租户理论
- 多租户实现
- 分布式锁
- 分布式id生成器
- 分布式事务
- 分库分表sharding-sphere
- 消息队列
- 系统幂等性
- X 实时搜索系统设计
- Spring Cloud性能调优
- 链路跟踪
- JWT的RSA非对称密钥生成
- jdk
- Oracle
- OpenJDK
- Dragonwell
- JVM介绍
- 常见JVM内存错误及解决方案
- JVM分析工具详解
- nexus
- docker
- 安装
- docker-compose安装
- 私有仓库搭建
- 指定数据储存目录
- 添加私有仓库
- 提交拉取镜像
- X 免Dockerfile文件构建项目镜像
- 持续集成部署CI/CD
- Confluence知识管理
- JIRA事务与项目跟踪软件
- Gitlab代码仓库
- Jenkins自动化部署
- SonarQube代码检测
- Rancher容器管理平台
- nacos
- 部署
- Rancher部署nacos
- 注册中心
- 配置中心
- 多环境
- 生产部署方案
- X 通过Nginx来实现环境隔离
- Sentinel详解
- 动态规则扩展
- 在生产环境中使用 Sentinel
- 启动配置项
- X 网关流控
- ELK日志系统和慢查询SQL
- docker安装
- 普通安装
- Filebeat安装部署
- ES数据定期删除
- 没数据问题排查思路
- X Logstash的grok语法调试
- 慢查询sql
- 审计日志
- Elasticsearch性能优化
- APM监控
- SkyWalking介绍
- Zipkin,Pinpoint,SkyWalking三种服务链路监控组件分析
- 服务端部署
- 客户端部署
- 日志清理
- Metrics监控
- 二进制包部署
- docker部署
- docker安装各组件监控
- Grafana仪表盘和告警配置
- JMeter压力测试工具
- 使用说明
- 分布式事务
- TX-LCN(同步)
- X SEATA(同步)
- X RocketMQ(异步)
- 消息队列
- RocketMQ
- RocketMQ安装部署
- RocketMQ常见异常处理
- SpringCloud-Stream
- RabbitMQ
- Redis
- 单机安装
- 主从复制
- 主从复制+哨兵
- cluster集群
- 持久化方案
- MySQL
- 单机安装
- 主从复制
- 主从切换
- 主主复制
- 高可用
- 分表分库
- Canal数据库日志解析消费
- Canal安装
- 实时同步数据到ElasticSearch
- FastDFS
- docker安装
- centos安装
- 项目管理系统
- 禅道
- 111