docker私有化仓库介绍

公有仓库介绍

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

1、应用官网提供的工具来配置
docker-registry 是官网提供的工具,能够用于构建公有的镜像仓库。
registry [redstri] 记录,注销

公有镜像仓库有哪些有长处?

公有仓库益处:
1、速度快
2、保护不便
3、平安

搭建公有仓库的思路:
老的思路:下载源码tar/yum装置 -》 装置-》批改配置文件-》启动服务
应用docker思路:间接下载并应用registry镜像启动docker实例,这样仓库就搭建胜利了。

有了docker当前,所有软件不再以office.exe 或lrzsz.rpm模式公布,而以docker镜像公布。你只须要下载docker镜像并运行一个docker实例。有了docker当前,再也不必为装置linux服务而发愁!

试验环境规划

试验环境:
docker公有仓库地址:xuegod64 xuegod64机器须要的内存至多要2G,我调配的是6G
docker服务器地址 : 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-docker
baseurl=file:///opt/k8s-docker
enable=1
gpgcheck=0
EOF

装置根底软件包

[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   [redstri]   记录,注销  ;  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/_...

能够查看公有仓库中的镜像列表,如下图:

{"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 SIZE
192.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:latest
4、上传打了标签的镜像到公有仓库: 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:latest
3、查看公有仓库中的镜像列表:http://192.168.1.64:5000/v2/_catalog

实战:应用 harbor 搭建Docker公有仓库

harbor介绍
Docker容器利用的开发和运行离不开牢靠的镜像治理,尽管Docker官网也提供了公共的镜像仓库,然而从平安和效率等方面思考,部署咱们公有环境内的Registry也是十分必要的。Harbor是由VMware公司开源的企业级的Docker Registry治理我的项目,它包含权限治理(RBAC)、LDAP、日志审核、治理界面、自我注册、镜像复制和中文反对等性能。
官网地址:https://github.com/goharbor/h...

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.comPlease 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.64Username: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://xuegod64Username:admin Password:  Harbor12345

应用阿里云公有仓库存储本人的docker镜像

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

应用本人的账号登录,没有的话注册一个账号

https://cr.console.aliyun.com...

点击运行个人版


在此页面中点击“命名空间”-创立命名空间: 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”即可