docker镜像备份到阿里云容器服务
#关于阿里云的镜像服务
目前阿里云的docker镜像服务只限制并发数要求<10,并不限制容量和速度。 可以满足日常小团队使用。
#配置阿里云容器服务
打开 https://cr.console.aliyun.com/cn-qingdao/instances 我这里选青岛节点
创建个人版实例
#弄一个公开的镜像
创建一个镜像仓库 先弄一个公开的 仓库名称 :base-sh-debian 选择本地仓库
#推送镜像
plaintext
docker login --username=邮箱 registry.cn-qingdao.aliyuncs.com
# 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
docker docker images
# docker tag [ImageId] registry.cn-qingdao.aliyuncs.com/你的用户名/base-sh-debian:[镜像版本号]
docker tag debian11:sshd-autoboot.sh2222 registry.cn-qingdao.aliyuncs.com/你的用户名/base-sh-debian:debian11-sshd-autoboot.sh2222
# docker push registry.cn-qingdao.aliyuncs.com/你的用户名/base-sh-debian:[镜像版本号]
docker push registry.cn-qingdao.aliyuncs.com/你的用户名/base-sh-debian:debian11-sshd-autoboot.sh2222
#因为这个是公开的,所以可以直接使用
plaintext
docker run -itd --name debian-go-codeserver-git --privileged=true \
-p 59010:2222 -p 59011-59019:59011-59019 \
registry.cn-qingdao.aliyuncs.com/你的用户名/base-sh-debian:debian11-sshd-autoboot.sh2222 sh /autoboot.sh
这镜像的详细使用 点击这里查看
#清理
plaintext
docker rmi registry.cn-qingdao.aliyuncs.com/你的用户名/base-sh-debian:debian11-sshd-autoboot.sh2222
#私有镜像,也就是只有有密码才可以获取的
#创建一个私有仓库
过程略 名字就叫做 mydocker
#把正在使用的容器直接打包到镜像
我这里不保留历史记录 所以不使用docker commit
plaintext
# 导出
docker export debian-go-codeserver-git > debian11-for-sshd.tar
# 打包压缩 这步可以跳过,因为这里还要本地储存一下
gzip debian11-for-sshd.tar
# 导入,这里直接导入到阿里云的格式 就不用再打一次标签。
cat debian11-for-sshd.tar.gz | docker import - registry.cn-qingdao.aliyuncs.com/joyanhui/mydocker:debian11-ssh-coder-golang-git-autoboot.sh2222-2022-1213
# 推送
docker push registry.cn-qingdao.aliyuncs.com/joyanhui/mydocker:debian11-ssh-coder-golang-git-autoboot.sh2222-2022-1213
清理
plaintext
docker rmi registry.cn-qingdao.aliyuncs.com/joyanhui/mydocker:debian11-ssh-coder-golang-git-autoboot.sh2222-2022-1213
#编写一个shell
docker.sh
plaintext
# 一键备份正在运行的docker到阿里云 并丢弃历史记录
# 登录
# docker login --username=用户名 registry.cn-区域.aliyuncs.com
# 阿里云远程地址
remoturl=registry.cn-qingdao.aliyuncs.com/你的/你的仓库名称
# 要备份的容器名称
dockername=debian-go-codeserver-git
# 标签前缀
tagname=debian11-ssh-coder-golang-git-autoboot.sh2222
# 临时文件名前缀
tarfilename=debian-go-codeserver-git
datename=$(date +%Y%m%d-%H%M%S)
echo 当前时间 $datename
echo 导出到tar...
docker export $dockername> $tarfilename-$datename.tar
echo 导出到tar...完毕
echo tar导入到镜像...
cat $tarfilename-$datename.tar | docker import - $remoturl:$tagname-$datename
echo tar导入到镜像...完毕
echo 推送镜像到阿里云青岛...
docker push $remoturl:$tagname-$datename
echo 推送镜像到阿里云青岛... 完毕
echo 删除本地镜像
docker rmi $remoturl:$tagname-$datename
echo 删除本地文件
rm -rf $tarfilename-$datename.tar
echo 完毕
echo 请打开 https://cr.console.aliyun.com/cn-qingdao/instance/repositories 查看
#加到计划任务,每天一次
/var/spool/cron/crontabs/root 或者 crontab -e 查看状态service crond status
plaintext
cat /var/spool/cron/crontabs/root
# do daily/weekly/monthly maintenance
# min hour day month weekday command
*/15 * * * * run-parts /etc/periodic/15min
0 * * * * run-parts /etc/periodic/hourly
0 2 * * * run-parts /etc/periodic/daily
0 3 * * 6 run-parts /etc/periodic/weekly
0 5 1 * * run-parts /etc/periodic/monthly
15 9 * * * sh /home/tom/docker.sh