1 使用registry镜像
1.1 搭建私有仓库
1.1.1 拉取镜像
docker pull registry
1.1.2 映射目录
默认情况下,Registry存放镜像的目录是/var/lib/registry
,如果容器被删除,则存放在容器中的镜像也会丢失。所以映射一个host的目录到容器的/var/lib/registry
,使用-v
参数
1.1.3 映射端口
Registry服务默认使用5000
端口
1.1.4 拉起registry容器
将host目录/opt/registry
映射给镜像目录/var/lib/registry
docker run -d --name registry \
-p 5000:5000 \
--restart always \
--name registry \
-v /opt/registry:/var/lib/registry \
registry
1.1.5 查看私有仓库列表
访问http://host主机IP地址:5000/v2/_catalog
,没有镜像时,返回{"repositories":[]}
1.2 使用私有仓库
配置/etc/docker/daemon.json
文件,insecure-registries
代表是http模式的仓库
mkdir -p /etc/docker/
cat > /etc/docker/daemon.json <
1.3 上传镜像
1.3.1 给镜像打tag
docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
示例:
为busybox:latest
镜像打tag,新tag表明属于172.16.19.53:5000
仓库,新名称为busybox
,版本为v1
docker tag busybox:latest 172.16.19.53:5000/busybox:v1
1.3.2 上传镜像
docker push [OPTIONS] NAME[:TAG]
docker push 172.16.19.53:5000/busybox:v1
1.3.3 检查仓库中的镜像
访问http://172.16.19.53:5000/v2/_catalog
curl http://172.16.19.53:5000/v2/_catalog
{"repositories":["busybox"]}
1.3.4 检查仓库中镜像的版本
访问http://172.16.19.53:5000/v2/镜像名/tags/list
1.4 下载镜像
docker pull 172.16.19.53:5000/busybox:v1
在拉取私有仓库的镜像时,需要写出全部的REGISTRY_HOST(172.16.19.53)
、REGISTRY_PORT(5000)
、TAG(v1)
信息。
1.5 删除镜像
进入registry容器
docker exec -it registry /bin/sh
删除repo
rm -rf /var/lib/registry/docker/registry/v2/repositories/镜像名
清除blob
registry garbage-collect /etc/docker/registry/config.yml
1.6 使用基础认证
生成秘钥文件
yum install -y httpd-tools
mkdir -p /opt/registry-var/auth/
htpasswd -Bbn 用户名 密码 > /opt/registry-var/auth/htpasswd
启动registry容器
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /opt/registry-var/auth:/auth \
-v /opt/registry:/var/lib/registry \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry
2 使用Harbor
2.1 安装
下载最新版本的安装包https://github.com/goharbor/harbor/releases/
wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz
解压缩压缩包
tar -zxvf harbor-offline-installer-v2.3.2.tgz
安装时的配置文件harbor.yml
修改
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
...
# 修改hostname
hostname: 172.16.19.53
# 修改系统admin密码
harbor_admin_password: 123456
# 如果是http部署,将以下https的内容注释掉
#https:
# # https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
运行安装脚本,需确保80和443端口没有被占用,且没有与nginx
、harbor-jobservice
、harbor-core
、redis
、harbor-portal
、harbor-db
、registryctl
、registry
、harbor-log
同名的容器正在运行
./install.sh
2.2 Harbor web端使用
Harbor以项目管理镜像,登陆页面http://172.16.19.53后新建项目,后续上传下载镜像在项目中
2.2.1 新建项目
项目公开时,不需要docker login就可以拉取镜像
2.2.2 推送镜像
首先配置daemon.json
,添加私有仓库
vim /etc/docker/daemon.json
{
...,
"insecure-registries" : ["172.16.19.53"]
}
给镜像打标签
语法docker tag SOURCE_IMAGE[:TAG] 172.16.19.53/项目/REPOSITORY[:TAG]
docker tag busybox:latest 172.16.19.53/test/busybox:v1
登陆私有仓库
docker login 172.16.19.53
推送镜像
docker push 172.16.19.53/test/busybox:v1
2.2.3 下载镜像
2.3 配置https
安装时的配置文件harbor.yml
修改
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
...
# 修改hostname
hostname: bigsky.tk
# 修改系统admin密码
harbor_admin_password: 123456
https:
# https port for harbor, default is 443
port: 443
# 填写服务器证书和私钥的路经
certificate: /root/server.crt
private_key: /root/server.key
如果是自签名的证书,需要将服务器的证书、私钥、CA的证书拷贝到/etc/docker/certs.d/bigsky.tk/
目录下,服务器的证书为.cert
后缀,服务器私钥为.key
后缀,CA的证书为.crt
后缀。
文件结构如下
/etc/docker/certs.d/
└── bigsky.tk
├── CA.crt
├── server.cert
└── server.key
停止harbor,重启docker
cd /root/harbor && docker-compose down
systemctl restart docker
docker-compose up -d
修改服务器hosts文件
vim /etc/hosts
...
172.16.19.53 bigsky.tk
登陆和push、pull时使用域名bigsky.tk
docker login bigsky.tk
docker tag registry bigsky.tk/test/registry
docker push bigsky.tk/test/registry
docker pull bigsky.tk/test/registry:latest