一:数据拷贝
# 容器和宿主机之间的数据拷贝
# //守护进程的形式启动ubuntu镜像,容器名myub
# docker run -itd --name myub ubuntu:latest bash
# docker ps //查看running状态的容器
# docker exec -it myub bash //进入myub容器内部
# pwd //显示当前路径
# exit //退出容器
# vi a.txt //编辑a.txt文件
# cat a.txt //显示a.txt文件内容
docker cp ./a.txt myub:/ //将宿主机中a.txt拷贝到myub容器根目录
# docker exec -it myub bash //进入myub 容器内部
# ls
# echo nihao,shijie > b.txt //将内容重定向到b.txt文件中
# exit //退出容器
docker cp myub:/b.txt ./ //将myub 容器根目录下的b.txt文件拷贝到宿主机根目录下
# ls
# cat b.txt //显示a.txt文件内容
二:数据卷和使用
数据卷:宿主机的存储目录, 要将目录中的数据和docker容器进行数据共享
# 一、挂载的时机:
# 1.在创建容器的时候挂载 docker create
# 2.创建并启动容器的时候 docker run
# 二、数据卷挂载参数 -v, --volume list
# 1.挂载目录举例:
# docker run -itd --name ubuntu -v 宿主机路径:容器路径 ubuntu bash
docker run -itd --name myub -v /home/itcast/docker_data_dir/:/myhost_dir ubuntu bash
# 宿主机路径: 一定要写绝对路径, 否则会映射失败
# 容器路径: 可以随便写, 如果不存在会自动创建
# 2.挂载文件举例:
# docker run -itd --name ubuntu -v 宿主机路径/文件:容器路径/文件(文件可以重命名) ubuntu bash
docker run -itd --name myub -v /home/itcast/docker_data_dir/a.txt:/myhost_dir/hello.txt ubuntu bash
# 三、通过-v进行数据卷挂载, 默认是权限是读写,修改成只读权限:ro
# docker run -itd --name ubuntu -v 宿主机路径:容器路径:ro ubuntu bash
docker run -itd --name myub -v /home/itcast/docker_data_dir/:/myhost_dir:ro ubuntu bash
三:数据卷容器和使用
数据卷容器:就是一个普通的容器, 在这个容器中提供了一个挂载目录(共享目录)
1.创建数据卷容器:
# 使用的参数 -v
# 数据卷容器是不是运行状态都可以, 只要存在就可以
docker run -itd --name container -v /backup ubuntu bash
# -v /backup: 在数据卷容器container创建了一个映射目录
# 被创建出的 container 容器就叫数据卷容器
2.数据卷容器的挂载使用
# 其他容器挂载数据卷容器
#--volumes-from list Mount volumes from the specified container(s)
# 容器1 test1
# docker run -itd --name test1 --volumes-from 数据卷容器的名字 ubuntu bash
docker run -itd --name test1 --volumes-from container ubuntu bash
# 容器2 test2
# docker run -itd --name test2 --volumes-from 数据卷容器的名字 ubuntu bash
docker run -itd --name test2 --volumes-from container ubuntu bash
- 创建数据卷容器并和宿主机映射
#容器删了以后数据就没了,解决方案:
#创建数据卷容器的时候让宿主机文件路径和数据卷容器共享路径进行映射
docker run -itd --name container -v /home/itcast/test:/backup ubuntu bash
四:数据卷容器数据备份
# 1. 创建数据卷容器
docker run -itd --name container -v /backup ubuntu bash
# 2. 创建挂载数据卷容器的容器 - test1, test2
docker run -itd --name test1 --volumes-from container ubuntu bash
docker run -itd --name test2 --volumes-from container ubuntu bash
# 3. 进入到test1或者test2对backup目录进行写操作
# 数据备份:
# 1. 创建一个用于数据备份的容器, 数据从数据卷容器中备份到宿主机
# - 备份容器需要挂载到数据卷容器 --volumes-from
# - 备份容器需要和宿主机有映射关系 -v
docker run -itd --name temp --volumes-from container -v /home/go/data:/xxx ubuntu bash
# 2. 进入到备份容器temp中
docker exec -it temp bash
# 3. 在备份容器中有两个特殊目录:
# - /backup: 存储了数据容器共享的数据内容
# - /xxx: 和宿主机是映射关系
# 需要将/backup中的内容拷贝到/xxx中
# 精简备份容器操作流程,执行完备份以后退出,自动删除
docker run -itd --rm --name temp --volumes-from container -v /home/go/data:/xxx ubuntu tar zcvf /xxx/backup.tar.gz /backup
# zcvf中 z:gz j:bz2 c:压缩 x:解压 v:打印参数 f:指定压缩包
tar zxvf back.tar.gz //解压
五:备份数据还原到数据卷容器
# 假设数据卷容器中的数据没有了, 从宿主机恢复
# 数据恢复:
# 1. 创建一个用于数据恢复的容器, 数据从数据卷容器中备份到宿主机
# - 备份容器需要挂载到数据卷容器 --volumes-from
# - 备份容器需要和宿主机有映射关系 -v
docker run -itd --name temp --volumes-from container -v /home/go/data:/xxx ubuntu bash
# 2. 进入到备份容器temp中
docker exec -it temp bash
# 3. 在备份容器中有两个特殊目录:
# - /backup: 存储了数据容器共享的数据内容
# - /xxx: 和宿主机是映射关系
# 需要将/xxx目录中备份是数据, 拷贝到/backup中
# 精简备份容器操作流程
docker run -itd --rm --name temp --volumes-from container -v /home/go/data:/xxx ubuntu tar zxvf /xxx/backup.tar.gz -C /
网友评论