镜像仓库 Harbor 离线安装手册

本文主要阐述如何在离线环境下安装 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 端口是否开通,如果没放行,设置即可。


    harbor界面

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 的命令可以看看帮助文档即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容