写点什么

微服务架构师 -docker 私有镜像仓库的配置和使用

用户头像
学神来啦
关注
发布于: 4 小时前

docker 私有化仓库介绍

私有仓库介绍

dockerhub 大家还记着是干什么的吗?存放镜像的,公共仓库官方网站:Docker hub 官网:https://registry.hub.docker.com有时候使用 Docker Hub 这样的公共仓库可能不方便(有时候无法访问),用户可以创建一个本地仓库供私人使用,可以使用官方提供的工具 docker-registry 来配置私有镜像仓库


1、使用官方提供的工具来配置 docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。registry [ˈredʒɪstri] 记录,登记

私有镜像仓库有哪些有优点?

私有仓库好处:1、速度快 2、维护方便 3、安全


搭建私有仓库的思路:老的思路:下载源码 tar/yum 安装 -》 安装-》修改配置文件-》启动服务使用 docker 思路:直接下载并使用 registry 镜像启动 docker 实例,这样仓库就搭建成功了。


有了 docker 以后,所有软件不再以 office.exe 或 lrzsz.rpm 形式发布,而以 docker 镜像发布。你只需要下载 docker 镜像并运行一个 docker 实例。有了 docker 以后,再也不用为安装 linux 服务而发愁!

实验环境规划

实验环境:docker 私有仓库地址:xuegod64 xuegod64 机器需要的内存至少要 2G,我分配的是 6Gdocker 服务器地址 : xuegod63 ,xuegod63 会使用 xuegod64 上 docker 私有仓库来 pull/push 镜像,实验拓扑图:


使用 registry 搭建 docker 私有仓库

Docker 服务:主机名为 xuegod63 主机 ip: 192.168.1.63(这个 ip 大家可以根据自己所在环境去配置,配置成静态 IP)配置:4vCPU/4Gi 内存


准备实验环境:新创建一台 centos7.6 64 位虚拟机主机名为 xuegod64 主机 ip: 192.168.1.64(这个 ip 大家可以根据自己所在环境去配置,配置成静态 IP)配置:4vCPU/4Gi 内存

初始化实验环境-安装 docker

#配置静态 IP 把虚拟机或者物理机配置成静态 ip 地址,这样机器重新启动后 ip 地址也不会发生改变。以 xuegod64 主机为例,修改静态 IP:修改/etc/sysconfig/network-scripts/ifcfg-ens33文件,变成如下:


TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticIPADDR=192.168.1.64NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=192.168.1.1DEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33DEVICE=ens33ONBOOT=yes#修改配置文件之后需要重启网络服务才能使配置生效,重启网络服务命令如下:service network restart
#配置主机名:xuegod64hostnamectl set-hostname xuegod64#在xuegod63和xuegod64上配置hosts文件,让两台主机hosts文件保持一致[root@xuegod63 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.63 xuegod63192.168.1.64 xuegod64[root@xuegod64 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.63 xuegod63192.168.1.64 xuegod64#关闭firewalld防火墙[root@xuegod64 ~]# systemctl stop firewalld ; systemctl disable firewalld#关闭iptables防火墙[root@xuegod64 ~]# yum install iptables-services -y #安装iptables#禁用iptables[root@xuegod64 ~]# service iptables stop && systemctl disable iptables清空防火墙规则[root@xuegod64 ~]# iptables -F #关闭selinux[root@xuegod64 ~]# setenforce 0 #临时禁用#永久禁用[root@xuegod64 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config注意:修改selinux配置文件之后,重启机器,selinux才能永久生效[root@xuegod64 ~]# getenforceDisabled#配置时间同步[root@xuegod64 ~]# ntpdate cn.pool.ntp.org#编写计划任务crontab -e* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org重启crond服务使配置生效:service crond restart
复制代码


方法 1:在线安装 docker-ce , 配置国内 docker-ce 的 yum 源(阿里云)


[root@xuegod64 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码


配置 docker-ce 的离线 yum 源:方法 2:推荐大家使用离线安装,下面需要的 k8s-docker.tar.gz 压缩包私信我[root@xuegod64 ~]# tar xf k8s-docker.tar.gz -C /opt/[root@xuegod64 ~]# tee /etc/yum.repos.d/k8s-docker.repo << 'EOF'[k8s-docker]name=k8s-dockerbaseurl=file:///opt/k8s-dockerenable=1gpgcheck=0EOF


安装基础软件包


[root@xuegod64 ~]# 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 ntpdate  telnet
复制代码


安装 docker 环境依赖


[root@xuegod64 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码


安装 docker-ce


[root@xuegod64 ~]# yum install docker-ce docker-ce-cli containerd.io -y
复制代码


注:docker-ce-cli 作用是 docker 命令行工具包containerd.io 作用是容器接口相关包yum info 软件包的名字,可以查看一个包的具体作用。


#启动docker服务


[root@xuegod64 ~]# systemctl start docker && systemctl enable docker
复制代码


#查看 Docker 版本信息


[root@xuegod64 ~]# docker version    [root@xuegod64 ~]# 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 Tue 2021-04-20 10:07:23 CST; 9s ago
复制代码

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

内核参数修改:


[root@xuegod64 ~]# modprobe br_netfilter[root@xuegod64 ~]# echo "modprobe br_netfilter" >> /etc/profile[root@xuegod64 ~]# cat > /etc/sysctl.d/docker.conf <<EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOF[root@xuegod64 ~]# sysctl -p /etc/sysctl.d/docker.conf
复制代码


#重启 docker


[root@xuegod64 ~]# systemctl restart docker
复制代码


什么是 br_netfilter?linux iptables/netfilter通过和linux bridge功能联动,以实现透明防火墙功能。


透明防火墙(Transparent Firewall)又称桥接模式防火墙(Bridge Firewall)。简单来说,就是在网桥设备上加入防火墙功能。透明防火墙具有部署能力强、隐蔽性好、安全性高的优点。


为什么要执行 modprobe br_netfilter?在/etc/sysctl.conf 中添加:


net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1 
复制代码


执行 sysctl -p 时出现:


解决方法:


modprobe br_netfilter
复制代码


还记着 net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 吗?


net.ipv4.ip_forward:单机 docker 的网络架构实质上是在宿主机上安装了一个 docker0 的网桥,从外部访问容器内部时只需要访问宿主机的地址和对应的容器映射的地址,访问的数据包到宿主机上后经过 ip 包解析后通过目的 port 和 iptables 的规则会将数据包由 eth0 网卡转发至 docker0 网桥上进行下一步路由。所以如果容器的宿主机上的 ip_forward 未打开,那么该宿主机上的容器则不能被其他宿主机访问


net.bridge.bridge-nf-call-ip6tables:默认情况下,从容器发送到默认网桥的流量,并不会被转发到外部。要开启转发:net.bridge.bridge-nf-call-ip6tables = 1

配置 xuegod64 为 docker 私有仓库服务端

1.拉取 registry 镜像。 registry 镜像中包括搭建本地私有仓库的软件:


registry   [ˈredʒɪstri]   记录,登记  ;  pull 拉 ; push 推
复制代码


把 registry.tar 上传到 xuegod64 上导入本地镜像:


[root@xuegod64 ~]# docker load -i  registry.tar
复制代码


  1. 查看 registry 镜像


[root@xuegod64 ~]# docker images REPOSITORY           TAG                 IMAGE ID            CREATED             SIZEregistry      latest              047218491f8c        3 weeks ago         33.17 MB
复制代码


  1. 实战:使用 registry 镜像搭建一个私有仓库使用 registry 镜像搭建一个私有仓库。 registry 镜像中已经把搭建私有库程序安装好了,我只需要使用 registry 镜像运行一个 docker 实例就可以了。


registry 服务监听到端口号,默认是 5000


[root@xuegod64~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry   registry:lateste4698f625a56661edd2678269215ba42d4fa41c2da881768a741a72b4a3d0c60
复制代码


默认情况下,Registry 存放镜像的目录是/var/lib/registry 目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地物理机一个目录如/opt/registry 挂载到容器的/var/lib/registry 下。使用-v 参数,指定本地持久的路径。


[root@xuegod64~]# ls  /opt/registry    # 这个目录会自动创建[root@xuegod64~]# docker psCONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                    NAMES90cc7afb477e   registry:latest   "/entrypoint.sh /etc…"   34 seconds ago   Up 33 seconds   0.0.0.0:5000->5000/tcp   registry[root@xuegod63 ~]# netstat  -antup | grep 5000tcp6       0      0 :::5000                 :::*                    LISTEN      4032/docker-proxy
复制代码


说明,私有库已经启动成功。


查看私有仓库中的镜像列表:


curl http://192.168.1.64:5000/v2/_catalog {"repositories":[]}   
复制代码


#发现,现在还是空的,后期上传了本地 docker 镜像到私有仓库中,就有数据了。

配置 xuegod63 上的 docker 使用 xuegod64 上的私有仓库

修改 docker 配置文件,指定 docker 镜像加速结点为:私有仓库的地址


[root@xuegod63 ~]# vim  /etc/docker/daemon.json   
复制代码


#修改 daemon.json 文件,写入以下内容:"insecure-registries": [ "192.168.1.64:35000" ]


修改之后的/etc/docker/daemon.json 文件完整内容如下:


{"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com"],"insecure-registries": [ "192.168.1.64:5000" ]  }
复制代码


注: --insecure-registry 不安全的注册。这里的不安全指的是走 http 协议,要想安全传输镜像,需要使用 https 协议。我们的私有仓库一般是局域中使用,所以直接使用 http 协议就可以了。#重新加载,使配置生效


[root@xuegod63 ~]# systemctl daemon-reload
复制代码


#重新启动 docker 服务


[root@xuegod63 ~]# systemctl restart docker 
复制代码

实战-上传本地镜像到私有仓库

  1. 从 Docker HUB 上拉取一个测试镜像,名字: busybox 本地导入上传 busybox.tar 镜像到 xuegod63 上,作为测试镜像。


[root@xuegod63 ~]# docker load -i  busybox.tar[root@xuegod63 ~]# docker images REPOSITORY  TAG      IMAGE ID         CREATED            SIZEbusybox      latest     00f017a8c2a6      2 weeks ago         1.11 MB
复制代码


注:BusyBox 概述: BusyBox 是一个集成了一百多个最常用 Linux 命令和工具的软件。BusyBox 包含了 BusyBox 一些简单的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更复杂的工具,例 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的 shell。瑞士军刀见过没?



官网: www.busybox.net



2 .为基础镜像打个标签(复制一个镜像并起一个名字)语法: docker tag 原镜像名:标签 私有仓库地址/新镜像名:标签执行:


[root@xuegod63 ~]# docker tag busybox:latest 192.168.1.64:5000/busybox:latest
复制代码


注: 不写镜像标签,默认是:latest


[root@xuegod63 ~]# docker imagesREPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE192.168.1.64:5000/busybox   latest    00f017a8c2a6   4 years ago    1.11MB
复制代码


3.将刚新打好标签的 192.168.1.64:35000/busybox 镜像,push 到 xuegod64 私有仓库中。


[root@xuegod63 ~]#  docker push 192.168.1.64:5000/busybox 
复制代码


push :把镜像传到私有镜像仓库 4.登录 xuegod64 上,查看镜像的存储目录和文件


[root@xuegod64 ~]# yum install tree -y [root@xuegod64 ~]# tree /opt/registry/docker/registry/v2/repositories//opt/registry/docker/registry/v2/repositories/└── busybox   #可以看到上传的镜像
复制代码


访问http://192.168.1.64:5000/v2/_catalog


#可以查看私有仓库中的镜像列表,如下图:


{"repositories":["busybox"]}
复制代码


3.2.6 实战-使用私有仓库中的镜像创建服务删除镜像:语法: docker rmi 镜像名:标签


[root@xuegod63 ~]# docker rmi 192.168.1.64:5000/busybox #删除镜像[root@xuegod63 ~]# docker pull 192.168.1.64:5000/busybox #下载镜像[root@xuegod63 ~]# docker images #查看导入的镜像 REPOSITORY TAG IMAGE ID CREATED SIZE192.168.1.64:5000/busybox latest 00f017a8c2a6 2 weeks ago 1.11 MB


使用新导入的镜像,运行一个新 docker 实例:[root@xuegod63 ~]# docker run 192.168.1.64:5000/busybox:latest echo "hello"


hello 运行成功。


总结搭建私有仓库步骤:1、把 registry 镜像导入 xuegod64 机器 2、基于 registry 镜像运行一个 docker 实例,registry 默认监听 5000 端口,在宿主机上需要映射 5000 端口


把镜像传到私有仓库步骤:1、安装 docker 服务 2、修改 docker 服务镜像源,改成私有仓库地址:


"insecure-registries": [ "192.168.1.64:5000" ] 
复制代码


3、把要导入的镜像打个标签如: 192.168.1.64:5000/busybox:latest4、上传打了标签的镜像到私有仓库: docker push 192.168.1.64:5000/busybox:latest


从私有仓库下载镜像:1、修改 docker 服务镜像源,改成私有仓库地址:


"insecure-registries": [ "192.168.1.64:5000" ]
复制代码


2、下载刚才上传的镜像 : docker pull 192.168.1.64:5000/busybox:latest3、查看私有仓库中的镜像列表:http://192.168.1.64:5000/v2/_catalog

实战:使用 harbor 搭建 Docker 私有仓库

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



harbor ['hɑ:bə] 海湾


实验环境:xuegod64 机器需要的内存至少要 2G,我分配的是 6G 注:安装 harbor,系统根分区的可用空间需要大于 6G,否则安装时会报空间不足。内存 2G 以上


为 harbor 签发证书

[root@xuegod64 ~]# mkdir /data/ssl -p[root@xuegod64 ~]# cd /data/ssl/
复制代码


生成 ca 证书:


[root@xuegod64 ssl]# openssl genrsa -out ca.key 3072
复制代码


#生成一个 3072 位的 key,也就是私钥


[root@xuegod64 ssl]# openssl req -new -x509 -days 3650 -key ca.key -out ca.pem
复制代码


#生成一个数字证书 ca.pem,3650 表示证书的有效时间是 3 年,按箭头提示填写即可,没有箭头标注的为空:


[root@xuegod64 ssl]# openssl req -new -x509 -days 3650 -key ca.key -out ca.pemYou are about to be asked to enter information that will be incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:BJLocality Name (eg, city) [Default City]:BJOrganization Name (eg, company) [Default Company Ltd]:xuegodOrganizational Unit Name (eg, section) []:CACommon Name (eg, your name or your server's hostname) []:xuegod64.cnEmail Address []:mk@163.com
复制代码


#生成域名的证书:


[root@xuegod64 ssl]# openssl genrsa -out harbor.key  3072
复制代码


#生成一个 3072 位的 key,也就是私钥


[root@xuegod64 ssl]# openssl req -new -key harbor.key -out harbor.csr
复制代码


#生成一个证书请求,一会签发证书时需要的,标箭头的按提示填写,没有箭头标注的为空:


[root@xuegod64 ssl]#  openssl req -new -key harbor.key -out harbor.csrYou are about to be asked to enter information that will be incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:BJLocality Name (eg, city) [Default City]:BJOrganization Name (eg, company) [Default Company Ltd]:xuegodOrganizational Unit Name (eg, section) []:CA       Common Name (eg, your name or your server's hostname) []:xuegod64.cnEmail Address []:mk@163.com
Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:An optional company name []:
复制代码


签发证书:


[root@xuegod64 ssl]# openssl x509 -req -in harbor.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out harbor.pem -days 3650
复制代码


显示如下,说明证书签发好了:



查看证书是否有效:


openssl x509 -noout -text -in harbor.pem 
复制代码


显示如下,说明有效:


Certificate:    Data:        Version: 1 (0x0)        Serial Number:            cd:21:3c:44:64:17:65:40    Signature Algorithm: sha256WithRSAEncryption        Issuer: C=CH, ST=BJ, L=BJ, O=Default Company Ltd        Validity            Not Before: Dec 26 09:29:19 2020 GMT            Not After : Dec 24 09:29:19 2030 GMT        Subject: C=CH, ST=BJ, L=BJ, O=Default Company Ltd, CN=harbor        Subject Public Key Info:            Public Key Algorithm: rsaEncryption                Public-Key: (3072 bit)                Modulus:                    00:b0:60:c3:e6:35:70:11:c8:73:83:38:9a:7e:b8:                    。。。
复制代码

安装 harbor

#删除之前 registry 容器,防止跟安装 harbor 冲突


[root@xuegod64 ssl]# docker rm -f registry
复制代码


创建安装目录


[root@xuegod64 ssl]# mkdir /data/install -p[root@xuegod64 ssl]# cd /data/install/
复制代码


安装 harbor/data/ssl 目录下有如下文件:


ca.key  ca.pem  ca.srl  harbor.csr  harbor.key  harbor.pem
[root@xuegod64 install]# cd /data/install/
复制代码


#把 harbor 的离线包 harbor-offline-installer-v1.5.0.tgz 上传到这个目录,离线包在课件里提供了,可自行下载:解压:


[root@xuegod64 install]# tar zxvf harbor-offline-installer-v1.5.0.tgz[root@xuegod64 install]# cd harbor[root@xuegod64 harbor]# ls
复制代码


#可看到如下目录:#common 目录:存放模板配置 #ha 目录:做 harbor 高可用的


修改配置文件:


[root@xuegod64 harbor]# vim harbor.cfghostname = xuegod64
复制代码


#修改 hostname,跟上面签发的证书域名保持一致


ui_url_protocol = https
复制代码


#协议用 https


ssl_cert = /data/ssl/harbor.pemssl_cert_key = /data/ssl/harbor.key
复制代码


邮件和 ldap 不需要配置,在 harbor 的 web 界面可以配置其他配置采用默认即可修改之后保存退出注:harbor 默认的账号密码:admin/Harbor12345


安装 docker-compose 方法 1:离线上传 docker-compose 到服务器上下载二进制文件上传至 linux(课程资料已提供 docker-compose 二进制文件可直接上传)


[root@xuegod63 ~]# rz
复制代码



[root@xuegod63 ~]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
复制代码


添加执行权限


[root@xuegod63 ~]# chmod +x /usr/local/bin/docker-compose
复制代码


注: docker-compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。Docker-Compose 的工程配置文件默认为 docker-compose.yml,Docker-Compose 运行目录下的必要有一个 docker-compose.yml。docker-compose 可以管理多个 docker 实例。


方法 2:在线安装:


[root@xuegod63 ~]# curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
复制代码


添加执行权限


[root@xuegod63 ~]# chmod +x /usr/local/bin/docker-compose
复制代码


安装 harbor 需要的离线镜像包 docker-harbor.tar.gz 在课件,可上传到 xuegod64,通过 docker load -i 解压


[root@xuegod64 ~]#  docker load -i docker-harbor.tar.gz[root@xuegod64 install]# cd /data/install/harbor[root@xuegod64 harbor]# ./install.sh --with-notary --with-clair
复制代码


#clair 开启镜像的漏洞扫描。Clair 是一个开源项目,它提供了一个工具,通过静态分析 appc 和 docker 容器中的漏洞来监控容器的安全性。Clair 是一个 API 驱动的分析引擎,它逐层检查容器是否存在已知的安全缺陷。使用 Clair,您可以轻松构建为容器漏洞提供连续监视的服务。




安装过程会出现上面的界面,说明安装正常,docker ps 显示如下,说明容器启动正常



在自己电脑修改 hosts 文件



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


192.168.1.64  xuegod64
复制代码


扩展:如何停掉 harbor:你可以使用 docker-compose 来启动或关闭 Harbor 服务。但必须在与 docker-compose.yml 相同的目录中运行。


[root@xuegod64 harbor]# cd /data/install/harbor[root@xuegod64 harbor]# docker-compose stop 或:docker-compose stop  -f /data/install/docker-compose.yml
复制代码


如何启动 harbor:


[root@xuegod64 harbor]# cd /data/install/harbor[root@xuegod64 harbor]# docker-compose startdocker-compose start  
复制代码


如果 docker-compose start 启动 harbor 之后,还是访问不了,那就需要重启虚拟机

harbor 图像化界面使用说明

在浏览器输入:https://xuegod64



接收风险并继续,出现如下界面,说明访问正常



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



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


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



在 xuegod63 上测试使用 xuegod64 的 harbor 镜像仓库

#修改 docker 配置


[root@xuegod63 ~]# vim /etc/docker/daemon.json
{"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com"],"insecure-registries": ["192.168.1.64"]}
复制代码


修改配置之后使配置生效:


[root@xuegod63 ~]# systemctl daemon-reload && systemctl restart docker
复制代码


#查看 docker 是否启动成功


[root@xuegod63 ~]# systemctl status docker
复制代码


#显示如下,说明启动成功:


Active: active (running) since Fri … ago
复制代码


注意:配置新增加了一行内容如下:


"insecure-registries":["192.168.1.64"], 
复制代码


上面增加的内容表示我们内网访问 harbor 的时候走的是 http,192.168.1.64 是安装 harbor 机器的 ip


登录 harbor:


[root@xuegod63]# docker login 192.168.1.64
Username:admin Password: Harbor12345
复制代码


输入账号密码之后看到如下,说明登录成功了:


Login Succeeded
复制代码


#导入 tomcat 镜像,tomcat.tar.gz 在课件里


[root@xuegod63 ~]# docker load -i tomcat.tar.gz
复制代码


#把 tomcat 镜像打标签


[root@xuegod63 ~]# docker tag tomcat:latest  192.168.1.64/test/tomcat:v1
复制代码


执行上面命令就会把 192.168.1.64/test/tomcat:v1 上传到 harbor 里的 test 项目下


[root@xuegod63 ~]# docker push 192.168.1.64/test/tomcat:v1
复制代码


执行上面命令就会把 192.168.1.64/test/tomcat:v1 上传到 harbor 里的 test 项目下


从 harbor 仓库下载镜像

在 xuegod63 机器上删除镜像


[root@xuegod63 ~]# docker rmi -f 192.168.1.64/test/tomcat:v1
复制代码


拉取镜像


[root@xuegod63 ~]#docker pull 192.168.1.64/test/tomcat:v1
复制代码


扩展:如果想要走安全的 https 访问 harbor,可以用如下方法


#登录到 xuegod63 机器,创建证书存放目录


[root@xuegod63]# mkdir -p /etc/docker/certs.d/xuegod64
复制代码


#xuegod64 是 harbor 签发证书的时候指定的主机名


#登录 harbor 服务器,把 ca 证书拷贝到使用 docker 的机器上


[root@xuegod64 ~]# cd /data/ssl[root@xuegod64 ~]# scp ca.pem xuegod63:/etc/docker/certs.d/xuegod64/
复制代码


#登录到 xuegod63 机器


[root@xuegod63]# mv  /etc/docker/certs.d/xuegod64[root@xuegod64 ~]# mv ca.pem ca.crt
复制代码


#修改 docker 配置


[root@xuegod63 ~]# vim /etc/docker/daemon.json
{"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com"],}
复制代码


#删除"insecure-registries": ["192.168.1.64"]


#重启 docker 即可


[root@xuegod63]# systemctl restart docker[root@xuegod63]# docker login https://xuegod64
Username:admin Password: Harbor12345
复制代码

使用阿里云私有仓库存储自己的 docker 镜像

登录阿里云开发者平台https://developer.aliyun.com/service



使用自己的账号登录,没有的话注册一个账号


https://cr.console.aliyun.com/cn-hangzhou/instances



#点击运行个人版



在此页面中点击“命名空间”-创建命名空间: testxuegod1




配置一个访问私有仓库的密码,用户名是你登录网站的用户名。



创建镜像仓库:



仓库名称:test




点管理,查看使用方法:



点开管理页面,查看操作指南:




开始使用阿里云私有仓库


登录阿里云 docker registry:


[root@xuegod63 ~]# docker login --username=lucky6a6a  registry.cn-hangzhou.aliyuncs.com
复制代码


登录 registry 的用户名是阿里云账号全名,密码是开通服务时设置的密码。登录 xuegod63 将本地镜像 tomcat 推送到阿里云 registry#把 tomcat 镜像上传到 xuegod63 上,手动解压


docker load  -i tomcat.tar.gz
复制代码


为基础镜像打个标签


[root@xuegod63 ~]# docker tag tomcat registry.cn-hangzhou.aliyuncs.com/testxuegod1/test:v1
复制代码


#把镜像上传到阿里云主机


[root@xuegod63 ~]# docker push registry.cn-hangzhou.aliyuncs.com/testxuegod1/test:v1
复制代码


在阿里云上查看:




下载一个镜像:登录阿里云 docker registry:


[root@xuegod64 ~]# docker login --username=lucky6a6a  registry.cn-hangzhou.aliyuncs.com
复制代码


登录 registry 的用户名是阿里云账号全名,密码是开通服务时设置的密码。看到如下说明登录成功:



[root@xuegod64 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/testxuegod1/test:v1[root@xuegod64 ~]# docker images
复制代码


#配置阿里云镜像加速器


https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
复制代码



                             想要获取原文当和学习视频的 
                             添加好友回复“docker”即可



用户头像

学神来啦

关注

还未添加个人签名 2021.06.02 加入

10年Linux使用及管理经验,7年IT在线教育培训经验。精通Linux、Python、思科、C++、安全渗透等技术。曾任职国内知名互联网公司高级运维架构师、运维总监。对基于Linux下开源程序Openstack、Docker、K8S、DevOps、

评论

发布
暂无评论
微服务架构师-docker私有镜像仓库的配置和使用