目录
1、Docker容器删除后,在容器中的数据还存在吗? 不存在
2、Docker容器和外部机器可以直接交换文件吗? 不能直接交换文件,但可以间接交换文件
思考:
1、Docker容器删除后,在容器中的数据还存在吗? 不存在
2、Docker容器和外部机器可以直接交换文件吗? 不能直接交换文件,但可以间接交换文件
3、容器之间怎么进行数据交互?
数据卷概念
数据卷:当宿主机中的一个目录和容器中的一个目录挂载(绑定)后,我们称宿主机中的这个目录为数据卷。
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
数据卷作用
- 容器数据持久化
- 外部机器和容器间接通信
- 容器之间数据交换
配置数据卷
创建启动容器时,使用-v参数设置数据卷
docker run ....... -v 宿主机目录(文件):容器内目录(文件) ....
示例:docker run -it --name=c1 -v /root/data:/data_container mysql:5.7 /bin/bash
注意事项:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷 (一个-v挂一个,想要多个可以加多个-v)
一个数据卷挂多个容器
数据卷容器
容器C3和数据卷挂载后,C1和C2又和C3挂载了,那么相当于C1、C2和数据卷挂载了,即使C3损坏了,C1、C2还可以和数据卷通信。我们称C3为数据卷容器。
配置数据卷容器
1、创建启动C3数据卷容器,使用-v参数设置数据卷
docker run -it --name=c3 -v /volume mysql:5.7 /bin/bash
#不用设置数据卷目录
2、创建启动c1 c2容器,使用--volumes-from参数设置数据卷
docker run -it --name=c1 --volumes-from c3 mysql:5.7 /bin/bash
docker run -it --name=c2 --volumes-from c3 mysql:5.7 /bin/bash
端口映射
Docker应用部署
一、部署Mysql
1、搜索mysql镜像
docker search mysql
2、拉取mysql镜像
docker pul7 mysq1: 5.6
3、创建容器,设置端口映射、目录映射
#在/root目录下创建mysq1目录用于存储mysq1数据信息
mkdir ~/mysq1
cd ~/mysq1
docker run -id \
-p 3307 : 3306 \
--name=c_mysql \
-v $pwd/conf:etc/mysql/conf.d \-v $pwd/logs:/logs \
-v $pwd/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \
lmysq1:5.6