博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
centos7.6使用docker-compose1.27.4离线搭建harbor2.0.4私有镜像仓库docker版本19.03.13
阅读量:2063 次
发布时间:2019-04-29

本文共 10717 字,大约阅读时间需要 35 分钟。

目录

 

 


一、搭建环境

 

IP 硬件环境 网络 作用
192.168.44.100 centos7.6虚拟机,2vCUPs4GB内存 模拟内网 部署docker-ce,docker-compose,harbor仓库
192.168.44.110 centos7.6虚拟机,1vCUPs2GB内存 模拟外网 下载相关rpm包,软件包,镜像等
  宿主机,笔记本 外网  

二、获取rpm包、安装docker

1.首先外网下载docker离线安装所需的rpm包,因为安装环境不同,所列rpm包不一定不全用到,但建议全部下载。

# 安装docker所需的全部rpm包如下:docker-ce-cli-19.03.13-3.el7.x86_64.rpmcheckpolicy-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.rpmlibsemanage-python-2.5-14.el7.x86_64.rpmaudit-libs-2.8.5-4.el7.x86_64.rpmaudit-2.8.5-4.el7.x86_64.rpmaudit-libs-python-2.8.5-4.el7.x86_64.rpmpolicycoreutils-2.5-34.el7.x86_64.rpmpolicycoreutils-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.rpmcontainer-selinux-2.119.2-1.911c772.el7_8.noarch.rpmcontainerd.io-1.4.3-3.1.el7.x86_64.rpmdocker-ce-19.03.13-3.el7.x86_64.rpm# 极少数情况需要升级原有的依赖包,请参考其他升级文档

下载地址1:

下载地址2:

本文不推荐这种在网站一个一个下载rpm包的方式,请看下一种方法

2.宿主机新建一个centos7.6最小化安装的外网虚拟机。思路是:外网将rpm包下载到本地/tmp目录,再转移rpm包至内网/tmp目录下进行安装。特别注意虚拟机建议最小化安装,这样可以保证下载到的docker相关rpm包是最全的。

假设已经安装好了虚拟机,并配置好了网络,在SSH终端执行以下操作。

# 安装wgetsudo 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-CEsudo 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.将上一步骤下载的rpm包上传至内网/tmp,在/tmp目录下执行安装语句。

# 进入rpm包所在目录,执行安装语句cd /tmpyum -y localinstall *.rpm# 启动docker并加入开机自启systemctl start docker && systemctl enable docker# 查看docker版本[root@localhost tmp]# docker versionClient: 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:      falseServer: 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

三、安装docker-compose

1.docker-compose的安装非常简单。外网下载包上传到内网目录:/usr/local/bin/,下载地址:

下载包慢的可以留言找我拿

[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.改名并授予可执行权限

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

3.验证docker-compose版本

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

四、先制作ssh证书

如果使用域名制作证书,将下面的IP换成对应的域名即可,这里测试使用IP制作证书

1.创建ssh证书目录,并进入目录制作CA证书私钥

mkdir -p /usr/local/ssh/ && cd /usr/local/ssh/openssl genrsa -out ca.key 4096

2.生成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.生成服务器私钥

openssl genrsa -out 192.168.44.100.key 4096

4.生成服务器证书签名请求(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.创建v3.ext拓展文件

cat > v3.ext <<-EOFauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentextendedKeyUsage = serverAuth subjectAltName = @alt_names[alt_names]IP=192.168.44.100EOF

6.使用v3.ext文件为harbor主机生成证书

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.提供证书给docker使用。首先将192.168.44.100.crt转换为192.168.44.100.cert,否则docker将不识别证书

# 转换证书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.至此我们获取的ssh相关证书目录应该是这样的

# 生成的所有证书目录[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.重启docker生效

systemctl restart docker

五、安装、配置harbor

1.将外网下载好的harbor安装包上传到内网服务器,,我是放在:/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.解压harbor安装包,配置harbor.yml并提供证书给harbor使用

# 解压[root@localhost local]# tar -zxvf harbor-offline-installer-v2.0.4.tgz harbor/harbor.v2.0.4.tar.gzharbor/prepareharbor/LICENSEharbor/install.shharbor/common.shharbor/harbor.yml.tmpl# 查看解压生成目录[root@localhost local]# ll | grep harbordrwxr-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.ymlhostname: 192.168.44.100http:  port: 9080https:  port: 9443  certificate: /usr/local/ssh/192.168.44.100.crt    private_key: /usr/local/ssh/192.168.44.100.key

3.执行 ./install.sh 安装harbor,等待安装完成

# 执行安装程序[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.浏览器登录harbor,地址:https://192.168.44.100:9443 或 https://192.168.44.100:443,使用harbor.yml配置文件设置的默认密码登录,默认密码:Harbor12345

 登录以后的界面如下,可以在默认的项目library存放自己的镜像,也可以创建新的项目,还可以修改主题颜色。

6.docker登录harbor离线私有仓库成功。

# 使用docker login 192.168.44.100:9443 或 docker login 192.168.44.100:443登录[root@localhost harbor]# docker login 192.168.44.100:9443Authenticating with existing credentials...WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded[root@localhost harbor]#

7.在harbor离线私有仓库上传、下载镜像

# 上传镜像# 首先要有一个镜像。外网环境用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登录harbordocker 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.7docker 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

.后续过程如遇到无法登录harbor仓库的情况,可尝试这样做:

# 依次执行,必要时可先重启docker,再执行以下操作# 重加载配置文件[root@localhost harbor]# ./prepare# 停止并删除实例(此操作不会删除已上传的镜像和其他数据)[root@localhost harbor]# docker-compose down -v# 重启harbor[root@localhost harbor]# docker-compose up -d

 

转载地址:http://huwmf.baihongyu.com/

你可能感兴趣的文章
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>
数的范围(二分查找上下界)
查看>>
算法导论阅读顺序
查看>>
Windows程序设计:直线绘制
查看>>
linux之CentOS下文件解压方式
查看>>
Django字段的创建并连接MYSQL
查看>>