『高级篇』docker之镜像仓库(20)
2019-02-05 23:47:38
李明
  • 访问次数: 375
  • 注册日期: 2018-07-09
  • 最后登录: 2019-08-08

原创文章,欢迎转载。转载请注明:转载自 IT人故事会,谢谢!
原文链接地址: 『高级篇』docker之镜像仓库(20)

三步走的第二步,开始查看镜像仓库,就一起学一学docker仓库,仓库分2种,别人家的仓库也叫公共仓库,自己的仓库也叫私有仓库。公共仓库和私有仓库最大的却别就是网速,公共仓库从公网,私有仓库是从局域网,速度的差别,安全性,公共的肯定没有私有的安全,保存在自己的硬盘上是最稳的。其实在中级的时候我已经说过docker仓库的创建,这次用mac本来实现docker仓库的创建。源码: https://github.com/limingios/msA-docker

公有仓库

最权威的公有仓库就是hub.docker.com

168be56cf70fd986?w=1240&h=327&f=png&s=61

  • 打包

docker tag zookeeper:3.5 zhugeaming/zookeeper:3.5 docker login docker push zhugeaming/zookeeper:3.5

168be56cf6af89d5?w=1240&h=315&f=png&s=20
168be56cf83c1624?w=1240&h=712&f=png&s=11

私有仓库(一)

https://hub.docker.com/_/registry/

docker pull registry:2

168be56cf8415fa1?w=1240&h=918&f=png&s=32
168be56cf8566ce7?w=1240&h=258&f=png&s=15

  • 安装说明

官方的安装说明

docker run -d -p 5000:5000  --name registry registry:2

168be56d00d0614c?w=1240&h=62&f=png&s=703

  • push 到本地的registry

docker tag zookeeper:3.5 localhost:5000/zookeeper:3.5 docker push localhost:5000/zookeeper:3.5

168be56d1943c7fd?w=1240&h=297&f=png&s=19

在生产环境下,并不能满足要求,单点登录,一个服务器出了问题,另一个服务器就很难托管过来,它并没有界面,给他交互不是很方便。
所以业内又出现了一个新的叫harbor,更适合生产环境中。

私有仓库(二)

https://github.com/goharbor/harbor/
详细往下看 最终我放弃了mac下直接安装harbor,通过vagrant的方式虚拟机来安装harbor

  • 准备工作

选择线下安装

168be56d20f7ee84?w=1240&h=921&f=png&s=15

cp Downloads/harbor-offline-installer-v1.6.1.tgz ~/app/ cd ~/app tar -xvf harbor-offline-installer-v1.6.1.tgz

168be56d40d86d13?w=1240&h=715&f=png&s=40

  • 修改配置文件

修改红色部分

cd harbor ll vi harbor.cfg

168be56d66b04a9b?w=1240&h=891&f=png&s=47

方便管理,mac系统管理,修改存储路径

vi docker-compose.yml

168be56d7b9709dd?w=1164&h=1450&f=png&s=1
168be56d4ace990d?w=1240&h=1057&f=png&s=3
168be56d7c94840c?w=1240&h=1161&f=png&s=3
168be56d7d28ef69?w=1240&h=1169&f=png&s=2

  • 安装

168be56d81b86ec5?w=1240&h=877&f=png&s=59

  • 奇葩问题

想在mac上安装一个harbor 下载了harbor-offline-installer-v1.6.1.tgz

  1. 将文件放在了mac本的/user/liming/app/目录下,并解压

  2. 修改了配置文件和挂载文件的路径。

  3. 运行install的时候必须加sudo,负责权限不足,加了sudu后可以正常安装并安装成功。

  4. 但是剩余的问题来了,里面的容器无法访问挂载的配置文件,提示权限不足。为了弥补权限不足的问题,我在docker-compose.yml做了配置都增加了
    privileged: true,但是不生效,困扰了几天身边没有docker方面的人,帮忙解答下。

168be56d9d37b86d?w=1240&h=1150&f=png&s=6
168be56d9d40bf3b?w=1240&h=286&f=png&s=46

vagrant 方式安装

https://github.com/limingios/msA-docker/tree/master/vagrant/harbor

  • 修改host文件和端口,可以不修改端口

vi harbor.cfg

168be56d881a2ec4?w=910&h=42&f=png&s=8785
168be56da33c8bd5?w=1240&h=408&f=png&s=20

vi docker-compose.yml

168be56d9d527880?w=968&h=862&f=png&s=813

  • 安装

 ./install.sh

168be56da47684fd?w=1240&h=526&f=png&s=32
168be56dbe9b60b2?w=1240&h=602&f=png&s=22

  • 浏览

ifconfig

168be56dbaaa104f?w=1240&h=1154&f=png&s=7

  • 访问harbor

http://172.28.128.3:8888
用户名:admin
密码:Harbor12345

168be56dc61e0d89?w=970&h=322&f=png&s=240
168be56dd71c5745?w=1240&h=647&f=png&s=53

library 公开的所有用户都可以push

168be56de19c849c?w=1240&h=500&f=png&s=82

添加项目micro-service,私有项目

168be56de180fa35?w=1240&h=743&f=png&s=54
168be56df8aeaf9e?w=1240&h=418&f=png&s=82

点击项目可以进入项目中。

168be56e05c50f74?w=1240&h=427&f=png&s=56

  • 添加成员

  1. 项目管理员 等于 admin

  2. 开发人员 等于 对项目的镜像 有push 和pull的权限

  3. 访客 等于 只有 pull的权限

168be56e02131268?w=1240&h=761&f=png&s=68

  • 复制功能

生产环境,很多的机房,每个机房之间的网速是很快的,但是跨机房的,可能网速的稳定性和速度就差一些,每个机房部署一个harbor,在通过一个中心的harbor,当有镜像的自动去同步其他的服务器,复制规则是可以针对项目的,每个项目自己的一个复制规则。

168be56deb15e7cb?w=1240&h=484&f=png&s=65

  • 创建用户

168be56e0028ecab?w=1240&h=911&f=png&s=80

  • 添加成员

分配开发人员


168be56e0688e2ba?w=1240&h=373&f=png&s=59

Harbor其实操作很简单,随便点点都了解了。

本地的微服务镜像推送

现在想想办法把镜像都推送到mico-service里面

  • host文件修改

sudo vi /etc/hosts

168be56e1779dab4?w=1116&h=552&f=png&s=56

  • 上传基础镜像

hub.idig88.com 已经配置了基础

docker tag java:openjdk-8 hub.idig88.com:8888/micro-service/java:openjdk-8

168be56e1ddb057b?w=1240&h=117&f=png&s=13

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
  • 配置地址:登录服务器上。

168be56e204085d2?w=1240&h=859&f=png&s=44

vi /usr/lib/systemd/system/docker.service  service docker restart

168be56e2701da2a?w=1240&h=953&f=png&s=43

配置地址:本机mac。修改后点击app& Restart

168be56e3359d187?w=544&h=764&f=png&s=142
168be56e3944aa90?w=964&h=900&f=png&s=636

  • 再次上传基础镜像

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

168be56e3a85e220?w=1240&h=389&f=png&s=22
168be56e3d435536?w=1240&h=363&f=png&s=51
168be56e49eb2762?w=1240&h=339&f=png&s=21
168be56e5132dcd2?w=1240&h=409&f=png&s=60
168be56e5fd35f5f?w=1240&h=456&f=png&s=87

推送微服务到仓库中

已经将基础的镜像推送到了镜像仓库中,现在需要修改对应的dockerfile文件,更改基础镜像的名称。修改配置文件

  • 6个微服务Dockerfile

From hub.idig88.com:8888/micro-service/

168be56e57e8a632?w=1190&h=310&f=png&s=48
168be56ea7185788?w=956&h=288&f=png&s=455
168be56e57dea804?w=1240&h=425&f=png&s=13
168be56e6bf39d1f?w=1240&h=414&f=png&s=98
168be56e6f7fe3dc?w=1240&h=406&f=png&s=11
168be56e7ab1d790?w=1240&h=263&f=png&s=83

  • 6个sh脚本修改增加了推送功能


    168be56e7d0c71c6?w=1240&h=200&f=png&s=10

168be56e7ff43ea2?w=1180&h=276&f=png&s=39
168be56e85c46fd4?w=1240&h=242&f=png&s=12
168be56e878c5f4b?w=1240&h=236&f=png&s=87
168be56e89fc6eca?w=1240&h=215&f=png&s=90
168be56e9a90ad80?w=1134&h=368&f=png&s=36

查看仓库

8个镜像全部到位

168be56ea377581d?w=1240&h=651&f=png&s=11
168be56e9dc06ce5?w=1240&h=447&f=png&s=77

PS:经历了2天大概做了不下20小时,我最终还是放弃了mac下安装harbor的方式,时刻要记住mac只是个编辑器,不要什么都在上边装,很多时候通过虚拟机更类似生成环境。这一次说完了docker仓库,下次开始服务编排工具。感觉好爽啊!

168be56ea3942d33?w=1080&h=541&f=png&s=45