docker之三---私有仓库docker-registry

私有仓库docker-registry

harbor介绍

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,

Harbor功能官方介绍:

基于角色的访问控制:用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

  • 镜像复制:镜像可以在多个Registry 实例中复制(同步),尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面:用户可以通过浏览器来浏览,检索当前Docker 镜像仓库,管理项目和命名空间。
  • AD/LDAP支: Harb or 可以集成企业内部已有的 AD/LDAP ,用于鉴权认证管理。审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。国际化:已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API :提供给管理员对于 Harbor 更多的操控 , 使得与其它管理软件集成变得更容易。

注意:有关注册表存储后端的详细信息,请参阅“ 注册表配置参考”

实现docker私有仓库的搭建之harbor

架构图

img

实现原理:将镜像仓库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

删除私有仓库镜像

  1. 进入docker registry容器中
docker exec -it registry /bin/sh
  1. 删除私有仓库镜像目录
rm -fr /var/lib/registry/docker/registry/v2/repositories/alpine
  1. 清除无用私有仓库镜像
registry garbage-collect /etc/docker/registry/config.yml

使用安全认证

  1. 生成密码
yum install httpd-tools -y
mkdir /opt/registry-auth/ -p
htpasswd  -Bbn oldguo 123 > /opt/registry-auth/htpasswd
  1. 重新启动带有秘钥功能的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 
  1. 上传下载镜像,需要先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自动签发证书

image-20201203153231658

image-20201203153302244

posted @ 2021-03-06 14:58  上善若水~小辉  阅读(581)  评论(0编辑  收藏  举报