docker基础知识
1. 容器数据卷
1.1 什么是容器数据卷
docker的理念是把应用和环境打包成镜像,方便我们去运行容器。这样引出了一个问题,如果容器没有打包成新的镜像,容器删除了,则容器的数据就会丢失。所以需要同步容器内的数据到其他地方,对应的解决方案就是容器卷技术,通过容器卷技术可以保证容器内的数据同步至本地,让容器间共享数据。
1.2 容器数据卷的作用
容器卷可以保证容器数据的持久化和同步操作,容器间也可以进行数据共享。
容器卷特点:
- 数据卷可在容器之间共享或重用数据。
- 数据卷中的数据更改实时生效。
- 数据卷中的更改不会包含在镜像的更新中。
- 数据卷的生命周期一直持续到没有容器使用它为止。
1.3 容器数据卷常用命令
# 宿主机和容器之间映射添加容器卷 -v 可以挂载多个
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
# 上面的命令是默认的可读可写,容器内可以读可以写
# 容器内可读可写
# docker run -it -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
# 容器内只读,宿主机写的内容会同步到容器内
# docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
# 查看数据卷是否挂载成功 Mounts下
docker inspect 容器id
# 具名挂载、匿名挂载、指定路径挂载
-v 容器内目录 # 匿名挂载
-v 卷名:容器内目录 # 具名挂载
-v 宿主机绝对路径目录:容器内目录 # 指定路径挂载
# 卷的继承和共享
# 1,容器1完成和宿主机的映射
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
# 2,容器2继承容器1的卷规则
docker run -it --volumes -from 父类 --name=名称 镜像名
复制代码
1.4 容器数据卷简单案例
- mysql数据持久化
# 下载mysql镜像
docker pull mysql:5.7
# 启动容器
# -d mysql:tag
# -d 后台运行
# -p 端口映射
# -v 卷挂载
# -e 环境配置
# --name 容器命名
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
#navicat测试连接成功
复制代码
navicat新建test库,查看同步情况
删除容器,查看本地数据
2. dockerFile
2.1 什么是dockerFile
dockerfile是用来构建docker镜像的构建文件(命令参数脚本),其中包含了许多条指令,每条指令构件一层镜像,最后汇总bulid用户自定义镜像。
自定义镜像结构图如下: