docker镜像备份到阿里云容器服务

关于阿里云的镜像服务

目前阿里云的docker镜像服务只限制并发数要求<10,并不限制容量和速度。 可以满足日常小团队使用。

配置阿里云容器服务

打开 https://cr.console.aliyun.com/cn-qingdao/instances 我这里选青岛节点

创建个人版实例

弄一个公开的镜像

创建一个镜像仓库 先弄一个公开的 仓库名称 :base-sh-debian 选择本地仓库

推送镜像

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

因为这个是公开的,所以可以直接使用

1
2
3
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

这镜像的详细使用 点击这里查看

清理

docker rmi  registry.cn-qingdao.aliyuncs.com/你的用户名/base-sh-debian:debian11-sshd-autoboot.sh2222

私有镜像,也就是只有有密码才可以获取的

创建一个私有仓库

过程略 名字就叫做 mydocker

把正在使用的容器直接打包到镜像

我这里不保留历史记录 所以不使用docker commit

1
2
3
4
5
6
7
8
# 导出
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

清理

1
docker rmi  registry.cn-qingdao.aliyuncs.com/joyanhui/mydocker:debian11-ssh-coder-golang-git-autoboot.sh2222-2022-1213

编写一个shell

docker.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 一键备份正在运行的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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 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
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计