docker 数据卷

Docker数据卷是Docker中的一个核心机制,用于实现容器间数据的持久化和共享。它是宿主机上的一个特殊目录,可以供一个或多个容器使用。容器删除时,不会删除其挂载的数据卷,也不会存在类似的垃圾机制对容器存在的数据卷进行处理。

容器数据卷的特性:

  1. 持久性:Docker数据卷是在宿主机上创建的目录或文件系统,它独立于容器的生命周期。这意味着即使容器停止或删除,数据卷中的数据仍然会被保留,从而实现了数据的持久化存储。

  2. 共享性:数据卷可以在不同的容器之间挂载和复用,使得多个容器能够访问到相同的数据源。这种特性在微服务架构下的多容器协作中尤为重要,因为不同的服务或组件可能需要共享某些数据。

  3. 高效性:数据卷直接映射到宿主机的文件系统上,因此相对于使用bind mounts(绑定挂载)或者通过容器内部文件系统读写数据,具有更好的I/O性能。

  4. 实时性:对数据卷的修改会立即生效,无论是在容器内部还是在本地目录中对数据卷进行修改,都能实时反映到其他地方。

1、容器数据卷的挂载

1.1 匿名目录挂载

1 创建容器的只给一个地址,会将容器里面的地址挂载在宿主机下/var/lib/docker/volumes路径下生成

# 创建容器,匿名挂载
docker run -ti -d --name my_nginx -p 8000:80 -v /home/wuzhibin  nginx
# 查看容器信息
docker inspect my_nginx 

2 查看容器数据卷挂载,源件为容器中的数据件,目标卷为宿主机上的数据卷

3 在宿主机上新建一个文件

4 在宿主机的文件映射到容器中

1.2 指定目录挂载

1 指定目录挂载相当于容器中的目录挂载到宿主机的指定目录下

# 创建容器
docker run -ti -d --name my_nginx -p 8000:80 -v /home/wuzhibin:/home/wuzhibin  nginx
# 查看容器信息
docker inspect my_nginx 

2 查看宿主机的目录下的文件大小

3 查看容器中挂载卷的文件大小

两个卷的文件是一致的,不管哪个卷中的文件变化都会同步更新的

1.3 DockerFile 添加数据卷

一般我们构建镜像的都是通过DockerFile文件来构建镜像启动容器的,不会通过命令单独对容器进行数据卷的挂载的, 但是请注意Dockerfile 不能直接指定数据卷映射或挂载, 也就是说Dockfile的挂载只能是匿名挂载

# 数据卷挂载的Dockersfile命令
VOLUME ["/home/wuzhibin","/home/wuzhibin"]

完整的Dockerfile文件

# Dockerfile
#基准镜像
FROM nginx:latest
#作者信息
MAINTAINER "wuzhibin"
#工作目录
WORKDIR /usr/local/src/ 
#设置容器中要挂在到宿主机的目录
VOLUME ["/home/wuzhibin/nginx","/usr/local/nginx/html"]
CMD ["nginx", "-g","daemon off;"]

1 编译nginx镜像

# 新建的Dockerfile文件
vim Dokerfile
# 复制上面内容退出
# 编译docker镜像
docker build . -t my_nginx

2 查看编译的镜像

docker images

3 启动容器

docker run -ti -d --name my_nginx my_nginx

4 查看数据卷挂载情况

docker inspect my_nginx

2、数据卷容器

将一个容器的数据共享给一个挂载该容器的容器,就是数据卷容器。这个容器充当一个数据卷,其他挂载这个数据卷容器的容器之间数据共享。

1 运行数据卷容器

docker run --name=data_contain -v /home/wuzhibin:/home/wuzhibin -ti -d  nginx

2、启动需要挂载数据卷的容器1和容器2

docker run -it -d  --name=my_contain1 --volumes-from data_contain nginx
docker run -it -d  --name=my_contain2 --volumes-from data_contain nginx

3、数据卷中添加数据,其他容器中会同步

docker exec -ti data_contain bash
cd /hmoe/wuzhibin
echo hello world > 1.txt

4 查看其他容器的数据

其他的容器中都存在数据卷容器的文件

上一章:docker 的网络管理-CSDN博客

下一章:DockerFile-CSDN博客

相关推荐

  1. docker数据

    2024-03-28 16:30:01       60 阅读
  2. docker---数据

    2024-03-28 16:30:01       60 阅读
  3. Docker容器数据

    2024-03-28 16:30:01       41 阅读
  4. Docker 容器数据

    2024-03-28 16:30:01       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 16:30:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 16:30:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 16:30:01       82 阅读
  4. Python语言-面向对象

    2024-03-28 16:30:01       91 阅读

热门阅读

  1. Mac命令行查找SDK/JDK安装位置

    2024-03-28 16:30:01       39 阅读
  2. QT中实现log存储的四种方法

    2024-03-28 16:30:01       35 阅读
  3. python装饰器的作用

    2024-03-28 16:30:01       44 阅读
  4. vue3中provide和inject详解

    2024-03-28 16:30:01       44 阅读
  5. 使用Flask和Gunicorn部署Python Web应用到生产环境

    2024-03-28 16:30:01       42 阅读
  6. Linux实战笔记(六) SSH

    2024-03-28 16:30:01       37 阅读
  7. 12.2024

    12.2024

    2024-03-28 16:30:01      40 阅读