-
Docker容器的数据卷
-
数据卷概念及作用
数据卷是宿主机中的一个目录或文件,当容器目录和数据卷绑定后,对方的修改会立即同步。
为什么使用数据卷?
不使用数据卷会有以下问题:docker容器删除后,在容器中产生的数据会随之销毁;docker容器无法和外部机器(注意是外部机器,不是宿主机)直接交换文件;容器之间数据交互比较棘手。
一个数据卷可以被多个容器挂载;一个容器也可以挂载多个数据卷。
数据卷作用:容器数据持久换;外部机器和容器间接通信;容器之间数据交换。
-
配置数据卷
-
创建启动容器时,使用-v参数 设置数据卷
docker run … -v 宿主机目录(文件):容器内目录(文件)…
注意事项:
1.目录必须是绝对路径;
2.如果目录不存在,会自动创建;
3.可以挂在多个数据卷
-
-
配置数据卷容器
-
多容器如何进行数据交换?
- 多个容器挂载同一个数据卷。缺点:容器多的时候挨个设置数据卷目录,操作麻烦。
- 数据卷容器来解决。
-
配置过程:
-
创建启动c3数据卷容器,使用-v参数 设置数据卷
docker run -it --name=c3 -v /volume redis:5.0 /bin/bash
注意:这里的-v 参数,冒号和左边的宿主机目录没有写,系统会默认创建一个
-
创建启动c1 c2容器,使用–volumes-from参数 设置数据卷
docker run -it --name=c1 --volumes-from c3 redis:5.0 /bin/bash
docker run -it --name=c2 --volumes-from c3 redis:5.0 /bin/bash
这样,c1和c2容器通过c3容器实现了三个容器挂载同一个数据卷。
-
-
-
-
Docker应用部署
-
MySql部署
-
搜索mysql镜像
- docker search 命令 相应版本信息去dockerHub上去找
-
拉取mysql镜像
- docker pull命令
-
创建容器
docker run -id -p 3307:3306 --name=mysql01 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
- -p 3307:3306 端口映射,将容器的3306端口映射到宿主机的3307
- -v PWD/conf:/etc/mysql/conf.d将宿主机当前目录下的conf/my.cof挂载到容器的etc/mysql/conf.d/my.cof,配置目录;这里的PWD/conf:/etc/mysql/conf.d 将宿主机当前目录下的conf/my.cof挂载到容器的etc/mysql/conf.d/my.cof,配置目录;这里的PWD/conf:/etc/mysql/conf.d将宿主机当前目录下的conf/my.cof挂载到容器的etc/mysql/conf.d/my.cof,配置目录;这里的PWD代表当前所在目录
- -v $PWD/logs:/logs 将宿主机当前目录下的/logs挂载到容器的/logs,日志目录
- -v $PWD/data:/var/lib/mysql 将宿主机当前目录下的/data目录挂载到容器的/var/lib/mysql,数据目录。
- -e MYSQL_ROOT_PASSWORD=123456 初始化root用户的密码
-
操作容器中的mysql
-
-
Tomcat部署
-
搜索Tomcat镜像
- docker search命令 相应版本信息去dockerHub上去找
-
拉取Tomcat镜像
- docker pull命令
-
创建容器
docker run -id --name=tomcat01 -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcat
- -p 8080:8080 端口映射
- -v $PWD:/usr/local/tomcat/webapps 将宿主机当前路径挂载到tomcat容器/usr/local/tomcat/webapps目录
-
部署项目
- 在当前目录下创建目录test,并在其内部创建index.html
- 在当前目录下创建目录test,并在其内部创建index.html
-
测试访问
- 浏览器访问,可以请求到
- 浏览器访问,可以请求到
-
-