Centos7.6 utilise docker-compose1.27.4 hors ligne pour construire la version 19.03.13 de docker d'entrepôt de miroir privé Harbor2.0.4

table des matières

 

1. Construisez l'environnement

Deux, récupérez le package rpm, installez docker

Troisièmement, installez docker-compose

Quatrièmement, faites d'abord le certificat ssh

Cinq, installer et configurer le port

 


1. Construisez l'environnement

 

IP Environnement matériel L'Internet effet
192.168.44.100 machine virtuelle centos7.6, 2vCUPs 4 Go de mémoire Intranet analogique Déployez docker-ce, docker-compose, entrepôt portuaire
192.168.44.110 machine virtuelle centos7.6, 1vCUPs2GB de mémoire Extranet analogique Téléchargez les packages rpm, logiciels, miroirs, etc.
  Serveur Extranet  

Deux, récupérez le package rpm, installez docker

1. Tout d'abord, téléchargez le package rpm requis pour l'installation hors ligne de docker à partir d'Internet. Étant donné que l'environnement d'installation est différent, les packages rpm répertoriés peuvent ne pas être utilisés, mais il est recommandé de les télécharger tous.

# 安装docker所需的全部rpm包如下:
docker-ce-cli-19.03.13-3.el7.x86_64.rpm
checkpolicy-2.5-8.el7.x86_64.rpm 
libcgroup-0.41-21.el7.x86_64.rpm 
python-IPy-0.75-6.el7.noarch.rpm 
setools-libs-3.3.8-4.el7.x86_64.rpm
libsemanage-python-2.5-14.el7.x86_64.rpm
audit-libs-2.8.5-4.el7.x86_64.rpm
audit-2.8.5-4.el7.x86_64.rpm
audit-libs-python-2.8.5-4.el7.x86_64.rpm
policycoreutils-2.5-34.el7.x86_64.rpm
policycoreutils-python-2.5-34.el7.x86_64.rpm 
container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm 
containerd.io-1.4.3-3.1.el7.x86_64.rpm 
docker-ce-19.03.13-3.el7.x86_64.rpm

# 部分系统环境只需要以下4个包
docker-ce-cli-19.03.13-3.el7.x86_64.rpm
container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
containerd.io-1.4.3-3.1.el7.x86_64.rpm
docker-ce-19.03.13-3.el7.x86_64.rpm

# 极少数情况需要升级原有的依赖包,请参考其他升级文档

Adresse de téléchargement 1: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

Lien de téléchargement 2: http://mirrors.aliyun.com/docker-ce/linux/centos/

Cet article ne recommande pas cette façon de télécharger les packages rpm un par un sur le site Web, veuillez consulter la méthode suivante

2. L'ordinateur hôte crée une nouvelle machine virtuelle réseau externe avec une installation réduite centos7.6. L'idée est la suivante: téléchargez le package rpm du réseau externe vers le répertoire local / tmp, puis transférez le package rpm vers le répertoire / tmp du réseau interne pour l'installation. Portez une attention particulière à l'installation minimale de la machine virtuelle, afin de vous assurer que le package rpm lié à docker téléchargé est le plus complet.

En supposant que la machine virtuelle a été installée et que le réseau est configuré, effectuez les opérations suivantes dans le terminal SSH.

# 安装wget
sudo yum -y install wget 

# 备份yum源
cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo_bak

# 下载yum的阿里云
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 清除yum源并重新建立缓存
sudo yum clean all && yum makecache

# 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新Docker-CE
sudo yum makecache fast 

# 查看可安装的docker-ce版本
yum list docker-ce.x86_64 --showduplicates | sort -r

# 下载docker相关的rpm包,--downloadonly参数的作用是只下载相关rpm包,不安装。
sudo yum -y install --downloadonly --downloaddir=/tmp docker-ce-19.03.13 docker-ce-cli-19.03.13

# 查看rpm包是否已经下载到/tmp目录
[root@localhost tmp]# ll
总用量 100856
-rw-r--r--. 1 root root   261632 8月  23 2019 audit-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root   104408 8月  23 2019 audit-libs-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root    78256 8月  23 2019 audit-libs-python-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root   302068 11月 12 2018 checkpolicy-2.5-8.el7.x86_64.rpm
-rw-r--r--. 1 root root 34677436 12月  9 09:48 containerd.io-1.4.3-3.1.el7.x86_64.rpm
-rw-r--r--. 1 root root    40816 7月   6 22:33 container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
-rw-r--r--. 1 root root 25268380 9月  18 03:06 docker-ce-19.03.13-3.el7.x86_64.rpm
-rw-r--r--. 1 root root 40247476 12月 10 11:06 docker-ce-cli-19.03.13-3.el7.x86_64.rpm
-rw-r--r--. 1 root root    67720 8月  23 2019 libcgroup-0.41-21.el7.x86_64.rpm
-rw-r--r--. 1 root root   115284 11月 12 2018 libsemanage-python-2.5-14.el7.x86_64.rpm
-rw-r--r--. 1 root root   938736 4月   4 2020 policycoreutils-2.5-34.el7.x86_64.rpm
-rw-r--r--. 1 root root   468316 4月   4 2020 policycoreutils-python-2.5-34.el7.x86_64.rpm
-rw-r--r--. 1 root root    32880 7月   4 2014 python-IPy-0.75-6.el7.noarch.rpm
-rw-r--r--. 1 root root   635184 11月 12 2018 setools-libs-3.3.8-4.el7.x86_64.rpm
[root@localhost tmp]# 

3. Téléchargez le package rpm téléchargé à l'étape précédente sur l'intranet / tmp et exécutez l'instruction d'installation dans le répertoire / tmp.

# 进入rpm包所在目录,执行安装语句
cd /tmp
yum -y localinstall *.rpm

# 启动docker并加入开机自启
systemctl start docker && systemctl enable docker

# 查看docker版本
[root@localhost tmp]# docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:02:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Troisièmement, installez docker-compose

1. L'installation de docker-compose est très simple. Téléchargez le package de téléchargement du réseau externe dans le répertoire du réseau interne: / usr / local / bin /, adresse de téléchargement: https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64

Si le téléchargement du package est lent, vous pouvez laisser un message et me demander de le récupérer

[root@localhost bin]# ll
总用量 11936
-rw-r--r-- 1 root root 12218968 11月 10 17:22 docker-compose-Linux-x86_64
[root@localhost bin]# 

2. Renommez et accordez des autorisations exécutables

[root@localhost bin]# mv docker-compose-Linux-x86_64 docker-compose && chmod +x docker-compose

3. Vérifiez la version de docker-compose

[root@localhost bin]# docker-compose version
docker-compose version 1.27.4, build 40524192
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
[root@localhost bin]# 

Quatrièmement, faites d'abord le certificat ssh

Si vous utilisez un nom de domaine pour créer un certificat, remplacez simplement l'adresse IP ci-dessous par le nom de domaine correspondant. Ici, nous testons l'utilisation d'IP pour créer un certificat

1. Créez un répertoire de certificat ssh et entrez le répertoire pour créer la clé privée du certificat CA

mkdir -p /usr/local/ssh/ && cd /usr/local/ssh/

openssl genrsa -out ca.key 4096

2. Générer un certificat CA

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.44.100" \
 -key ca.key \
 -out ca.crt

3. Générer la clé privée du serveur

openssl genrsa -out 192.168.44.100.key 4096

4. Générez une demande de signature de certificat de serveur (CSR)

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.168.44.100" \
    -key 192.168.44.100.key \
    -out 192.168.44.100.csr

5. Créez un fichier d'extension v3.ext

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth 
subjectAltName = @alt_names
[alt_names]
IP=192.168.44.100
EOF

6. Utilisez le fichier v3.ext pour générer un certificat pour l'hôte du port

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 192.168.44.100.csr \
    -out 192.168.44.100.crt

7. Fournissez des certificats à utiliser par docker. Commencez par convertir 192.168.44.100.crt en 192.168.44.100.cert, sinon docker ne reconnaîtra pas le certificat

# 转换证书
openssl x509 -inform PEM -in 192.168.44.100.crt -out 192.168.44.100.cert

# 按以下标准格式创建docker证书目录。harbor官方建议,如更改了默认的443端口号,则证书目录如下:
mkdir -p /etc/docker/certs.d/192.168.44.100:9443/
# 如使用默认的443端口,则这样创建docker证书目录
mkdir -p /etc/docker/certs.d/192.168.44.100/

# 复制证书到docker证书目录
cp -a /usr/local/ssh/192.168.44.100.cert /etc/docker/certs.d/192.168.44.100:9443/
cp -a /usr/local/ssh/192.168.44.100.key /etc/docker/certs.d/192.168.44.100:9443/
cp -a /usr/local/ssh/ca.crt /etc/docker/certs.d/192.168.44.100:9443/
或
cp -a /usr/local/ssh/192.168.44.100.cert /etc/docker/certs.d/192.168.44.100/
cp -a /usr/local/ssh/192.168.44.100.key /etc/docker/certs.d/192.168.44.100/
cp -a /usr/local/ssh/ca.crt /etc/docker/certs.d/192.168.44.100/   

8. Le répertoire de certificats ssh que nous avons obtenu jusqu'à présent devrait ressembler à ceci

# 生成的所有证书目录
[root@localhost ssh]# ll /usr/local/ssh/
总用量 32
-rw-r--r-- 1 root root 2078 12月  8 16:51 192.168.44.100.cert
-rw-r--r-- 1 root root 2078 12月  8 15:23 192.168.44.100.crt
-rw-r--r-- 1 root root 1716 12月  8 15:23 192.168.44.100.csr
-rw-r--r-- 1 root root 3243 12月  8 15:23 192.168.44.100.key
-rw-r--r-- 1 root root 2053 12月  8 15:22 ca.crt
-rw-r--r-- 1 root root 3247 12月  8 15:19 ca.key
-rw-r--r-- 1 root root   17 12月  8 15:23 ca.srl
-rw-r--r-- 1 root root  230 12月  8 15:23 v3.ext

# docker 配置https访问证书目录
[root@localhost ssh]# ll /etc/docker/certs.d/192.168.44.100\:9443
总用量 12
-rw-r--r-- 1 root root 2078 12月  8 16:51 192.168.44.100.cert
-rw-r--r-- 1 root root 3243 12月  8 15:23 192.168.44.100.key
-rw-r--r-- 1 root root 2053 12月  8 15:22 ca.crt

9. Redémarrez le menu fixe pour prendre effet

systemctl restart docker

Cinq, installer et configurer le port

1. Téléchargez le package d'installation du port téléchargé depuis le réseau externe vers le serveur du réseau interne, je le mets dans: / usr / local

[root@localhost local]# ll /usr/local/ | grep harbor-offline-installer-v2.0.4.tgz 
-rw-r--r--  1 root root 535415029 11月 23 16:12 harbor-offline-installer-v2.0.4.tgz
[root@localhost local]#

2. Décompressez le package d'installation du port, configurez port.yml et fournissez le certificat que le port doit utiliser

# 解压
[root@localhost local]# tar -zxvf harbor-offline-installer-v2.0.4.tgz 
harbor/harbor.v2.0.4.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl

# 查看解压生成目录
[root@localhost local]# ll | grep harbor
drwxr-xr-x  3 root root       180 12月  9 15:20 harbor
-rw-r--r--  1 root root 535415029 11月 23 16:12 harbor-offline-installer-v2.0.4.tgz

# 进入、查看目录文件
[root@localhost local]# cd harbor
[root@localhost harbor]# ll
总用量 525080
-rw-r--r-- 1 root root      3361 11月 13 16:17 common.sh
-rw-r--r-- 1 root root 537645661 11月 13 16:18 harbor.v2.0.4.tar.gz
-rw-r--r-- 1 root root      7828 11月 13 16:17 harbor.yml.tmpl
-rwxr-xr-x 1 root root      2523 11月 13 16:17 install.sh
-rw-r--r-- 1 root root     11347 11月 13 16:17 LICENSE
-rwxr-xr-x 1 root root      1856 11月 13 16:17 prepare

# 复制一个配置文件并改名为harbor.yml
[root@localhost harbor]# cp -a harbor.yml.tmpl harbor.yml

# 修改配置文件,修改内容如下,密码默认,其他保持不变,harbor和docker不同,它识别.crt的证书,因此不用转换。
[root@localhost harbor]# vi harbor.yml
hostname: 192.168.44.100
http:
  port: 9080
https:
  port: 9443
  certificate: /usr/local/ssh/192.168.44.100.crt  
  private_key: /usr/local/ssh/192.168.44.100.key  

3. Exécutez ./install.sh pour installer Harbor et attendez la fin de l'installation.

# 执行安装程序
[root@localhost harbor]# ./install.sh 

[Step 0]: checking if docker is installed ...

Note: docker version: 19.03.13

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 1.27.4

[Step 2]: loading Harbor images ...

.....

5. Port de connexion du navigateur, adresse: https://192.168.44.100:9443 ou https://192.168.44.100:443, connectez-vous avec le mot de passe par défaut défini dans le fichier de configuration harbour.yml, mot de passe par défaut: Harbor12345

 L'interface après la connexion est la suivante, vous pouvez stocker votre propre image miroir dans la bibliothèque de projet par défaut, vous pouvez également créer un nouveau projet et vous pouvez également modifier la couleur du thème.

6. Docker s'est connecté avec succès à l'entrepôt privé hors ligne du port.

# 使用docker login 192.168.44.100:9443 或 docker login 192.168.44.100:443登录

[root@localhost harbor]# docker login 192.168.44.100:9443
Authenticating with existing credentials...
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
[root@localhost harbor]# 

7. Téléchargez et téléchargez des images dans l'entrepôt privé hors ligne du port

# 上传镜像
# 首先要有一个镜像。外网环境用docker下载一个mysql5.7镜像
docker pull mysql:5.7

# 下载完成后,将mysql:5.7镜像打包在当前目录
docker save mysql:5.7 -o mysql:5.7.tar

# 将此压缩包用U盘或其他方式转移到内网,并载入docker镜像
docker load < mysql:5.7.tar

# docker登录harbor
docker login 192.168.44.100:9443

# 重新标记要推送的镜像 docker tag SOURCE_IMAGE[:TAG] 192.168.44.100:9443/rancher/REPOSITORY[:TAG]
docker tag mysql:5.7 192.168.44.100:9443/rancher/mysql:v5.7

# 将标记的镜像推送至harbor仓库的rancher项目里 docker push 192.168.44.100:9443/rancher/REPOSITORY[:TAG]
docker push 192.168.44.100:9443/rancher/mysql:v5.7

# 在harbor的web页面确认是否推送成功




# 下载镜像
# 删除docker本地镜像,这个操作不会删除已上传至harbor离线仓库的镜像
docker rmi 192.168.44.100:9443/rancher/mysql:v5.7
docker rmi mysql:5.7

# 重新从harbor离线仓库下载镜像
docker pull 192.168.44.100:9443/rancher/mysql@sha256:ec6742af6625f76f98162b17fd62d22e1824d13fd80f214ab9184c7b6b50bad5
或者
docker pull 192.168.44.100:9443/rancher/mysql:v5.7(推荐)

# 查看是否下载成功
docker images

Si vous ne parvenez pas à vous connecter à l'entrepôt du port dans le processus suivant, vous pouvez essayer ceci:

# 依次执行,必要时可先重启docker,再执行以下操作

# 重加载配置文件
[root@localhost harbor]# ./prepare
# 停止并删除实例(此操作不会删除已上传的镜像和其他数据)
[root@localhost harbor]# docker-compose down -v
# 重启harbor
[root@localhost harbor]# docker-compose up -d

 

Je suppose que tu aimes

Origine blog.csdn.net/ct_666/article/details/110916695
conseillé
Classement