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

4次阅读

共计 16933 个字符,预计需要花费 43 分钟才能阅读完成。

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,我调配的是 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=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.1.64
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
#批改配置文件之后须要重启网络服务能力使配置失效,重启网络服务命令如下:service network restart

#配置主机名:xuegod64
hostnamectl set-hostname xuegod64
#在 xuegod63 和 xuegod64 上配置 hosts 文件,让两台主机 hosts 文件保持一致
[root@xuegod63 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63
192.168.1.64 xuegod64
[root@xuegod64 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63
192.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 ~]# getenforce
Disabled
#配置工夫同步
[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 <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
[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 = 1
net.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             SIZE
registry      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:latest
e4698f625a56661edd2678269215ba42d4fa41c2da881768a741a72b4a3d0c60

默认状况下,Registry 寄存镜像的目录是 /var/lib/registry 目录下,这样如果容器被删除,则寄存于容器中的镜像也会失落,所以咱们个别状况下会指定本地物理机一个目录如 /opt/registry 挂载到容器的 /var/lib/registry 下。应用 - v 参数,指定本地长久的门路。

[root@xuegod64~]# ls  /opt/registry    # 这个目录会主动创立
[root@xuegod64~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                    NAMES
90cc7afb477e   registry:latest   "/entrypoint.sh /etc…"   34 seconds ago   Up 33 seconds   0.0.0.0:5000->5000/tcp   registry
[root@xuegod63 ~]# netstat  -antup | grep 5000
tcp6       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            SIZE
busybox      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 images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
192.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.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]:CN 
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:xuegod
Organizational Unit Name (eg, section) []:CA
Common Name (eg, your name or your server's hostname) []:xuegod64.cn
Email 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.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]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:xuegod
Organizational Unit Name (eg, section) []:CA       
Common Name (eg, your name or your server's hostname) []:xuegod64.cn
Email Address []:mk@163.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A 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.cfg
hostname = xuegod64

批改 hostname,跟下面签发的证书域名保持一致

ui_url_protocol = https

协定用 https

ssl_cert = /data/ssl/harbor.pem
ssl_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 start
docker-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/…

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

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”即可

正文完
 0