zoukankan      html  css  js  c++  java
  • Docker: vmware企业级docker镜像私服--Harbor的搭建

    1、下载harbor,地址https://github.com/vmware/harbor
    2、进入harbor-master/Deploy目录,修改harbor.cfg文件,主要修改以下信息
         2.1、hostname =10.10.10.10 (这个是harbor所在服务器的ip,不能写127.0.0.1)
         2.2、修改邮箱相关信息

    3、执行./prepare命令


    4.1

    Ubuntu:   (sudo vi /etc/default/docker)

    DOCKER_OPTS="--insecure-registry 10.10.10.10”

    4.2 Centos:

    修改/usr/lib/systemd/system/docker.service文件

    修改一行  ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn --insecure-registry 10.10.10.10”

    为什么要修改这个配置文件呢?--insecure-registry代表本地镜像库,修改了以上配置文件后需要重启docker服务,此时docker login时,将连接指定的本地镜像库。

    如果不修改这个配置文件,则登录镜像私服时(docker login 10.10.10.10”)会抛出如下错误

    Error response from daemon: Get https://10.10.10.10”/v1/users/: dial tcp 10.10.10.10”:443: getsockopt: connection refused

    5、重启docker服务

    service docker restart


    7、build并启动
    docker-compose up -d
    8、从docker hub上下载hello-world镜像
    docker run hello-world
    9、给镜像打标签,以便上传到私服,其中library是harbor默认提供的项目
    docker tag hello-world 10.10.20.202/library/hello-world
    10、上传镜像
    登录镜像私服,执行以下指令,再输入用户名和密码
    docker login 10.10.20.202
    上传镜像
    docker push 10.10.20.202/library/hello-world
    11、在浏览器上访问10.10.20.202,用户名:admin,密码:Harbor12345登录完成后,点击library这个项目,即可看到上传的hello-world

    以下附带harbor的启动、停止命令

    【Build and start Harbor】

    $ sudo docker-compose up -d
    Creating harbor_log_1
    Creating harbor_mysql_1
    Creating harbor_registry_1
    Creating harbor_ui_1
    Creating harbor_proxy_1


    【Stop Harbor】

    $ sudo docker-compose stop
    Stopping harbor_proxy_1 ... done
    Stopping harbor_ui_1 ... done
    Stopping harbor_registry_1 ... done
    Stopping harbor_mysql_1 ... done
    Stopping harbor_log_1 ... done
    Restart Harbor after stopping

    【Start Harbor】

    $ sudo docker-compose start
    Starting harbor_log_1
    Starting harbor_mysql_1
    Starting harbor_registry_1
    Starting harbor_ui_1
    Starting harbor_proxy_1
    Remove Harbor's containers while keeping the image data and Harbor's database files on the file system:

    【删除Harbor】

    $ sudo docker-compose rm
    Going to remove harbor_proxy_1, harbor_ui_1, harbor_registry_1, harbor_mysql_1, harbor_log_1
    Are you sure? [yN] y
    Removing harbor_proxy_1 ... done
    Removing harbor_ui_1 ... done
    Removing harbor_registry_1 ... done
    Removing harbor_mysql_1 ... done
    Remove Harbor's database and image data (for a clean re-installation):

    $ rm -rf /data/database
    $ rm -rf /data/registry


    对接LDAP认证

    Harbor支持两种认证方式,默认为本地存储,即账号信息存储在mysql下,上文已经具体介绍。接下来介绍另外一 种认证方式LDAP,只需要修改配置文件即可。需要提供ldap url以及ldap basedn参数,并且设置auth_mode为ldap_auth。

    快速部署LDAP服务
    为了测试方便,我们使用Docker启动一个LDAP服务器,启动脚本如下:

    !/bin/bash

    NAME=ldap_server
    docker rm -f $NAME 2>/dev/null
    docker run --env LDAP_ORGANISATION="Unitedstack Inc."
    --env LDAP_DOMAIN="ustack.com"
    --env LDAP_ADMIN_PASSWORD="admin_password"
    -v pwd/containers/openldap/data:/var/lib/ldap
    -v pwd/containers/openldap/slapd.d:/etc/ldap/slapd.d
    --detach --name $NAME osixia/openldap:1.1.2

    创建新用户,首先需要定义ldif文件,new_user.ldif:
    dn: uid=test,dc=ustack,dc=com
    uid: test
    cn: test
    sn: 3
    objectClass: top
    objectClass: posixAccount
    objectClass: inetOrgPerson
    loginShell: /bin/bash
    homeDirectory: /home/test
    uidNumber: 1001
    gidNumber: 1001
    userPassword: 1q2w3e4r
    mail: test@example.com
    gecos: test

    通过以下脚本创建新用户,其中ldap_server为LDAP服务容器名称。
    docker cp new_user.ldif ldap_server:/
    docker exec ldap_server ldapadd -x
    -D "cn=admin,dc=ustack,dc=com"
    -w admin_password
    -f /new_user.ldif -ZZ

    查看用户是否创建成功:
    docker exec ldap_server ldapsearch -x -h localhost
    -b dc=ustack,dc=com -D "cn=admin,dc=ustack,dc=com"
    -w admin_password
    检查test用户是否存在,若存在,则说明创建成功,否则需要使用docker logs查看日志。

    配置Harbor使用LDAP认证
    修改harbor.cfg文件关于LDAP配置项,如下:
    auth_mode = ldap_auth
    ldap_url = ldap://10.10.20.202
    ldap_basedn = uid=%s,dc=ustack,dc=com

    然后重新部署Harbor:
    ./prepare
    docker-compose stop
    docker-compose rm -f
    docker-compose up -d

    测试是否能够使用test用户登录:
    docker login -u test -p 1q2w3e4r
    -e test@example.com 10.10.20.202

    参考资料

     http://dockone.io/article/1252

    Harbor项目:https://github.com/vmware/harbor
    官方配置mirror registry文档:https://github.com/docker/dist ... or.md
    Daocloud关于mirror的博客:http://blog.daocloud.io/daocloud-mirror-free/
    openLDAP部署:https://github.com/osixia/docker-openldap

  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/WayneZeng/p/5714547.html
Copyright © 2011-2022 走看看