Docker 数据卷

容器与数据耦合的问题

  • 不便于修改:当我们要修改Nginx的html内容时,需要进入容器内部修改,很不方便。
  • 数据不可复用:在容器内的修改对外是不可见的。所有修改对新创建的容器是不可复用的。
  • 升级维护困难:数据在容器内,如果要升级容器必然删除旧容器,所有数据都跟着删除了

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

操作数据卷

基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

创建一个数据卷,并查看数据卷在宿主机的目录位置

创建数据卷

docker volume create html

查看所有数据卷

docker volume ls

查看数据卷详细信息卷

docker volume inspect html

挂载点

数据卷的作用:

将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

数据卷操作:

  • docker volume create 创建数据卷
  • docker volume ls  查看所有数据卷
  • docker volume inspect  查看指定数据卷的详细信息
  • docker volume rm  删除指定数据卷
  • docker volume prune  移除所有未使用的数据卷

挂载数据卷

创建容器时,可以通过 -v 参数来挂载一个数据卷到容器内某个目录

docker run \                # docker run :就是创建并运行容器
  --name mn \               # --name mn :给容器起个名字叫mn
  -v html:/root/html \      # -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中
  -p 8080:80                # -p 8080:80 :把宿主机的8080端口映射到容器内的80端口
  nginx                     # nginx :镜像名称

创建一个nginx容器,修改容器内的html目录内的index.html内容

创建容器时,挂载数据卷(如果宿主机文件系统中不存在volume数据卷,会自动被创建)

docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

 

查看html数据卷的位置

docker volume inspect html

进入该目录,修改文件

# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html

创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

目录挂载与数据卷挂载的语法是类似的:

-v [宿主机目录]:[容器内目录]
-v [宿主机文件]:[容器内文件]

在将本地mysql.tar文件上传到虚拟机,通过load命令加载为镜像

创建目录/tmp/mysql/data

mkdir -p /tmp/mysql/dat #多级目录创建

创建目录/tmp/mysql/conf

mkdir -p /tmp/mysql/conf #多级目录创建

hmy.cnf文件上传到/tmp/mysql/conf

去DockerHub查阅资料,创建并运行MySQL容器,要求:

挂载/tmp/mysql/data到mysql容器内数据存储目录

挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件

docker run \
 --name mysql \
 -e MYSQL_ROOT_PASSWORD=root \
 -p 3306:3306 \
 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
 -v /tmp/mysql/data:/var/lib/mysql \
 -d \
 mysql:5.7.25

所需资料:mysql.tar(

链接:https://pan.baidu.com/s/1YUqKAcfmsOFx_DwGHD__AQ
提取码:p9rh

)、

hmy.cnf(

链接:https://pan.baidu.com/s/1XYLtsyMSfNyNO8tU9dPTXg
提取码:jgsp

原文地址:https://www.cnblogs.com/WarBlog/p/15439923.html