关于阿里云的镜像服务
目前阿里云的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
|