【转】配置harbor镜像仓库(HTTP与HTTPS)

依赖环境:

Python 2.7或以上

Docker 1.10或以上

Docker Compose 1.6.0或以上

1. 安装pip

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz

tar -vxf setuptools-1.4.2.tar.gz

cd setuptools-1.4.2

python2.7 setup.py install

easy_install-2.7 pip

2. 安装docker-compose

pip install docker-compose

docker-compose --version

3. 安装harbor

3.1下载harbor安装包

链接地址: https://github.com/vmware/harbor/releases

网速快的话可以下载在线或者离线包来安装

我下载太慢,上传到网盘上一个harbor的离线安装包:https://pan.baidu.com/s/1bpUaGbl

3.2解压

tar xvf harbor-offline-installer-v1.1.1.tgz

3.3修改配置文件harbor.cfg

cd harbor

vi harbor.cfg

如果只想能够运行起来的话,只需要修改hostname即可,改成你机器的ip;

看一下harbour_admin_password的默认值是多少,这个是你一会儿登录网页时的用户名admin对应的密码;

至于ldap和email可以不用配置,若是报错,直接把相关参数注释掉即可;

3.4修改docker-compose.yml文件【配置HTTP,若需要配置HTTPS,则不需要配置这步】

添加ports端口,为了使用http快速访问

vi docker-compose.yml(注意空格)

registry:

networks:

- harbor

ports:

- 5000:5000

4. 执行./prepare

初始化common文件夹中的配置文件,若是修改了common中的配置文件,直接重启即可,不能执行该命令

5. 执行./install.sh

6. 查看容器

docke-compose ps

其它命令(修改配置文件后最好把容器删除再创建):

docker-compose up -d               ###后台启动,如果容器不存在根据镜像自动创建

docker-compose down   -v         ###停止容器并删除容器

docker-compose start                 ###启动容器,容器不存在就无法启动,不会自动创建镜像

docker-compose stop                 ###停止容器

docker-compose logs        ###查看日志(harbor日志存放地址 /var/logs/harbor)

7. 访问页面

http://ip

用户名密码就是harbor.cfg文件中用户admin和其对应的密码

页面操作挺简单,就不详细介绍了,有个迁移的功能挺不错的

8. 配置docker启动文件来使用harbor

因为我前面取巧使用的映射端口5000来使用http,所以我们需要在docker的启动文件上添加非安全模式来连接仓库;

Centos7系统:vi /etc/sysconfig/docker

在OPTIONS的参数中添加–insecure-registry ip:5000

如:OPTIONS=’–selinux-enabled–insecure-registry 192.168.x.x:5000’

或者vi /etc/docker/daemon.json

以json串的形式添加该键值对

重启docker

systemctl daemon-reload

Systemctl restart docker

9. 使用harbor仓库;

说明:push时需要先登录,pull就不需要了

docker login -u admin -p admin 192.168.101.92:5000

给镜像打标签:

docker tag centos:latest 192.168.x.x:5000/library/centos:latest

上传镜像:

docker push192.168.x.x:5000/library/centos:latest

下载镜像:

docker pull192.168.x.x:5000/library/centos:latest

11.配置mirror

网上提这个的挺少,看到一篇博客http://blog.csdn.net/project_harbor/article/details/51261934,但我并没有配出来,想使用的可以试试

参考:https://www.jianshu.com/p/2ebadd9a323d

http://blog.csdn.net/Tech_Salon/article/details/70214267

后补充:

最近因为项目上线的问题,不可能把所有机器的docker访问都改为非安全性的,所以只好配置了一下HTTPS,记录一下;

配置HTTPS访问

声明:我机器ip为192.168.101.85

1.1.建立CA证书发行站点(注意commonName为192.168.101.85)

openssl req  -newkey rsa:4096 -nodes -sha256 -keyoutca.key -x509 -days 365 -out ca.crt

一直回车,直至出来commonName,输入你的主机ip

1.2.创建CA证书生成请求(注意commonName为192.168.101.85)

openssl req  -newkey rsa:4096 -nodes -sha256 -keyout192.168.101.85.key -out 192.168.101.85.csr

一直回车,直至出来commonName,输入你的主机ip

1.3.创建CA站点文件目录

demoCA是OpenSSL的证书存储依赖目录,建立在与上面的ca.crt的同级目录下。

mkdir demoCA

cd demoCA

touch index.txt

echo ‘01’ > serial

cd …

1.4.生成CA客户端证书

echosubjectAltName = IP:192.168.101.85 > extfile.cnf

opensslca -in 192.168.101.85.csr -out 192.168.101.85.crt -cert ca.crt -keyfile ca.key\

-extfileextfile.cnf -outdir .

若报错:

Check that the request matches thesignature

Signature ok

The mandatory stateOrProvinceName fieldwas missing

该错误的解决办法:

把/etc/pki/tls/openssl.cnf中大约86 87的行

请使用vi把如下内容

stateOrProvinceName= match

organizationName= match

改为:

stateOrProvinceName= optional

organizationName= optional

3.2.在客户端部署证书

将ca.crt 复制到 docker 客户端的 /etc/docker/certs.d/yourdomain.com(registry服务器的IP)。

#获取ca.crt文件,如果目录不存在,则需要预先手动创建之。

sudo scp [email protected]:~/docker/ca.crt/etc/docker/certs.d/192.168.101.85/

注意:

每一个客户端都需要复制上面的ca.crt到Docker相应目录,然后重启Docker。

浏览器需要添加“访问例外”,根据提示进行操作。

2.3.harbor.cfg修改

主要修改以下几个地方:

#配置Harbor服务的主机IP地址或主机名,注意要与CA证书的完全一致。

#hostname = reg.mydomain.com

hostname = 192.168.101.85

配置Harbor使用https

#ui_url_protocol = http

ui_url_protocol = https

#改为上面生成的CA客户端证书,注意路径一致,可使用命令pwd获得。

#ssl_cert = /path/to/server.crt

ssl_cert = /home/supermap/docker/192.168.101.85.crt

#ssl_cert_key = /path/to/server.key

ssl_cert_key =/home/supermap/docker/192.168.101.85.key

然后按照上面的方法启动运行就OK了;

java使用http或其他方式连接时:

参数介绍:

镜像仓库地址:

证书信息:/etc/docker/certs.d/192.168.101.85(具体查看上面的生成客户端证书)

token:(harbor/common/config/registry/config.yml中的ui模块中有对应信息ISSUER与Service)

ISSUER:harbor-token-issuer

Service:harbor-registry

Private Key(harbor/common/config/ui/private_key.pem[我使用的时候这个不生效,重启之后就可以了]):

你可能感兴趣的:(Docker)