Harbor镜像仓库搭建
准备工作
-
安装docker-compose单机集群脚本:
wget -c https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64 mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose -v
-
下载harbor
https://github.com/goharbor/harbor/releases/download/v1.10.0-rc1/harbor-offline-installer-v1.10.0-rc1.tgz tar -zxvf harbor-offline-installer-v1.10.0-rc1.tgz
编辑harbor配置文件
vim harbor.cfg #编辑配置文件
#修改以下内容
hostname = 192.168.163.251:8080 #修改harbor的启动ip,这里需要依据系统ip设置
harbor_admin_password = yourpasswd #修改harbor的admin用户的密码
vim docker-compose.yml #编辑docker-compose文件
ports:
- 8080:80
- 33443:443
- 34443:4443
启动harbor
./prepare
./install.sh
查看容器是否启动
docker-compose ps
注:常用命令
docker-compose up -d #启动 -d后台启动
docker-compose down #停止并删除容器
Docker使用仓库
添加 非安全地址到daemon.json中
# vi /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries":["192.168.163.251:8080"]
}
systemctl restart docker
尝试登陆
docker login --username=admin 192.168.163.251:8080
修改镜像tag
docker tag SOURCE_IMAGE[:TAG] 192.168.163.251:8080/repo/IMAGE[:TAG]
推送镜像
docker push 192.168.163.251:8080/repo/IMAGE[:TAG]
kubernetes使用harbor
创建秘钥
kubectl create secret docker-registry regharbor --docker-server=192.168.163.251:8080 --docker-username=admin --docker-password=Harbor12345 --docker-email=my@163.com
regharbor : 指定密钥的键名称, 可自行定义
--docker-server: 指定docker仓库地址
--docker-username: 指定docker仓库账号
--docker-password: 指定docker仓库密码
--docker-email: 指定邮件地址
-n : 命名空间,在那个命名空间创建,就只能在那个命名空间使用这个secret
也可以这样创建secrets
docker login后会生成以下文件
~/.docker/config.json
获取base64密文
base64 -w 0 ~/.docker/config.json
创建secres.yml
### vim secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: regsecret
namespace: default
data:
.dockerconfigjson:上面的密文
type: kubernetes.io/dockerconfigjson
查看密文
kubectl create -f secret.yaml \
kubectl describe Secret regsecret
编写yml文件测试镜像是否可拉取
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: dentestreplce
spec:
replicas: 1
template:
metadata:
labels:
name: dentestreplace
spec:
containers:
- name: dentestreplace
imagePullPolicy: Always
image: ureg.k8s.test.com/rela_dev/logreport:latest
imagePullSecrets:
- name: regharbor