Docker之Harbor
接着上1、2、3、4章继续研究docker
一:简介
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。
docker的registry是用本地存储或者s3都是可以的,harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。Harbor的镜像拷贝功能是通过docker registry的API去拷贝,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。
四:安装
部署环境(一台主机即可):
centos-7.2
docker-engine-1.12.5
docker-compose-1.9.0
harbor-0.5.0
修改主机名和hosts文件
# hostnamectl --static set-hostname docker-node1.com
# echo “192.168.91.134 docker-node1.com” > /etc/hosts
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#systemctl stop firewalld.service
#systemctl disable firewalld.service
如果没按docker安装
4.1、下载所需的软件包(以下需要-翻-墙-下载的地方你们自己解决吧......):
(1)下载docker-compose:
[root@docker-node1 ~]# curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 0 617 0 0 188 0 --:--:-- 0:00:03 --:--:-- 188
100 8280k 100 8280k 0 0 123k 0 0:01:07 0:01:07 --:--:-- 86789
[root@docker-node1 ~]# ll /usr/local/bin/docker-compose
-rw-r--r-- 1 root root 8479184 Aug 2 00:11 /usr/local/bin/docker-compose
[root@docker-node1 ~]# chmod +x /usr/local/bin/docker-compose
[root@docker-node1 ~]# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
(2)下载harbor:
[root@docker-node1 ~]# wget https://github.com/vmware/harbor/releases/download/0.5.0/harbor-offline-installer-0.5.0.tgz
#我下载的是offline离线包,这样在后续的部署及安装都会比较快,总共有300M左右的大小!
[root@docker-node1 ~]# tar zxvf harbor-offline-installer-0.5.0.tgz
(3)解压,配置harbor:
[root@docker-node1 ~]# tar zxvf harbor-offline-installer-0.5.0.tgz
[root@docker-node1 ~]# cd harbor/
[root@docker-node1 harbor]# #vim harbor.cfg
hostname = 192.168.91.134
#这里只是简单的测试,所以只编辑这一行为本虚拟机的ip,其他的默认不做修改;当然也可以根据你自己的实际情况做修改!
(4)执行安装脚本:
#会拉取好几个镜像下来,及检查环境:
[root@docker-node1 harbor]# ./install.sh
(5)配置docker:
#因为docker默认使用的是https连接,而harbor默认使用http连接,所以需要修改docker配置标志insecure registry不安全仓库的主机!
#当然,harbor也可以设置为https,这个后续文章中再列出操作方法吧!
修改 /usr/lib/systemd/system/docker.service即可,三者选其一即可.
ExecStart=/usr/bin/dockerd-current \
--add-registry=192.168.91.134 --insecure-registry=192.168.91.134
#在ExecStart=/usr/bin/dockerd-current出添加-add-registry和--insecure-registry参数.
#只加上--insecure-registry这个参数即可。
#重启docker:
[root@docker-node1 harbor]# systemctl daemon-reload
[root@docker-node1 harbor]# systemctl restart docker.service
使用docker info验证:
[root@docker-node1 harbor]# docker info
输出最后一行有:
Registries: 192.168.91.134 (insecure), docker.io (secure)
Harbor容器的stop与start:
进入Harbor目录执行如下命令即可:
[root@docker-node1 harbor]# docker-compose stop
[root@docker-node1 harbor]# docker-compose start
Starting log ... done
Starting ui ... done
Starting mysql ... done
Starting jobservice ... done
Starting registry ... done
Starting proxy ... done
[root@docker-node1 harbor]#
安装完成后会生成如下6个容器:
[root@docker-node1 harbor]# docker ps
到此便安装完成了,直接打开浏览器登陆即可:
默认用户密码是:admin/Harbor12345
五、推送测试:将本地镜像推送到docker私有仓库:
1、向Harbor推一个镜像:
首先登录Harbor的web界面并创建一个项目common.org
需要把项目设为公开
然后把需要上传的镜像命名为 ip:端口/项目名/镜像名:版本号 必须谨记。
2.查看本地的镜像:
先pull一个centos镜像:
[root@docker-node1 harbor]# docker pull docker.io/centos:latest
[root@docker-node1 harbor]# docker images
3.给centos镜像打tag:
[root@docker-node1 harbor]# docker tag docker.io/centos:latest 192.168.91.134/common.org/centos7:latest
4、推送至Harbor:
[root@docker-node1 harbor]# docker push 192.168.91.134/common.org/centos7:latest
三、从Harbor私有仓库上拉取一个镜像到客户机.
如果其他主机要拉取harbor仓库的镜像,也需要修改docker的配置文件,添加如下参数即可,并重启服务,其中ip为harbor仓库的地址.
# vim /etc/sysconfig/docker
OPTIONS='--insecure-registry=10.20.9.223'
在客户端机器登陆harbor服务器,如果认证成功,即可以上传下载.
[root@dockr-client~]# docker login 10.20.9.223
Username (admin): admin
Password:
Login Succeeded
[root@dockr-client~]#
执行拉取镜像命令:
[root@docker-node ~]# docker pull 10.20.9.223/common.org/centos7:latest
Trying to pull repository 10.20.9.223/common.org/centos7 ...
latest: Pulling from 10.20.9.223/common.org/centos7
Digest: sha256:191c883e479a7da2362b2d54c0840b2e8981e5ab62e11ab925abf8808d3d5d44
Status: Image is up to date for 10.20.9.223/common.org/centos7:latest
[root@docker-node ~]#
如果想查看harbor仓库的有哪些镜像,直接在http://10.20.9.223/harbor 界面就可以搜索到镜像列表.
总结:
解决:
就是从新pull一个呗。
解决方法:
重新初始化呗。(可能会出现传输关闭可能是网络不好,再多执行一个就可以了。)
[root@docker-node1 harbor]# ./install.sh