使用harbor配置私仓

安装harbor之前,需要安装好Python,Docker,DockerCompose。Python需要2.7以上的版本,Docker需要1.10以上的版本;Docker Compose 需要1.6.0以上的版本。

一:安装Docker Compose

https://docs.docker.com/compose/install/中介绍的各种安装方法,只有使用pip的方式才能安装成功。

使用pip安装,因为docker-compose的依赖包可能会与原有python环境的系统包冲突,因此文档中建议使用virtualenv。

首先安装virtualenv:

pip install virtualenv

然后为安装docker-compose创建虚拟环境:

mkdir -p /opt/testvenv

cd /opt/testvenv

virtualenv venv

激活虚拟环境,安装docker-compose:

source venv/bin/activate

pip install docker-compose

安装好的docker-compose在目录/opt/testvenv/venv/bin下,创建软链接:

ln -s /opt/testvenv/venv/bin/docker-compose /usr/local/bin/docker-compose

这样便安装好了docker-compose。

二:安装harbor

1:使用源码安装,通过git下载源码:

mkdir -p /opt/harbor/git

cd /opt/harbor/git

git clone https://github.com/vmware/harbor

2:配置harbor

在安装harbor之前,需要修改/opt/harbor/git/harbor/Deploy/harbor.cfg中的配置参数,然后执行prepare脚本来生成harbor所有容器的配置文件,最后运行docker compose启动harbor。

在文件harbor.cfg中,需要配置的参数如下:

hostname:私有仓库的主机名。可以是IP地址,也可以是域名。这里配置成192.168.1.104;

ui_url_protocol:用户访问私仓时使用的协议,默认时http,这里配置成https;

harbor_admin_password:harbor的管理员账户密码,默认密码是Harbor12345,用户名是admin;

其他配置参数可以参考:

https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

3:配置https访问

用户访问harbor默认的协议是http,但是registry目前默认支持https访问,如果使用http,需要在访问私仓的主机上,修改docker的配置文件,增加--insecure-registry选项。

要配置https访问,首先生成证书:

mkdir -p /opt/harbor/cert/

openssl req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout \

/opt/harbor/cert/domain.key -out /opt/harbor/cert/domain.crt

...

Country Name (2 letter code) [XX]:

State or Province Name (full name) []:

Locality Name (eg, city) [Default City]:

Organization Name (eg, company) [Default Company Ltd]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server‘s hostname) []:192.168.1.104

Email Address []:

然后将生成的证书复制到nginx容器的特定目录下:

cp /opt/harbor/cert/domain.crt /opt/harbor/git/harbor/Deploy/config/nginx/cert/

cp /opt/harbor/cert/domain.key /opt/harbor/git/harbor/Deploy/config/nginx/cert/

然后修改/opt/harbor/git/harbor/Deploy/config/nginx目录下的配置文件:

mv nginx.conf  nginx.conf.bak

cp nginx.https.conf nginx.conf

修改nginx.conf文件内容:

server {

listen 443 ssl;

server_name 192.168.1.104;

# SSL

ssl_certificate /etc/nginx/cert/domain.crt;

ssl_certificate_key /etc/nginx/cert/domain.key;

...

}

server {

listen 80;

server_name 192.168.1.104;

...

}

4:生成修改harbor容器的配置文件:

cd /opt/harbor/git/harbor/Deploy

./prepare

运行prepare之后,需要修改/opt/harbor/git/harbor/Deploy/docker-compose.yml文件中,容器的数据卷目录,首先创建数据卷目录:

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

mkdir -p /opt/harbor/data

mkdir -p /opt/harbor/data/registry

mkdir -p /opt/harbor/data/log

mkdir -p /opt/harbor/data/database

然后修改docker-compose.yml文件内容:

version: ‘2‘

services:

log:

build: ./log/

volumes:

- /opt/harbor/data/log/:/var/log/docker/

ports:

- 1514:514

registry:

image: library/registry:2.4.0

volumes:

- /opt/harbor/data/registry:/storage

- ./config/registry/:/etc/registry/

environment:

- GODEBUG=netdns=cgo

ports:

- 5001:5001

command:

["serve", "/etc/registry/config.yml"]

depends_on:

- log

logging:

driver: "syslog"

options:

syslog-address: "tcp://127.0.0.1:1514"

syslog-tag: "registry"

mysql:

build: ./db/

volumes:

- /opt/harbor/data/database:/var/lib/mysql

env_file:

- ./config/db/env

depends_on:

- log

logging:

driver: "syslog"

options:

syslog-address: "tcp://127.0.0.1:1514"

syslog-tag: "mysql"

ui:

build:

context: ../

dockerfile: Dockerfile.ui

env_file:

- ./config/ui/env

volumes:

- ./config/ui/app.conf:/etc/ui/app.conf

- ./config/ui/private_key.pem:/etc/ui/private_key.pem

depends_on:

- log

logging:

driver: "syslog"

options:

syslog-address: "tcp://127.0.0.1:1514"

syslog-tag: "ui"

proxy:

image: library/nginx:1.9

volumes:

- ./config/nginx:/etc/nginx

ports:

- 80:80

- 443:443

depends_on:

- mysql

- registry

- ui

- log

logging:

driver: "syslog"

options:

syslog-address: "tcp://127.0.0.1:1514"

syslog-tag: "proxy"

因为当前主机访问外网时需要设置http代理,因此,在生成ui容器时也需要设置代理,因此需要修改/opt/harbor/git/harbor/Dockerfile.ui文件,在需要访问外网的apt-get和go get命令之前,设置代理地址:

FROM golang:1.6.2

MAINTAINER [email protected]

RUN export https_proxy=http://192.168.1.22:1888 \

&& export http_proxy=http://192.168.1.22:8000 \

&& apt-get update \

&& apt-get install -y libldap2-dev \

&& rm -r /var/lib/apt/lists/*

COPY . /go/src/github.com/vmware/harbor

#golang.org is blocked in China

COPY ./vendor/golang.org /go/src/golang.org

WORKDIR /go/src/github.com/vmware/harbor/ui

RUN export https_proxy=http://192.168.1.22:1888 \

&& export http_proxy=http://192.168.1.22:8000 \

&& go get -d github.com/docker/distribution \

&& go get -d github.com/docker/libtrust \

&& go get -d github.com/go-sql-driver/mysql \

&& go build -v -a -o /go/bin/harbor_ui

ENV MYSQL_USR root \

MYSQL_PWD root \

REGISTRY_URL localhost:5000

COPY views /go/bin/views

COPY static /go/bin/static

COPY favicon.ico /go/bin/favicon.ico

RUN chmod u+x /go/bin/harbor_ui \

&& sed -i ‘s/TLS_CACERT/#TLS_CAERT/g‘ /etc/ldap/ldap.conf \

&& sed -i ‘$a\TLS_REQCERT allow‘ /etc/ldap/ldap.conf

WORKDIR /go/bin/

ENTRYPOINT ["/go/bin/harbor_ui"]

EXPOSE 80

5:启动  停止harbor

cd /opt/harbor/git/harbor/Deploy

docker-compose up -d

注意不要执行./prepare

docker-compose stop

docker-compose rm -f

docker-compose up -d

6、登录

docker login -u admin -p Harbor12345 -e [email protected] 10.10.16.194

7、对接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: [email protected]

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://42.62.x.x

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 [email protected] 42.62.x.x

时间: 2024-09-30 10:20:51

使用harbor配置私仓的相关文章

如何搭建自己的Maven远程私仓

1.首先,配置好Maven,jdk等必备环境 2.配置好环境后,下载最新版本的nexus 下载地址:http://www.sonatype.org/nexus/go 3.打开目录nexus-***\bin\jsw 这个文件夹下面有适配各种平台的nexus服务配置工具. 大家可以根据自己的需要选择对应的版本,我用的是windows-x86-64版本的. 打开一个windows的版本你会看到如下几个文件: 如果要将nexus安装成windows服务,就点击install-nexus.bat这个文件,

maven私仓搭建——nexus3

maven私仓搭建--nexus3本文主要介绍maven私仓在windows下的搭建.本文主要参考:http://www.cnblogs.com/bingyeh/p/5913486.html好,下面上货.1.下载nexus3==>https://www.sonatype.com/download-oss-sonatype.下载windows版本. 2.解压到本地的任意文件夹下. 然后进入nexus-3.3.2-02\bin文件夹下.在当前文件夹下开启命令行,执行如下命令:nexus intall

harbor配置helm chart仓库

harbor配置helm chart仓库1.harbor 安装的时候 默认没有helm charts的仓库,如果已经安装过重新执行安装即可,不需要preparedocker-compose stop./install.sh --with-chartmuseum安装完成之后登录页面上就会有了 helm charts 了,页面上也可以直接上传charts 2.helm 需要安装插件并添加源,需要harbor登陆用户密码helm plugin install https://github.com/ch

使用Harbor配置Kubernetes私有镜像仓库

Harbor使用了基于角色的访问控制策略,当从Harbor中拉去镜像的时候,首先要进行身份认证,认证通过后才可以拉取镜像.在命令行模式下,需要先执行docker login,登陆成功后,才可以docker pull. 通常情况下,在私有云环境中使用kubernetes时,我们要从docker registry拉取镜像的时候,都会给docker daemo配置–insecure-registry属性来告诉docker daemo我们所使用的docker registry是可信的,这样才能从私有的d

Harbor配置ldap

1.修改配置Harborp配置文件,共修改三处 1.1 auth_mode = ldap_auth 1.2 ldap_url = ldap://10.10.20.202 1.3 ldap_basedn = uid=%s,dc=example,dc=com 2.执行./prepare 3.重启Harbor docker-compose stop docker-compose rm  docker-compose up -d [通过docker搭建ldap] 1.创建ldap,新建build_lda

Nexus+Maven私仓

Nexus搭建maven私有库自动打包 maven 项目管理私服工具: Maven项目对象模型(POM): apache-maven-3.3.9-bin.tar.gz nexus-2.14.2-01-bundle.tar.gz 1.java 环境变量 /etc/profile export JAVA_HOME=/usr/local/java export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$java_home/lib/dt.jar:$JAV

使用harbor配置docker registry

前面连说了几篇与kubernetes相关的内容,这篇我们来说说docker registry.docker的registry与kubernetes本身并没有太直接的关系.但是任何使用到docker的地方,总少不了这玩艺儿.所以这篇博文我们专门来说一说如何使用开源的harbor来配置管理我们的私有registry. harbor官方是这么描述harbor的:Harbor是可靠的企业级Registry服务器.企业用户可使用Harbor搭建私有容器Registry服务,提高生产效率和安全度,既可应用于

搭建maven私仓

公司使用国外maven源很慢,打算使用本地仓库解决依赖问题,这里搭建很简单,直接把全部命令贴上来了,一步步执行即可 maven仓库使用nexus来进行搭建,依赖jdk对应版本,步骤如下 yum -y install java-1.7.0-openjdk* tar xzvf apache-maven-3.3.9-bin.tar.gz -C /mnt/sdb/ echo 'export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131.x86_6

构建docker高可用私有仓库基于Harbor开源系统

操作系统及相关软件版本说明: 测试服务器IP地址: IP 1 = 192.168.85.158,简称A仓库 IP 2 = 192.168.85.157,简称B仓库 一.Harbor项目介绍 1.Harbor来源 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服务. 它以Docker公司开源的registry 为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),