容器镜像仓库的搭建与运维管理方案.docx

? ? ? ? ? ? ? 容器镜像仓库的搭建与运维管理方案 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 容器镜像OCI规范与镜像仓库 容器镜像是分层结构,如下图所示,都遵循开放容器计划Open Container Initiative(OCI)的规范(请参考/opencontainers/image-spec),使在不同的容器运行时环境中构建的容器镜像可以自由地分发到其它的容器运行时,如,containerd、cri-o、podman,在其中正常运行,而不会有兼容性的问题。 容器镜像仓库做为企业的应用系统容器的资产仓库,同样需要兼容OCI的规范,无论容器镜像来自公共镜像仓库、Dockerfile构建、自源代码到镜像Source to image(S2I)构建,都能够正确地存储、管理和分发,保证从容器运行时环境上传与下载的容器镜像一致。在容器镜像仓库中,镜像文件也是按照分层结构单独存储,并通过依赖关系组合成一体。 2 最简的私有镜像仓库的搭建、使用和维护 2.1 公共镜像仓库 公有镜像仓库,全互联网都可以访问, 常见的如下表: 公共镜像仓库,你可以搜索到有用的镜像并拉取下来,也可以上传自己的镜像管理并分享给其他人。 2.2 私有镜像仓库 公共镜像仓库是托管并在互联网开放的服务,适合用于分享交流,但并不适合企业使用,上传和下载都受限于网速,并且经常会出现各种不确定的状况导致失败,镜像的管理也受限于托管服务。因此,企业需要自己的私有镜像仓库,做到自主可控。 2.2.1 使用Docker Registry搭建简易私有镜像仓库 首先需要一台安装好Linux (以下都以CentOS 8.2 minimal安装为例)主机,建议配置4C8G或以上,且有独立的500G以上的数据盘存储镜像文件。 假设IP为38, HOSTNAME为registry.twt.io,数据盘挂载在/data 运行如下命令安装: ? yum install -y bash-completion curl wget httpd-tools bind-utils podmandocker-distribution 其中, docker-distribution是Docker Registry镜像仓库,podman是容器运行时,其它是工具。 生成密钥和自签证书: ? ? ? openssl req -newkey rsa:2048 -nodes -keyout reg.key -x509 -days 365 -out reg.crt -subj /C=CN/O=Twt/OU=Ops/CN=registry.twt.iocp reg.crt /etc/pki/ca-trust/source/anchorsupdate-ca-trust extract 注意,由于是自签证书,所有要使用镜像仓库的机器都需要配置证书的信任,或者在podman命令中通过--tls-verify=false忽略证书校验。 生成登录用户的用户名和密码的文件: ? htpasswd -cBb htpasswd twttest123 用户名为twt,密码为test123,密码使用bcrypt算法 编辑/etc/docker-distribution/registry/config.yaml文件,添加或修改如下内容: ? ? ? storage: ... filesystem: rootdirectory: /data/registryhttp:addr: :443 tls: certificate: /data/certs/reg.crt key: /data/certs/reg.keyauth: htpasswd: realm: basic-realm path: /data/auth/htpasswd 配置防火墙开放https端口: ? ? firewall-cmd --permanent --add-service=httpsfirewall-cmd --reload 启动Docker Registry,并配置自动启动: ? ? systemctl enable docker-distributionsystemctl start docker-distribution 通过如下命令检查registry是否运行正常 ? curl -s -k -u twt:test123https://registry.twt.io/v2/_catalog 如果返回{repositories:[]}则表示我们搭建成功 2.2.2 使用podman运行私有镜像仓库 使用podman的好处是无须用root用户或启动

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档