Harbor是VMWare开发的一个私有Docker-hub服务软件,依赖于docker registry服务,如今已开源(https://github.com/vmware/harbor)。查看完整的安装和配置说明(https://github.com/vmware/harbor/blob/master/docs/installation_guide.md)。linux
Harbor服务已经封装为多个Docker的编排化服务,搭建起来很简单(因为须要下载好几个基础镜像,网络很差时花的时间长一点,不要着急):nginx
# Harbor like a private docker-hub. # Harbor is a registry manager for docker. echo “Install harbor of docker on Ubuntu.” echo “by openthings@163.com” git clone https://github.com/vmware/harbor.git cd harbor cd Deploy #进去把harbor.cfg的host名称改成本身的服务器IP地址或者域名(其它机器可访问)。 #必定要在运行./prepare以前改,不然不起做用。 ./prepare sudo docker-compose up -d echo “Please visit https://github.com/vmware/harbor”
若是机器上已经运行其余的Web服务,为了不端口冲突,能够进去修改nginx的80端口。git
vim /Deploy/docker-compose.yaml
进浏览器IP:端口号(缺省80),Web图形界面(以下),按照提示操做便可。github
首先Web界面登陆,缺省的管理员帐号/密码是:admin/Harbor12345,服务器端建立新帐号和镜像库。docker
而后到客户端,Shell 控制台,docker login localhost进去。显示登陆成功后,按以下操做。vim
客户端命令行下,Docker镜像的上传/下载使用以下(以jenkins为例):浏览器
# 一、给镜像打标签将它指向你的registry docker tag 1e6ed717014b localhost/myrepo/jenkins # 其中1e6ed717014b 是镜像id # 二、Push镜像到registry docker push localhost/myrepo/jenkins # 三、从registry Pull镜像 docker pull localhost/myrepo/jenkins
Harbor缺省是支持Https的,若是使用http,须要在客户端修改配置,容许连接http的registry。参考这里解决:http://www.javashuo.com/article/p-yocuywrq-hg.html 。服务器
若是运行时出现443:refused错误,首先修改docker-compose.yaml的enginx参数,加入443端口。而后,进去修改/etc/default/docker的参数,加入OPTIONS='--selinux-enabled --ipv6=false --insecure-registry=172.17.1.31:5001'相似的参数,以下:网络
# Docker Upstart and SysVinit configuration file # # THIS FILE DOES NOT APPLY TO SYSTEMD # # Please see the documentation for "systemd drop-ins": # https://docs.docker.com/engine/articles/systemd/ # # Customize location of Docker binary (especially for development testing). #DOCKER="/usr/local/bin/docker" # Use DOCKER_OPTS to modify the daemon startup options. #DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4" OPTIONS='--selinux-enabled --ipv6=false --insecure-registry=172.17.1.31:5001' # If you need Docker to use an HTTP proxy, it can also be specified here. #export http_proxy="http://127.0.0.1:3128/" # This is also a handy place to tweak where Docker's temporary files go. #export TMPDIR="/mnt/bigdrive/docker-tmp"