本地 docker 镜像仓库配置
优质
小牛编辑
139浏览
2023-12-01
Docker 镜像同步
OpenShift 安装和运行依赖 4 大类 docker 镜像,分别是:
安装所需核心镜像
日志,管理等相关的镜像
Ansible broker 相关的镜像
S2I 应用镜像构建相关的镜像
如下脚本可以用来同步镜像:
具体执行 ./images-syncing-<version>.sh <registry> <version> <isSave>
可同步,
registry - 红帽仓库地址
version - 镜像版本号
isSave - 是否导出镜像
./https://www.xnip.cn/doc/I0qaQxkwUAimages-syncing-310.sh registry.access.redhat.com v3.10.14 false
验证下载完成的容器镜像# docker images
安装并配置 Docker Registry
安装yum -y install docker-distribution
systemctl enable docker-distribution
systemctl start docker-distribution
systemctl status docker-distribution
配置TLS
为了启用TLS协议传输,需要生成自签名证书。命令如下:
mkdir /etc/crts/ && cd /etc/crts
openssl req \
-newkey rsa:2048 -nodes -keyout example.com.key \
-x509 -days 365 -out example.com.crt -subj \
"/C=CN/ST=GD/L=SZ/O=Global Security/OU=IT Department/CN=*.example.com"
编辑镜像仓库服务配置文件/etc/docker-distribution/registry/config.yml
。确认http的配置如下:
http:
addr: :443
tls:
certificate: /etc/crts/example.com.crt
key: /etc/crts/example.com.key
修改完毕后,刷新systemd配置。命令如下:
systemctl daemon-reload
重启Docker Distribution服务。命令如下:
systemctl restart docker-distribution
添加 iptables 规则,运行 443 端口访问
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak.$(date "+%Y%m%d%H%M%S");
sed -i '/.*--dport 22 -j ACCEPT.*/a\-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT' /etc/sysconfig/iptables;
sed -i '/.*--dport 22 -j ACCEPT.*/a\-A INPUT -p udp -m state --state NEW -m udp --dport 443 -j ACCEPT' /etc/sysconfig/iptables;
systemctl restart iptables.service
客户端配置信任自签名证书
客户端如果需要连接本地镜像仓库,需要配置信任自签名证书。并重启Docker服务
cp /etc/crts/example.com.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
重起 Docker
systemctl restart docker
加载所有预先下载的 Docker 镜像
如果 docker 镜像需要从压缩包中导入,执行如下步骤:
1 - 查看下载的镜像明细# ls -l /opt/images/
-rw-------. 1 root root 10836630528 Dec 26 03:35 ocp-3.11.16.part1.tar.gz
-rw-------. 1 root root 11216611840 Dec 26 03:43 ocp-3.11.16.part2.tar.gz
2 - 加载 Docker 镜像# cd /opt/images
# for i in `ls *.gz` ; do docker load -i $i; done;
3 - docker images 验证# docker images
推送镜像到本地 Docker Registry
1 - 设定变量REDHAT_REG="registry.access.redhat.com"
PRIVATE_REG="registry.example.com"
2 - 设定 docker tagfor i in $(docker images|grep $REDHAT_REG|awk '{print $1":"$2}') ; do docker tag $i "$PRIVATE_REG$(echo $i|awk -F 'com' {'print $2'})" ; done;
3 - 推送到本地镜像仓库for i in `docker images|grep $PRIVATE_REG|awk '{print $1":"$2}'` ; do docker push $i; done;
4 - 验证能否可成功下载镜像docker pull registry.example.com/rhscl/mysql-57-rhel7:latest