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
目录结构如下:
2、进入到harbor目录下,修改harbor.cfg文件:
vim harbor.cfg
修改(下文都是以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
选择yes,回车
找到上传到/usr/share/ca-certificates/下的证书,光标指向该证书,前面的[ ]中应该没有*号,敲空格键,会变成[*],最后敲Tab键,光标会落到<Ok>上,回车
控制台输出:
最后更新证书并重启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
每个服务节点都对应一组配置,找到registry节点的volume,可以看到物理机上的 /data/registry目录是镜像挂载路径。
8、修改挂载目录
vim harbor.cfg
找到secretkey_path(默认值是 /data),修改为目标地址
vim docker-compose.yml
找到所有/data的目录,都统一修改为目标地址(和上一步保持一致)
./prepare
docker-compose up -d