docker之三---私有仓库docker-registry
私有仓库docker-registry
harbor介绍
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,
-
Harbor gitlab项目地址:https://github.com/goharbor/harbor
-
Harbor是一个开源的可信云本机注册表项目,用于存储,签名和扫描内容。
Harbor功能官方介绍:
基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
- 镜像复制:镜像可以在多个Registry 实例中复制(同步),尤其适合于负载均衡,高可用,混合云和多云的场景。
- 图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker 镜像仓库,管理项目和命名空间。
- AD/LDAP支: Harb or 可以集成企业内部已有的 AD/LDAP ,用于鉴权认证管理。审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。国际化:已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
- RESTful API :提供给管理员对于 Harbor 更多的操控 , 使得与其它管理软件集成变得更容易。
注意:有关注册表存储后端的详细信息,请参阅“ 注册表配置参考”。
实现docker私有仓库的搭建之harbor
架构图
实现原理:将镜像仓库C和镜像仓库D作为主从复制,实现镜像的高可用,如果不在公司内部制作镜像私有仓库,多个服务器直接去阿里云等公网去下载仓库,需要经过出口时,需要占用出口防火墙的带宽,都去出口拉取镜像,就会将出口带宽全部占用完,影响业务的正常运行,通常此带宽能上万兆就上万兆,上不了就做网卡绑定。
上传镜像
1.打标签
2.docker push上传
启动私有仓库
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
镜像打标签
docker tag nginx:latest 10.0.0.11:5000/nginx:latest
docker tag centos7_nginx:v2 10.0.0.11:5000/centos7_nginx:v2
注意:
默认使用https协议上传,若使用http协议会报错,修改配置文件,指定信任地址,重启docker服务。
cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://registry.docker-cn.com"], "insecure-registries": ["10.0.0.11:5000"] } EOF systemctl restart docker
上传镜像
docker push 10.0.0.11:5000/nginx:latest
配置镜像加速
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.11:5000"]
}
systemctl restart docker
docker push 10.0.0.11:5000/nginx:latest
docker push 10.0.0.11:5000/centos7_nginx:v2
私有仓库操作
查看私有仓库镜像列表:http://10.0.0.11:5000/v2/_catalog
查看私有仓库镜像版本:http://10.0.0.11:5000/v2/alpine/tags/list
下载镜像
docker pull 10.0.0.11:5000/nginx:latest
docker pull 10.0.0.11:5000/centos7_nginx:v2
跨主机:
docker swarm
容器编排
kubernetes
容器编排
容器的运行环境:runc
docker上传到私有仓库
创建账户并进行邮件验证
docker tag centos7_nginx:v2 lph2543843664/centos7_nginx:v2
docker login
user:
passwd:
docker push lph2543843664/centos7_nginx:v2
docker pull lph2543843664/centos7_nginx:v2
删除私有仓库镜像
- 进入docker registry容器中
docker exec -it registry /bin/sh
- 删除私有仓库镜像目录
rm -fr /var/lib/registry/docker/registry/v2/repositories/alpine
- 清除无用私有仓库镜像
registry garbage-collect /etc/docker/registry/config.yml
使用安全认证
- 生成密码
yum install httpd-tools -y
mkdir /opt/registry-auth/ -p
htpasswd -Bbn oldguo 123 > /opt/registry-auth/htpasswd
- 重新启动带有秘钥功能的registry容器
docker rm -f `docker ps -aq`
docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry --name register-auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
- 上传下载镜像,需要先login
[root@docker02 ~]# docker login 10.0.0.100:5000
Username: oldguo
Password:
企业级私有仓库harbor
docker-compose
下载安装器
wget http://192.168.15.253/harbor-offline-installer-v2.1.0.tgz
解压安装器
tar xf harbor-offline-installer-v2.1.0.tgz
安装依赖
-
docker-ce
17.06.0 + -
docker-compose
1.18.0+yum install docker-ce docker-compose -y
修改配置文件
cp /opt/harbor/harbor.yml.tmpl /opt/harbor/harbor.yml
vim /opt/harbor/harbor.yml
hostname: 10.0.0.12
... ...
#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
... ...
harbor_admin_password: 123456
执行安装脚本
- 执行前80端口不能被占用!!!
/root/harbor/install.sh #生成每个不同的配置文件,重新生成会挂载上
注意:管理使用docker-compose
cd /opt/harbor
docker-compose stop
docker-compose start
配置镜像加速并支持访问
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.0.0.12"]
}
EOF
systemctl restart docker
登录harbor,用户名:admin,密码:123456
docker login 10.0.0.12
密码保存在
/root/.docker/config.json
文件中
打标签
docker tag alpine:3.9 10.0.0.12/library/alpine:3.9
上传镜像
docker push 10.0.0.12/library/alpine:3.9
harbor
配置https
证书
下载安装器
[root@docker02 harbor]#
mkdir cert
cd cert/
wget http://192.168.15.253/blog.oldqiang.com.zip
yum install docker-compose -y
解压安装器
unzip blog.oldqiang.com.zip
修改配置文件
cat /root/harbor/harbor.yml
hostname: blog.oldqiang.com
certificate: /opt/cert/Nginx/1_blog.oldqiang.com_bundle.crt
private_key: /opt/cert/Nginx/2_blog.oldqiang.com.key
如果使用自签名证书,注意:
mkdir -p /etc/docker/certs.d
加速启动脚本
sed -ni 's/docker load/#&/p' /root/harbor/install.sh #注释默认会加速生成
执行安装脚本
/root/harbor/install.sh #生成每个不同的配置文件,重新生成会挂载上
取消http信任
[root@docker01 ~]#
cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
systemctl restart docker
域名劫持设置
echo "10.0.0.12 blog.oldqiang.com" >> /etc/hosts
docker01登录harbor,用户名:admin,密码:123456
docker login blog.oldqiang.com
上传拉取镜像
docker tag nginx:latest blog.oldqiang.com/library/nginx:latest
docker pull blog.oldqiang.com/library/alpine:3.9
zabbix业务
#首先创建一个zabbix管理员
[root@docker01 ~]#
docker tag zabbix/zabbix-server-mysql:latest blog.oldqiang.com/zabbix/zabbix-server-mysql:latest
docker login blog.oldqiang.com
Username: admin
Password:
docker push blog.oldqiang.com/zabbix/zabbix-server-mysql:latest
rm -fr /root/.docker/config.json
docker login blog.oldqiang.com
docker pull blog.oldqiang.com/zabbix/zabbix-server-mysql:latest
注:报错搜索docker自动签发证书