CentOS 7

CentOS7下的各种应用


Harbor 构建

<h2>一、安装环境介绍</h2> <p>安装环境:</p> <pre><code class="language-bash">Linux 服 务 器: 172.16.3.239 Linux 客 户 端: 172.16.3.238 Windows 客户端: 192.168.16.30</code></pre> <p>操作系统:</p> <pre><code class="language-bash">CentOS Linux release 7.7.1908 (Core) CentOS 7 自带的Python版本是:2.7.5</code></pre> <pre><code class="language-bash">Python3.6安装方法一: https://www.showdoc.cc/557523996513244?page_id=3292859228145658 Python3.6安装方法二: 离线包安装,需先下载好离线安装包 rpm -ivh *.rpm</code></pre> <p>docker版本:</p> <pre><code class="language-bash">docker-ce-18.03.1 (已验证) docker-ce-19.03.6 (已验证,当前最新稳定版)</code></pre> <p>docker-ce18.03.1 离线安装包及依赖包:</p> <pre><code class="language-bash">audit-libs-python-2.8.5-4.el7.x86_64.rpm checkpolicy-2.5-8.el7.x86_64.rpm container-selinux-2.107-3.el7.noarch.rpm docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm libcgroup-0.41-21.el7.x86_64.rpm libseccomp-2.3.1-3.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm pigz-2.3.3-1.el7.centos.x86_64.rpm policycoreutils-python-2.5-33.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm setools-libs-3.3.8-4.el7.x86_64.rpm</code></pre> <p>docker-ce-19.03.6 离线安装包及依赖包:</p> <pre><code class="language-bash">audit-libs-python-2.8.5-4.el7.x86_64.rpm checkpolicy-2.5-8.el7.x86_64.rpm containerd.io-1.2.10-3.2.el7.x86_64.rpm container-selinux-2.107-3.el7.noarch.rpm docker-ce-19.03.6-3.el7.x86_64.rpm docker-ce-cli-19.03.6-3.el7.x86_64.rpm libcgroup-0.41-21.el7.x86_64.rpm libseccomp-2.3.1-3.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm policycoreutils-python-2.5-33.el7.x86_64.rpm python-IPy-0.75-6.el7.noarch.rpm setools-libs-3.3.8-4.el7.x86_64.rpm</code></pre> <p>docker-compose 版本:</p> <pre><code class="language-bash">docker-compose-1.22.0</code></pre> <p>Harbor版本:</p> <pre><code class="language-bash">harbor-offline-installer-v1.2.0 (已验证) harbor-offline-installer-v1.10.1 (已验证,当前最新稳定版)</code></pre> <p>说明:</p> <pre><code class="language-bash">harbor-offline-installer-v1.2.0.tgz,CentOS7自带的Python2.7.5就支持安装; harbor-offline-installer-v1.10.1.tgz,CentOS7需python3.6及以上版本才能支持安装</code></pre> <h2>二、Harbor简单介绍</h2> <p>以Docker为代表的容器技术的出现,改变了传统的交付方式。通过把业务及其依赖的环境打包进Docker镜像,解决了开发环境和生产环境的差异问题,提升了业务交付的效率。如何高效地管理和分发Docker镜像?是众多企业需要考虑的问题。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,可以用来构建企业内部的Docker镜像仓库。 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。</p> <h2>三、安装步骤</h2> <h3>1、升级CentOS 7</h3> <pre><code class="language-bash">yum update -y</code></pre> <h3>2、上传docker安装包并安装</h3> <pre><code class="language-bash">yum install * 或 rpm -ivh *</code></pre> <p>设置随机启动</p> <pre><code class="language-bash">systemctl enable docker</code></pre> <p>启动服务</p> <pre><code class="language-bash">systemctl start docker</code></pre> <p>关闭防火墙</p> <pre><code class="language-bash">systemctl stop firewalld</code></pre> <p>关闭防火墙随机启动</p> <pre><code class="language-bash">system diable firewalld</code></pre> <p>配置阿里云加速</p> <pre><code class="language-bash">cp /lib/systemd/system/docker.service /etc/systemd/system/ chmod +x /etc/systemd/system/docker.service vim /etc/systemd/system/docker.service,在后面添加 --registry-mirror=... 这一行,完整内容如下: ExecStart=/usr/bin/dockerd --registry-mirror=https://dekn3ozn.mirror.aliyuncs.com</code></pre> <p>重新加载配置文件</p> <pre><code class="language-bash">systemctl daemon-reload</code></pre> <p>重启docker</p> <pre><code class="language-bash">systemctl restart docker</code></pre> <p>安装docker-compose</p> <pre><code class="language-bash">cp docker-compose /usr/local/bin/ chmod +x /usr/local/bin/docker-compose</code></pre> <h3>4、下载Harbor安装包</h3> <p><a href="https://github.com/goharbor/harbor/releases">https://github.com/goharbor/harbor/releases</a></p> <h3>5、上传并解压Harbor安装包</h3> <pre><code class="language-bash">tar -zxvf harbor-offline-installer-v1.8.6.tgz -C /usr/local/</code></pre> <h3>6、配置Harbor</h3> <pre><code class="language-bash">cd /usr/local/harbor vim harbor.cfg</code></pre> <p>注意: Harbor v1.2.0 版本的配置文件 harbor.cfg 必选项参数如下:</p> <pre><code class="language-bash">hostname = hub.zyzh.com ui_url_protocol = https ssl_cert = /data/cert/server.crt ssl_cert_key = /data/cert/server.key harbor_admin_password: Harbor310012 说明:hostname 目标的主机名或者完全限定域名</code></pre> <p>Harbor v1.10.1 版本的配置文件 harbor.yml 必选项参数如下:</p> <pre><code class="language-bash">hostname: hub.zyzh.com http: port: 80 https: port: 443 certificate: /data/cert/server.crt private_key: /data/cert/server.key harbor_admin_password: Harbor310012</code></pre> <h3>7、创建https证书以及配置相关目录权限</h3> <pre><code class="language-bash">mkdir -pv /data/cert</code></pre> <p>依次执行,根据提示信息,完成相应的配置</p> <pre><code class="language-bash">openssl genrsa -des3 -out server.key 2048 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key #证书退密钥,在使用时不需要输入密钥 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt</code></pre> <p>把证书移至证书相关目录</p> <pre><code class="language-bash">mv server* /data/cert</code></pre> <h3>8、配置主机名与IP对应关系</h3> <p>在服务器配置</p> <pre><code class="language-bash">echo '172.16.3.239 hub.zyzh.com' &gt; /etc/hosts</code></pre> <p>在Linux客户端配置</p> <pre><code class="language-bash">echo '172.16.3.239 hub.zyzh.com' &gt; /etc/hosts</code></pre> <p>在Windows客户端配置</p> <pre><code class="language-bash">c:\windows\system32\drivers\etc\hosts 添加如下行: 172.16.3.239 hub.zyzh.com 注意:win10企业版仅一行时有效。</code></pre> <h3>9、安装harbor</h3> <pre><code class="language-bash">cd /usr/local/harbor ./install</code></pre> <h3>9、在Windows客户端访问harbor进行设置</h3> <pre><code class="language-bash">访问URL: https://172.16.3.239 输入用户名/密码:admin/passwd。新版在/usr/local/harbor/harbor.yml(harbor.cfg老版v1.2.0)中配置;</code></pre> <p>创建项目</p> <pre><code class="language-bash">创建用户和密码:zysoft/pwd 创建项目:以用户zysoft登录,创建项目相关的私有仓库easytong</code></pre> <h3>10、在服务器端上传镜像至仓库</h3> <p>添加访问认证权限</p> <pre><code class="language-bash">echo '{ "insecure-registries":["hub.zyzh.com"] }' &gt; /etc/docker/daemon.json</code></pre> <p>重启docker、harbor服务</p> <pre><code class="language-bash">systemctl restart docker docker-compose -f /usr/local/harbor/docker-compose start</code></pre> <p>上传镜至私有仓库,需先登录认证通过后,才能上传镜像。</p> <p>登录认证:</p> <pre><code class="language-bash">docker login hub.zyzh.com</code></pre> <p>上传镜像:</p> <pre><code class="language-bash">docker push hub.zyzh.com/easytong/tomcat:v1.0</code></pre> <p>查看harbor仓库中镜像</p> <pre><code class="language-bash">以zysoft用户登录harbor仓库,在harbor界面上查看上传的镜像信息。</code></pre> <h3>11、在Linux客户端使用</h3> <p>添加访问认证权限</p> <pre><code class="language-bash">echo '{ "insecure-registries":["hub.zyzh.com"] }' &gt; /etc/docker/daemon.json</code></pre> <p>重启docker服务</p> <pre><code class="language-bash">systemctl restart docker</code></pre> <p>在客户端使用时,要从镜像他说下载镜像使用时,请先进行登录验证。</p> <p>在客户端登录认证:</p> <pre><code class="language-bash">docker login hub.zyzh.com</code></pre> <p>下载镜像</p> <pre><code class="language-bash">docker pull hub.zyzh.com/easytong/tomcat:v1.0 docker images</code></pre> <p>下载镜像后使用:</p> <pre><code class="language-bash">docker run --name tomcat -d -p 80:8080 hub.zyzh.com/easytong/tomcat:v1.0</code></pre> <p>在Windows客户端访问容器。</p> <p>harbor随机启动设置 将 harbor 配成 systemd 的 service,添加配置文件 /usr/lib/systemd/system/harbor.service,内容如下:</p> <pre><code class="language-bash">[Unit] Description=Harbor After=docker.service systemd-networkd.service systemd-resolved.service Requires=docker.service Documentation=http://github.com/vmware/harbor [Service] Type=simple Restart=on-failure RestartSec=5 ExecStart=/usr/local/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml up ExecStop=/usr/local/bin/docker-compose -f {{ harbor_install_path }}/harbor/docker-compose.yml down [Install] WantedBy=multi-user.target</code></pre> <p>其中 {{ harbor_install_path }} 换成自己的 harbor 安装路径。 docker-compose 的绝对路径,请通过 which docker-compose 查看。</p> <p>然后启动该项服务:</p> <pre><code class="language-bash">systemctl enable harbor systemctl start harbor</code></pre> <hr /> <p>问题汇总: 1、查看 harbor 目录下的 docker-compose.yml 会发现,所有的 containers 都配置了 restart: always: 这表示所有的容器在意外关闭后都会自动重启,比如 docker 重启或服务器重启。(手动 stop 不会自动重启) 但是我在手动运行 docker-compose up -d,然后重启服务器后,发现有几个 container 并没有自动重启。 【解决办法】按上述配置harbor.service服务后,systemctl restart/stop/status/start,不是随机启动 问题都得到解决。 其它说明: --restart=on-failure:5 ,当容器退出代码不为0时,最多重启5次, 有的时候可以设置重启次数,对于一些启动失败的container,如果用always,会不断地重启。</p> <p>参考资源: Harbor介绍 <a href="https://cloud.tencent.com/developer/article/1404719">https://cloud.tencent.com/developer/article/1404719</a> Harbor使用手册 <a href="https://www.iteye.com/blog/m635674608-2358362">https://www.iteye.com/blog/m635674608-2358362</a> harbor.service服务设置 <a href="https://www.cnblogs.com/kirito-c/p/11145881.html">https://www.cnblogs.com/kirito-c/p/11145881.html</a></p>

页面列表

ITEM_HTML