docker推送备份

提交运行的容器成为镜像

生产环境一般使用 dockerfile. commit 的镜像不可控

1
2
3
4
5
6
7
8
docker run --name imwltest -h docker -dit -e TZ=Asia/Shanghai debian
# docker commit -a='作者' -m='备注' 运行时容器ID 新镜像名称
docker commit -a='imwl' -m='Test' imwltest imwl/test # 默认TAG: latest
docker commit -a='imwl' -m='Test' imwltest imwl/test:0.14

docker export imwltest > imwltest.tar # 导出容器

docker import imwltest.tar imwltest:test # 导入容器

1
2
3
4
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
imwl/test 0.14 69c1c6c58124 About a minute ago 114MB
imwl/test latest ad65438d599f 7 minutes ago 114MB

Docker Hub 账户 imwl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker login

docker push imwl/test:0.14
docker push imwl/test

docker tag flasky:latest imwl/flask:latest

docker push imwl/flask:latest




docker run --name flasky -d -p 8000:5000 imwl/flask:latest # -d 后台运行容器,并返回容器ID -p 端口映射(8000宿主机,5000容器端口)

# -P 随机端口映射
# -e TZ=Asia/Shanghai 指定时区

备份与还原

有些机密性,可以通过docker镜像备份和迁移实现

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
# docker save -o 备份镜像的名称  源镜像名称:tag版本
docker save -o imwltest.tar imwl/test:0.14

# 当前目录下 会有 imwltest.tar文件

# docker images
REPOSITORY TAG IMAGE ID CREATED
imwl/test 0.14 69c1c6c58124 27 minutes ago
imwl/test latest ad65438d599f 32 minutes ago

# docker rmi imwl/test:0.14
Untagged: imwl/test:0.14
Untagged: imwl/test@sha256:97b496724012eee3df3421edb2ab6edcd6115e42b8060c24ba06b51da466e0dd
Deleted: sha256:69c1c6c58124c56456a22c92a2e2125c9abc744f6acde379f5039779becbcc29

# docker images
REPOSITORY TAG IMAGE ID CREATED
imwl/test latest ad65438d599f 32 minutes ago

## 恢复
# docker load -i imwltest.tar
Loaded image: imwl/test:0.14

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
imwl/test 0.14 69c1c6c58124 32 minutes ago 114MB
imwl/test latest ad65438d599f 37 minutes ago 114MB
debian latest a8797652cfd9 2 weeks ago 114MB

私有仓库

Docker私有仓库内部用来存放镜像的仓库,具有更高的保密安全级别

搭建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# docker pull registry # 拉取私有仓库镜像
# docker run -di --name=myRegistry --restart=always -p 5000:5000 registry # 启动私有仓库容器
365d3d60c6741b95bd4c7c1ea7ab0d68f2f3ef62264b2beff3120d77f5c82a88
# wget http://207.246.103.127:5000/v2/_catalog # 本机IP地址 207.246.103.127
--2020-02-20 15:27:49-- http://207.246.103.127:5000/v2/_catalog
Connecting to 207.246.103.127:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20 [application/json]
Saving to: '_catalog'

_catalog 100%[=============================================================>] 20 --.-KB/s in 0s

2020-02-20 15:27:49 (2.54 MB/s) - '_catalog' saved [20/20]

# cat _catalog
{"repositories":[]}

## 因为仓库里还没有镜像,所以就是空的;

# cd /etc/docker
# "insecure-registries": ["207.246.103.127:5000"] 写入到 daemon.json文件 ## 信任私有仓库
# systemctl restart docker # 重启docker

测试

标记镜像为私有仓库的镜像
docker tag imwl/test 207.246.103.127:5000/debiantest

上传镜像到私有仓库
docker push 207.246.103.127:5000/debiantest