1、安装docker及docker-compose

注:高版本(14以上)docker执行login命令,默认使用https,且harbor必须使用域名,只是用ip访问是不行的。

Centos下:(docker安装部分参考自:http://www.runoob.com/docker/centos-docker-install.html

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
安装最新版的 yum install docker-ce      
安装指定版本 yum list docker-ce --showduplicates | sort -r
systemctl start docker 启动docker
sudo yum -y install epel-release

yum install python-pip

pip install docker-compose

ubuntu下:(参考自:http://www.runoob.com/docker/ubuntu-docker-install.html

 

1、获取最新版本的 Docker 安装包

wget -qO- https://get.docker.com/ | sh

2、启动docker 后台服务

sudo service docker start

3、测试运行hello-world

docker run hello-world

4.镜像加速

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4e70ba5d.m.daocloud.io

5.重启docker

sudo service docker restart

注意,docker默认挂载根目录,建议修改为挂载/data,防止以后硬盘空间不足造成服务不可用的情况。

2、安装Harbor、配置、启动

1、按需下载Harbor压缩包  地址:http://harbor.orientsoft.cn/

放到服务器上执行:

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

目录结构如下:

drone harbor用户密码 harbor默认用户名密码_docker

2、进入到harbor目录下,修改harbor.cfg文件:

vim harbor.cfg

drone harbor用户密码 harbor默认用户名密码_重启_02

修改(下文都是以domain.cn为域名为例):

hostname:你的域名,domain.cn

ssl_cert:证书完整路径,/data/cert/domain.cn.crt

ssl_cert_key:证书完整路径,/data/cert/domain.cn.key

 

3、生成证书相关:

cd /data/cert

openssl req -nodes -subj "/C=CN/ST=Beijing/L=Beijing/CN=domain.cn" -newkey rsa:2048 -keyout domain.cn.key -out domain.cn.csr

openssl x509 -req -days 3650 -in domain.cn.csr -signkey domain.cn.key -out domain.cn.crt

openssl x509 -req -in domain.cn.csr -CA domain.cn.crt -CAkey domain.cn.key -CAcreateserial -out domain.cn.crt -days 3650

4、进入到harbor目录:

./prepare
./install.sh

install执行完成后控制台会输出可访问路径,就是harbor.cfg配置的hostname。

由于harbor是用docker-compose管理,因此如果要 启动、重启、关闭,只需进入到harbor目录执行:

docker-compose up 启动
docker-compose restart  重启
docker-compose stop 关闭

 

3、Windows访问

在Windows机器上访问域名不能成功,因为域名是自定义的,不是公网域名,因此需要在C:\Windows\System32\drivers\etc\hosts中配置:

192.168.x.x  domain.cn

配置完成后即可访问。

默认用户名:admin

默认密码:Harbor12345

可以在harbor.cfg中修改。

 

4、Linux 中 docker  login、push、pull

执行:

docker login domain.cn

输入用户名、密码,后报错,“无法找到主机”,报错原因和Windows访问一样,域名不是公网域名,需要配置hosts

vim /etc/hosts

添加和Windows一样的配置。

再执行docker login,发现报错,“证书不受信任”。

CentOs下:

yum install ca-certificates

update-ca-trust enable

cp domain.cn.crt /etc/pki/ca-trust/source/anchors/

update-ca-trust extract

Ubuntu下:

cp domain.cn.crt /usr/share/ca-certificates

update-ca-certificates

再执行:

docker login domain.cn

docker tag tomcat:latest domain.cn/library/tomcat:v1

docker push domain.cn/library/tomcat:v1

即可成功。

如果还报证书不受信,重启机器即可。

如果机器不允许重启:

sudo dpkg-reconfigure ca-certificates

drone harbor用户密码 harbor默认用户名密码_drone harbor用户密码_03

选择yes,回车

drone harbor用户密码 harbor默认用户名密码_重启_04

找到上传到/usr/share/ca-certificates/下的证书,光标指向该证书,前面的[ ]中应该没有*号,敲空格键,会变成[*],最后敲Tab键,光标会落到<Ok>上,回车

控制台输出:

drone harbor用户密码 harbor默认用户名密码_docker_05

最后更新证书并重启docker服务:

update-ca-certificates

systemctl restart docker

注意: 如果是k8s部署过程中的node加入master,需要docker login一下,否则k8s脚本不能正常拉取镜像。

5、dockerRegistry下的镜像的删除

 

本地镜像如何删除,正常是不提供删除功能的,所以使用第三方的插件来进行删除
1、下载第三方插件

curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null

chmod a+x /usr/local/bin/delete_docker_registry_image

2、 全局变量(地址是docker registry所挂载的目录)

export REGISTRY_DATA_DIR=/home/docker/registry/docker/registry/v2

3、 执行删除指令

delete_docker_registry_image --image image:version

6、命令行查看harbor仓库中有哪些镜像

harbor在1.5.0版本之后,页面提供的删除功能经测试已经可用,但是还是担心是否真的删除了,会不会只是页面不予显示。

1、获取返回的token:

curl -k -i -u admin:admin https://registry.local/service/token\?account\=admin\&service\=harbor-registry\&scope\=registry:catalog:\*

2、使用token查询仓库内容,把返回的token替换tokenHere即可:

curl -k -H "authorization: bearer tokenHere" https://registry.local/v2/_catalog

7、Harbor镜像挂载目录

由于harbor是由docker-compose管理,因此,进入到harbor目录下,查看docker-compose.yml

vim docker-compose.yml

drone harbor用户密码 harbor默认用户名密码_重启_06

每个服务节点都对应一组配置,找到registry节点的volume,可以看到物理机上的 /data/registry目录是镜像挂载路径。

8、修改挂载目录

vim harbor.cfg

找到secretkey_path(默认值是 /data),修改为目标地址

vim docker-compose.yml

找到所有/data的目录,都统一修改为目标地址(和上一步保持一致)

./prepare

docker-compose up -d