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