一篇文章帮你搞定Docker本地镜像仓库构建-harbor!

  发布时间:2025-11-04 04:11:06   作者:玩站小弟   我要评论
本文目录Docker 私有镜像仓库介绍 Docker 私有仓库签发证书 Docker 私有仓库环境准备 Docker 私有仓库程序安装 Dock。

  本文目录

  Docker 私有镜像仓库介绍   Docker 私有仓库签发证书   Docker 私有仓库环境准备   Docker 私有仓库程序安装   Docker 私有仓库界面操作

  1.1 Docker私有镜像仓库介绍

  Docker容器应用的篇文开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的章帮镜像仓库,但是搞定构建从安全和效率等方面考虑,部署我们私有环境内的本地Registry也是非常必要的。Harbor是镜像由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、仓库LDAP、篇文日志审核、章帮管理界面、搞定构建自我注册、本地镜像复制和中文支持等功能。镜像

  官网地址:https://github.com/goharbor/harbor

  私有镜像仓库构建环境:

  1.2 Docker私有仓库签发证书

  私有镜像仓库在进行访问时,仓库需要进行HTTPS访问,篇文可以提供更加安全的章帮外网访问,所以需要获取证书文件,搞定构建课程讲解过程中使用自签发证书方式,进行HTTPS环境部署,实现最终测试环境访问。

  创建证书保存目录,并进入到此目录中:

[root@harbor-01 ~]# mkdir -p /data/ssl [root@harbor-01 ~]# cd /data/ssl/

  在指定证书目录中,生成证书文件信息:(CA证书文件)

# 在指定证书目录中,生成私钥文件信息: [root@harbor-01 ssl]# openssl genrsa -out ca.key 3072 Generating RSA private key, 3072 bit long modulus ........................................................................................................++ e is 65537 (0x10001) # 在指定证书目录中,生成数字证书信息: [root@harbor-01 ssl]# openssl req -new -x509 -days 3650 -key ca.key -out ca.pem You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ., the field will be left blank. ----- Country Name (2 letter code) [XX]:CH State or Province Name (full name) []:BJ Locality Name (eg, city) [Default City]:BJ Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your servers hostname) []: Email Address []: 说明:以上命令中3650表示证书的IT技术网有效时间是3年,-x509表示生成的证书格式标准

  在指定证书目录中,生成证书文件信息:(域名证书文件)

# 在指定证书目录中,生成私钥文件信息: [root@harbor-01 ssl]# openssl genrsa -out harbor.key 3072 Generating RSA private key, 3072 bit long modulus ................................................................++ e is 65537 (0x10001) # 在指定证书目录中,生成证书请求文件: [root@harbor-01 ssl]# openssl req -new -key harbor.key -out harbor.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ., the field will be left blank. ----- Country Name (2 letter code) [XX]:CH State or Province Name (full name) []:BJ Locality Name (eg, city) [Default City]:BJ Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your servers hostname) []:harber Email Address []: Please enter the following extra attributes to be sent with your certificate request A challenge password []: An optional company name []: # 在指定证书目录中,生成签发证书文件: [root@harbor-01 ssl]# openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650 Signature ok subject=/C=CH/ST=BJ/L=BJ/O=Default Company Ltd/CN=harber Getting CA Private Key 说明:至此证书签发生成完毕

  1.3 Docker私有仓库环境准备

  1. 进行容器程序安装部署

# 关闭防火墙服务程序 # 关闭防火墙-firewalld [root@harbor-01 ~]# systemctl stop firewalld && systemctl disable firewalld # 关闭防火墙-iptables [root@harbor-01 ~]# yum install -y iptables-services #安装iptables [root@harbor-01 ~]# service iptables stop && systemctl disable iptables # 清空防火墙规则 [root@harbor-01 ~]# iptables -F # 关闭selinux安全程序 [root@harbor-01 ~]# setenforce 0 setenforce: SELinux is disabled [root@harbor-01 ~]# sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config 说明:修改selinux配置文件之后,重启机器,selinux才能永久生效 # 配置时间同步 [root@harbor-01 ~]# yum install -y ntp ntpdate [root@harbor-01 ~]# ntpdate cn.pool.ntp.org # 编写计划任务 [root@harbor-01 ~]# crontab -l * */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org # 重启crond服务使配置生效: [root@harbor-01 ~]# systemctl restart crond # 配置hosts文件 [root@harbor-01 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.101 docker-01 10.0.0.201 harbor # 安装基础软件包 [root@harbor-01 ~]# yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack yum-utils # 安装docker-ce # 配置docker-ce国内yum源(阿里云) [root@harbor-01 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装docker依赖包 [root@harbor-01 ~]# yum install -y device-mapper-persistent-data lvm2 # 安装docker-ce [root@harbor-01 ~]# yum install docker-ce -y # 启动docker服务 [root@harbor-01 ~]# systemctl start docker && systemctl enable docker [root@harbor-01 ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2021-07-01 21:29:18 CST; 30s ago Docs: https://docs.docker.com 说明:通过查看docker服务状态信息,看到running,表示docker正常运行 # 查看Docker 版本信息 [root@harbor-01 ~]# docker version Client: Docker Engine - Community Version: 20.10.8 API version: 1.41 Go version: go1.16.6 Git commit: 3967b7d Built: Fri Jul 30 19:55:49 2021 OS/Arch: linux/amd64 Context: default Experimental: true

  2.开启包转发功能和修改内核参数

  内核参数修改:br_netfilter模块用于将桥接流量转发至iptables链,br_netfilter内核参数需要开启转发。

[root@harbor-01 ~]# modprobe br_netfilter [root@harbor-01 ~]# cat > /etc/sysctl.d/docker.conf #EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF You have new mail in /var/spool/mail/root [root@harbor-01 ~]# sysctl -p /etc/sysctl.d/docker.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 说明:以上内核配置信息,是WARNING: bridge-nf-call-iptables is disabled 错误解决办法

  将Linux系统作为路由或者VPN服务就必须要开启IP转发功能。当linux主机有多个网卡时一个网卡收到的信息是否能够传递给其他的网卡,如果设置成1的话可以进行数据包转发,可以实现VxLAN等功能。不开启会导致docker部署应用无法访问。

  在docker环境主机上需要配置镜像加速器:

# 1. 安装/升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce # 2. 配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 [root@harbor-01 ~]# mkdir -p /etc/docker [root@harbor-01 ~]# tee /etc/docker/daemon.json { "registry-mirrors": ["https://y1edhblz.mirror.aliyuncs.com"] 根据自己阿里云加速器地址配置 } EOF # 3. 查看镜像加速器配置文件信息 [root@docker-01 ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://y1edhblz.mirror.aliyuncs.com"] 单一加速器配置 或者 "registry-mirrors": ["https://y1edhblz.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"] <- 多个加速器配置 }

  内核信息配置和镜像加速器配置完毕后,需要重试docker服务程序。

[root@harbor-01 ~]# systemctl daemon-reload [root@harbor-01 ~]# systemctl restart docker

  1.4 Docker私有仓库程序安装

  创建私有仓库程序安装目录:

[root@harbor-01 ~]# mkdir /data/install -p [root@harbor-01 ~]# cd /data/install/

  将harbor的离线包程序包上传到这个目录,离线包下载地址为:

  https://github.com/goharbor/harbor/releases/tag/

  将上传好的离线包,云南idc服务商进行解压:

[root@harbor-01 install]# ll total 614492 -rw-r--r-- 1 root root 629238614 Aug 25 18:52 harbor-offline-installer-v2.3.0-rc3.tgz [root@harbor-01 install]# tar zxvf harbor-offline-installer-v2.3.0-rc3.tgz harbor/harbor.v2.3.0.tar.gz harbor/prepare harbor/LICENSE harbor/install.sh harbor/common.sh harbor/harbor.yml.tmpl You have new mail in /var/spool/mail/root [root@harbor-01 install]# ls harbor harbor-offline-installer-v2.3.0-rc3.tgz [root@harbor-01 install]# ls harbor common.sh harbor.v2.3.0.tar.gz harbor.yml.tmpl install.sh LICENSE prepare

  修改harbor程序的配置文件信息:

[root@harbor-01 harbor]# pwd /data/install/harbor [root@harbor-01 harbor]# cp harbor.yml.tmpl harbor.yml [root@harbor-01 harbor]# vim harbor.yml 5 hostname: harbor-01 #修改主机名称和上面签发的证书域名保持一致 17 certificate: /data/ssl/harbor.pem 18 private_key: /data/ssl/harbor.key

  邮件和ldap不需要配置,在harbor的web界面可以配置,其他配置采用默认即可,修改之后保存退出。

  harbor默认的账号密码:admin/Harbor12345

  安装部署docker-compose程序软件包:

  docker-compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

  Docker-Compose的工程配置文件默认为docker-compose.yml,Docker-Compose运行目录下的必要有一个docker-compose.yml。

  docker-compose可以管理多个docker实例。

# 上传课件里的docker-compose-Linux-x86_64文件到harbor机器 [root@harbor-01 install]# ll docker-compose-Linux-x86_64.64 -rw-r--r-- 1 root root 12254160 Aug 25 19:11 docker-compose-Linux-x86_64.64 [root@harbor-01 install]# mv docker-compose-Linux-x86_64.64 /usr/bin/docker-compose [root@harbor-01 install]# chmod +x /usr/bin/docker-compose

  安装harbor需要的离线镜像包:

# 上传课件里的docker-harbor-2-3-0.tar.gz文件到docker机器 [root@harbor-01 install]# docker load -i docker-harbor-2-3-0.tar.gz [root@harbor-01 install]# cd /data/install/harbor [root@harbor-01 harbor]# ./install.sh [Step 5]: starting Harbor ... Creating network "harbor_harbor" with the default driver Creating harbor-log ... done Creating redis ... done Creating harbor-portal ... done Creating registry ... done Creating registryctl ... done Creating harbor-db ... done Creating harbor-core ... done Creating harbor-jobservice ... done Creating nginx ... done ✔ ----Harbor has been installed and started successfully.---- 说明:看到以上内容信息,说明harbor安装部署成功

  修改系统主机host文件的域名解析:

  在hosts文件添加如下一行,然后保存即可

  192.168.40.181 harbor

  如何停止和运行harbor程序运行状态:

# 如何停掉harbor: [root@harbor-01 harbor]# cd /data/install/harbor [root@harbor-01 harbor]# docker-compose stop # 如何启动harbor: [root@harbor-01 harbor]# cd /data/install/harbor [root@harbor-01 harbor]# docker-compose start

  1.5 Docker私有仓库界面操作

  1.harbor网站页面访问过程:

  在浏览器输入:https://harbor;接收风险并继续,出现如下界面,说明访问正常

  账号:admin 密码:Harbor12345,输入账号密码出现如下:

  所有基础镜像都会放在library里面,这是一个公开的镜像仓库。

  2.harbor网站页面配置过程:

  新建项目->起个项目名字test(把访问级别公开那个选中,让项目才可以被公开使用)

  3.harbor网站仓库容器访问

  修改docker容器主机配置信息

[root@docker-01 ~]# vim /etc/docker/daemon.json { "registry-mirrors":["https://y1edhblz.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"], "insecure-registries": ["10.0.0.201","harbor"] } 说明:添加的企商汇insecure-registries,表示内网访问harbor时走的是http,指定地址是安装harbor机器的ip

  修改docker配置之后重启服务:

[root@docker-01 ~]# systemctl daemon-reload [root@docker-01 ~]# systemctl restart docker [root@docker-01 ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2021-08-26 00:03:25 CST; 1min 14s ago Docs: https://docs.docker.com 说明:看到active信息,表示docker服务启动成功

  利用docker主机登录私有仓库:

# 配置docker主机本地hosts文件信息 [root@docker-01 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.101 docker-01 10.0.0.201 harbor # 进行登录访问harbor私有仓库 [root@docker-01 ~]# docker login 10.0.0.201 Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded 说明:输入账号和密码之后看到以上信息,说明登录成功

  4.harbor私有仓库镜像上传

# 在docker主机上拉取测试镜像 [root@docker-01 ~]# docker pull tomcat # 在docker主机上生成离线镜像包 [root@docker-01 ~]# docker save -o tomcat.tar.gz tomcat # 在docker主机上加载离线镜像包 [root@docker-01 ~]# docker load -i tomcat.tar.gz # 在docker主机上给要进行上传的镜像打标签 [root@docker-01 ~]# docker tag tomcat:latest 10.0.0.201/test/tomcat:v1 # 在docker主机上将指定打标的镜像进行上传到harbor私有仓库中 [root@docker-01 ~]# docker push 10.0.0.201/test/tomcat:v1 说明:执行上面命令就会把10.0.0.201/test/tomcat:v1上传到harbor里的test项目下

  5.harbor私有仓库查看镜像:

  6.harbor私有仓库下载镜像:

# 删除docker主机上已经存在的镜像 [root@docker-01 ~]# docker rmi -f 10.0.0.201/test/tomcat:v1 # 从harbor私有镜像仓库中拉取指定镜像 [root@docker-01 ~]# docker pull 10.0.0.201/test/tomcat:v1 v1: Pulling from test/tomcat Digest: sha256:f03ed41f43d82dc8fd1d5fd5c7f6633eb62e4a0d7d3d83243f08d5acc5424c4d Status: Downloaded newer image for 10.0.0.201/test/tomcat:v1 10.0.0.201/test/tomcat:v1 [root@docker-01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 10.0.0.201/test/tomcat v1 266d1269bb29 6 days ago 668MB 说明:以上操作说明已经可以从harbor上进行私有镜像的拉取
  • Tag:

相关文章

最新评论