本文主要阐述如何在离线环境下安装 Harbor 镜像仓库。
环境说明:
操作系统:centos
harbor 版本:v1.5.0
docker 版本:docker-1.13.1-94
使用两台服务器,harbor 服务器用来安装 harbor,客户端服务器用来验证和测试。
1、安装准备
确保两台服务器都安装了 docker,一般的云主机如腾讯云或者是阿里云自带的 repos文件都有 docker 的 rpm包,所以一般情况下直接安装即可,除非有指定版本的需求。
yum install -y docker
systemctl enable docker.service
systemctl start docker.service
systemctl status docker.service
harbor 服务器需要下载 harbor 离线包 和 docker-compose 软件包。
- 下载 haobor 安装包并解压,下载目录为:/appdata
[root@master appdata]# pwd
/appdata
[root@master appdata]# wget http://harbor.orientsoft.cn/harbor-v1.5.0/harbor-offline-installer-v1.5.0.tgz
[root@master appdata]# du -sh harbor-offline-installer-v1.5.0.tgz
824M harbor-offline-installer-v1.5.0.tgz
[root@master appdata]# tar -zxvf harbor-offline-installer-v1.5.0.tgz
[root@master appdata]# ls | grep harbor
harbor
harbor-offline-installer-v1.5.0.tgz
- 下载 docker-compose 并安装
[root@master /]# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-\`uname -s\`-\`uname -m\` -o /usr/local/bin/docker-compose
[root@master /]# chmod +x /usr/local/bin/docker-compose
- 验证 docker-compose 是否安装成功
[root@master /]# docker-compose -version
docker-compose version 1.24.0, build 0aa59064
2、修改 harbor 配置文件
- 修改 harbor 服务端口
harbor 默认使用 80 端口,但一般服务器上的 80 端口会被其他服务占用,可以修改 harbor 默认的端口,一般修改为 5000。
[root@master ~]# cd /appdata/harbor
[root@master harbor]# ls
common docker-compose.notary.yml ha harbor.v1.5.0.tar.gz LICENSE prepare
docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh NOTICE
[root@master harbor]# cp docker-compose.yml docker-compose.yml.bak
[root@master harbor]# vim docker-compose.yml
volumes:
- ./common/config/nginx:/etc/nginx:z
networks:
- harbor
ports:
- 5000:80
- 443:443
- 4443:4443
- 设置 hostname 和后台管理账户 admin 的密码
[root@master harbor]# cd /appdata/harbor
[root@master harbor]# ls
common docker-compose.notary.yml ha harbor.v1.5.0.tar.gz LICENSE prepare
docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh NOTICE
[root@master harbor]# cp harbor.cfg harbor.cfg.bak
[root@master harbor]# vim harbor.cfg
hostname = 47.99.101.222:5000 # 其中 47.99.101.222 是云主机IP
harbor_admin_password = Harbor@123456 # 密码按需修改
3、安装 harbor
安装前,检查是否满足两个必要条件:
1) docker 服务是否已安装,并且处于 Running 状态;
2) docker-compose 是否已安装。执行install.sh脚本
[root@master harbor]# pwd
/appdata/harbor
[root@master harbor]# ls
common docker-compose.notary.yml ha harbor.v1.5.0.tar.gz LICENSE prepare
docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh NOTICE
[root@master harbor]# ./install.sh
- 检查是否部署成功
[root@master harbor]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3e4600433f5 vmware/harbor-jobservice:v1.5.0 "/harbor/start.sh" 6 hours ago Up 6 hours harbor-jobservice
fb5be3e51669 vmware/nginx-photon:v1.5.0 "nginx -g 'daemon ..." 6 hours ago Up 6 hours (healthy) 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:5000->80/tcp nginx
a6f615b7fda8 vmware/harbor-ui:v1.5.0 "/harbor/start.sh" 6 hours ago Up 6 hours (healthy) harbor-ui
6815d3923952 vmware/registry-photon:v2.6.2-v1.5.0 "/entrypoint.sh se..." 6 hours ago Up 6 hours (healthy) 5000/tcp registry
307a76950d0a vmware/harbor-adminserver:v1.5.0 "/harbor/start.sh" 6 hours ago Up 6 hours (healthy) harbor-adminserver
77491b86a979 vmware/redis-photon:v1.5.0 "docker-entrypoint..." 6 hours ago Up 6 hours 6379/tcp redis
6710cfb03fb6 vmware/harbor-db:v1.5.0 "/usr/local/bin/do..." 6 hours ago Up 6 hours (healthy) 3306/tcp harbor-db
c3917ccc8bfd vmware/harbor-log:v1.5.0 "/bin/sh -c /usr/l..." 6 hours ago Up 6 hours (healthy) 127.0.0.1:1514->10514/tcp harbor-log
4、测试
-
服务器测试
1) 在浏览器上输入地址:http://47.99.101.222:5000(harbor 云主机外网 IP),能看到如下界面。一般情况下,需要在云主机上设置安全组规则,放行 5000 端口,可以先用 telnet 命令验证 5000 端口是否开通,如果没放行,设置即可。
2)输入 admin 账号和密码,验证是否登录成功。
3)新建测试项目,如:hbs,验证是否新建 project 成功。
- 客户端测试
1)确保客户端节点已经安装好 docker。
[root@node ~]# systemctl status docker.service
2)修改 docker.service 配置文件,添加 --insecure-registry 选项,值为 harbor服务器IP和端口。
[root@node ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
--init-path=/usr/libexec/docker/docker-init-current \
--seccomp-profile=/etc/docker/seccomp.json \
--insecure-registry=47.99.101.222:5000 \
[root@node ~]# systemctl daemon-reload
[root@node ~]# systemctl restart docker.service
[root@node ~]# docker info | grep Insecure
3)镜像推送
# 先随机拉取一个镜像,例如 nginx镜像
[root@node ~]# docker pull docker.io/nginx:latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
27833a3ba0a5: Pull complete
ea005e36e544: Pull complete
d172c7f0578d: Pull complete
Digest: sha256:e71b1bf4281f25533cf15e6e5f9be4dac74d2328152edf7ecde23abc54e16c1c
Status: Downloaded newer image for docker.io/nginx:latest
# 将 nginx 镜像打上新的 tag,格式是:${harbor 服务器 IP}:${harbor 监听端口}/${项目}/${镜像名称}:${镜像 tag},确保项目要在 harbor 上提前建好。
[root@node ~]# docker tag docker.io/library/nginx 47.99.101.222:5000/hbs/nginx:latest
# 登录harbor
[root@node ~]# docker login 47.99.101.222:5000
Username (admin): admin
Password:
Login Succeeded
# 推送镜像
[root@node ~]# docker push 47.99.101.222:5000/hbs/nginx:latest
The push refers to a repository [47.99.101.222:5000/hbs/nginx]
fc4c9f8e7dac: Pushed
912ed487215b: Pushed
5dacd731af1b: Pushed
latest: digest: sha256:c10f4146f30fda9f40946bc114afeb1f4e867877c49283207a08ddbcf1778790 size: 948
5、更多 docker-compose 命令
docker-compose 的命令和 docker 的命令很相似,但是大部分 compose 的命令都需要到 docker-compose.yml 文件所在的目录下才能执行
- 以后台守护进程运行
[root@master harbor]# docker-compose up -d
- 查看 compose 运行的服务/容器
[root@master harbor]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/start.sh Up (healthy)
harbor-db /usr/local/bin/docker-entr ... Up (healthy) 3306/tcp
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-ui /harbor/start.sh Up (healthy)
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp,
0.0.0.0:5000->80/tcp
redis docker-entrypoint.sh redis ... Up 6379/tcp
registry /entrypoint.sh serve /etc/ ... Up (healthy) 5000/tcp
- 停止 compose 服务
[root@master harbor]# docker-compose stop
- 重启 restart 服务
[root@master harbor]# docker-compose restart
更多关于 docker-compose 的命令可以看看帮助文档即可。