环境说明:
服务器系统:ubuntu16.04
harbor版本:v1.5.0
docker版本:17.12.0-ce
采用了两台机器:

harbor服务器 IP:10.0.0.61

客户端机器    IP:10.0.0.110

一.搭建

本次安装默认两台机器上面已经安装了docker,若没有安装docker可以看前述博客安装docker。

harbor的离线安装需要依赖与docker的docker compose组件,首先需要下载docker-compose和barbor的安装包。

1.下载haobor安装包和docker-compose安装包

harbor载地址:http://harbor.orientsoft.cn/

本次下载后放入的目录是/home/carter,解压安装包

tar xf harbor-offline-installer-v1.5.0.tgz

下载docker-composer,存放到/usr/local/bin目录下。

curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2.安装docker-compose

chmod +x /usr/local/bin/docker-compose

ll /usr/local/bin/ |grep docker-compose

检查docker-compose是否安装成功:

carter@bogon:~$ docker-compose --version
docker-compose version 1.8.1, build 878cff1

3.修改barbor默认端口和设置管理后台的admin密码

harbor的默认服务端口是80端口,但一般服务器上的80端口会被其他的服务占用,所以最后修改harbor的默认端口,这里修改为5000端口。

1)编辑/home/carter/harbor/docker-compose.yml文件:

cd /home/carter/harbor/

vi docker-compose.yml

替换80端口为5000端口:

  proxy:
    image: vmware/nginx-photon:v1.5.0
    container_name: nginx
    restart: always
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    ports:
      - 5000:80
      - 443:443
      - 4443:4443
    depends_on:
      - mysql
      - registry
      - ui
      - log
    logging:
      driver: "syslog"
      options:
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "proxy"

2)修改配置文件 /home/carter/harbor/harbor.cfg,设置hostname和后台管理账号amdin的密码

hostname = 10.0.0.61:5000

harbor_admin_password =123456

注意:这里不能注释掉默认的hostname,然后再在下面配置一个hostname,如果有两行hostname,安装会报错。

4.安装harbor,执行install.sh脚本

执行前先做如下检查:

1)docker服务是否正常运行,否则在运行install.sh会失败,报错“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”

2)docker-compose是否安装,否则在运行install.sh时会失败,报错“✖ Need to install docker-compose(1.7.1+) by yourself first and run this script again.”

安装:

./install.sh

5.检查部署是否成功

root@bogon:/home/carter/harbor# docker ps -a
CONTAINER ID        IMAGE                                  COMMAND                  CREATED             STATUS                  PORTS                                                                NAMES
1976f5536750        vmware/harbor-jobservice:v1.5.0        "/harbor/start.sh"       34 hours ago        Up 33 hours                                                                                  harbor-jobservice
e4508b4be0ef        vmware/nginx-photon:v1.5.0             "nginx -g 'daemon of…"   34 hours ago        Up 33 hours (healthy)   0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:5000->80/tcp   nginx
ca2430c31b2d        vmware/harbor-ui:v1.5.0                "/harbor/start.sh"       34 hours ago        Up 33 hours (healthy)                                                                        harbor-ui
75f031a8d3ad        vmware/harbor-db:v1.5.0                "/usr/local/bin/dock…"   34 hours ago        Up 33 hours (healthy)   3306/tcp                                                             harbor-db
2497b35a542e        vmware/harbor-adminserver:v1.5.0       "/harbor/start.sh"       34 hours ago        Up 33 hours (healthy)                                                                        harbor-adminserver
305fe4f2b3c1        vmware/redis-photon:v1.5.0             "docker-entrypoint.s…"   34 hours ago        Up 33 hours             6379/tcp                                                             redis
3d6630d94b36        vmware/registry-photon:v2.6.2-v1.5.0   "/entrypoint.sh serv…"   34 hours ago        Up 33 hours (healthy)   5000/tcp                                                             registry
04b660ed97e2        vmware/harbor-log:v1.5.0               "/bin/sh -c /usr/loc…"   34 hours ago        Up 33 hours (healthy)   127.0.0.1:1514->10514/tcp                                            harbor-log

二.测试

1.服务器测试

在浏览器上输入地址:http://10.0.0.61:5000,可以看到如下页面:

 

 

输入账号/密码:admin/123456登录进去。

在里面创建test项目

2.客户端测试。

在测试机器10.0.0.110上执行以下步骤

1)客户端要向服务端push或者pull镜像首先需要登录,登录服务端。

docker login 10.0.0.61:5000

按提示输入用户名/密码:admin/123456

这个时候会出现如下问题:

Get https://10.0.0.61:5000/v2/: http: server gave HTTP response to HTTPS client

出现该问题是由于客户端默认与服务端采用https交互,要服务端返回https格式报文的内容,但服务端返回的是http格式的内容导致客户端报错,所以需要修改客户端的配置,是其支持接收http格式的响应报文。

在客户端创建/etc/docker/daemon.json文件并添加配置:

echo '{ "insecure-registries":["10.0.0.61:5000"] }' > /etc/docker/daemon.json

然后重启docker服务:

systemctl restart docker

然后再次登录正常。

2)下载镜像hello-world

docker pull hello-world

3)为hello-world设立tag标签

docker tag hello-world:latest 10.0.0.61:5000/test/hello-world:latest

4)向服务器push镜像

docker push 10.0.0.61:5000/test/hello-world:latest

5)删除客户端的TAG镜像:

docker rmi 10.0.0.61:5000/test/hello-world:latest

6)检查镜像是否已经删除:

docker images

发现已经没有10.0.0.61:5000/test/hello-world:latest镜像。

7)从服务端pull镜像

docker pull 10.0.0.61:5000/test/hello-world:lates

后再查看本地的镜像,发现有10.0.0.61:5000/test/hello-world:latest镜像。

参考:https://blog.51cto.com/10950710/2152638

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐