我们在创建容器时,可以通过-v参数来挂载一个数据卷,而挂载数据卷有两种方式:
挂载到docker管理的数据卷
案例:创建一个nginx容器,修改容器内的html目录下的index.html内容
需求说明:在这个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。
步骤:
- 创建容器并挂载数据卷到容器内的html目录
docker run \ # 创建并运行容器
--name mn \ # 给容器起个名字叫mn
-v html:/root/html \ # 把html数据卷挂载到容器内的/root/html这个目录中
-p 8280:80 \ # 把宿主机的8080端口映射到容器内的80端口
-d nginx \ # 镜像名称为nginx
-
查看数据卷详细信息,找到挂载目录位置
docker volume inspect html
image.png - 进入html数据卷所在位置,并修改html内容
cd /var/lib/docker/volumes/html/_data 注:获取到该目录之后可以使用高级控制台工具打开,推荐FinalShell工具
挂载到宿主机目录
案例:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器
注:这种方式其实就像是安装某软件时,配置安装目录
- 加载MYSQL镜像
- 创建目录/tmp/myql/data
mkdir -p tmp/myql/data - 创建目录/tmp/myql/conf,将hmy.cnf文件上传至/tmp/myql/conf(hmy.cnf是数据库的配置文件)
mkdir -p tmp/myql/conf - 查找DockerHub资料,创建并运行MySql容器:
docker run --name mysql
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-v /tmp/myql/data:/var/lib/mysql \
-v /tmp/myql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-d mysql:5.7.25