本文参考:https://blog.csdn.net/networken/article/details/106717259
一、镜像地址
使用kolla-ansible部署openstack集群时需要从dockerhub拉取镜像:
https://hub.docker.com/u/kolla/
kolla所有组件的镜像名称在kolla项目中可以找到:
https://github.com/openstack/kolla/tree/master/docker
拉取项目到本地:
1、git安装和配置<略>
2、拉取相应版本
打开git网址:https://github.com/openstack/kolla
参数:-b 执行版本
git clone -b stable/train https://github.com/openstack/kolla.git
ls -R kolla/docker/ |grep ":" |awk -F "/" '{print $4}' > imagename.txt
vim imagename.txt
删除空行 ## **:g/^$/d**
去掉:号 ## **:%s/://g
得到所有镜像的名称
3、kolla镜像格式有一定规则,例如:
kolla/centos-source-nova-compute:train
仓库名称/OS版本-包类型-组件名称:openstack版本
二、拉取镜像
1、拉取镜像到本地linux服务器上
前提:安装好docker-ce并配置了加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
for i in `cat imagename.txt`;do docker pull kolla/centos-source-$i:train;done
2、创建私有仓库
Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了
docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了,注意/opt/registry 要足够大,建议重新挂载
curl 127.0.0.1:5000/v2 ##验证
3、通过docker tag将该镜像标志为要推送到私有仓库
for i in `docker images |grep kolla |awk '{print $1}'`;do docker tag $i:train localhost:5000/$i:train;done
4、通过 docker push 命令将 镜像 push到私有仓库中
for i in `docker images |grep localhost |awk '{print $1}'`;do docker push $i:train;done
5、验证
curl 127.0.0.1:5000/v2/_catalog
三、将镜像/opt/registry下的目录打包压缩成tar.gz文件,方便随处使用
1、打包压缩
tar -zcvf kolla-train.tar.gz ./ #将此目录下的所有文件进行打包压缩
2、解压使用
mkdir /opt/registry/
tar -zxf kolla-train.tar.gz -C /opt/registry/
docker run -d -p 4000:5000 -v /opt/registry:/var/lib/registry --restart=always \
--name registry registry:train
curl x.x.x.x:4000/v2/_catalog #验证是否成功
3、配置docker的镜像下载地址
mkdir -p /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
[Service]
MountFlags=shared
EOF
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry x.x.x.x:4000 --registry-mirror=http://f2d6cb40.m.daocloud.io
systemctl daemon-reload
systemctl restart docker