镜像搬运工 skopeo简单用法
https://blog.51cto.com/u_16099262/6928212
https://blog.csdn.net/easylife206/article/details/125093122
https://github.com/containers/skopeo
1 安装
dnf -y install skopeo
- 本地搭建私有仓库
#安装docker
dnf install docker
#下载并启动一个register容器,创建本地私有仓库
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
列出私有仓库所有镜像
curl http://10.24.9.97:5000/v2/_catalog
返回:{"repositories":["influxdb"]}
浏览器访问:http://10.24.9.97:5000/v2/_catalog
3.修改docker配置文件
vim /etc/docker/daemon.json
{
"insecure-registries": ["10.24.9.97:5000"]
}
重启docker:systemctl restart docker
4.登陆dockerhub仓库
在使用 skopeo 前如果 src 或 dest 镜像是在 registry 仓库中的并且配置了非 public 的镜像需要相应的 auth 认证, 此时我们可以使用 docker login
或者 skopeo login
的方式登录到 registry 仓库,然后默认会在~/.docker
目录下生成 registry 登录配置文件 config.json ,该文件里保存了登录需要的验证信息,skopeo 拿到该验证信息才有权限往 registry push 镜像。
docker login #输入用户名密码
或者skopeo login docker.io
会生成登陆配置文件保存在.docker/config.json中,类似下面
# cat ~/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "cHNoeW1zOnNoaXlhbjgyMw=="
}
}
}#
5.skopeo copy-镜像拷贝
远端镜像地址:docker.io/pshyms/influxdb:latest
1)首先拷贝到本地仓库
skopeo copy docker://docker.io/pshyms/influxdb:latest docker://10.24.9.97:5000/influxdb:v1 --src-tls-verify=false --dest-tls-verify=false
命令中的tls-verify=false是为了解决https和http传输时不兼容报错的问题
2)也可以拷贝到本地目录,/tmp/mytest目录要先创建
skopeo copy --insecure-policy --src-tls-verify=false docker://docker.io/pshyms/influxdb:latest dir:/tmp/mytest/influxdb
6.镜像同步-skopeo sync
1)从本地镜像仓库把influxdb所有版本镜像,同步到本地目录/tmp中
skopeo sync --insecure-policy --src-tls-verify=false --src docker --dest dir 10.24.9.97:5000/influxdb /tmp/influx
2)从本地/tmp目录同步到docker的hub仓库中的pshyms用户下
skopeo sync --insecure-policy --dest-tls-verify=false --src dir --dest docker /tmp/influx pshyms
此时登陆docker,即可看到influx:v1这个镜像
努力生活,融于自然