Docker数据管理

目录

数据卷(Data Volumes)

容器和宿主机的数据共享

1.拉取centos镜像

2.创建容器

3.输入内容验证

经过宿主机,实现容器间的数据共享

1.创建a2容器,并且挂载同一个宿主机目录

2.输入内容验证

挂载文件

1.创建a2容器,并且挂载文件

2.只读操作

数据卷容器

1.创建a1容器作为数据卷容器

2.挂载a1容器的数据卷到新的容器a2,a3

3.进入a1容器,并输入内容

4.进入a2 a3容器验证

容器互联


数据卷(Data Volumes)

  • 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于Linux下对目录进行的mount操作

容器和宿主机的数据共享

1.拉取centos镜像

docker pull centos:7

2.创建容器

宿主机目录/var/www 挂载到a1容器中的/data

注意:宿主机本地目录的路径必须使用绝对路径。如果路径不存在,Docker会自动创建相应路径。

ls /var/www/html
docker run -id --name a1 -v /var/www/html:/data centos:7 bash  
#-v选项可以在容器内创建数据卷也会在宿主机创建目录

3.输入内容验证

docker exec -it a1 bash         #进入容器
echo '123456' > /data/jlh.txt   #输入内容到共享目录中
 
#宿主机上查看
cd /var/www/html
cat jlh.txt

经过宿主机,实现容器间的数据共享

1.创建a2容器,并且挂载同一个宿主机目录

宿主机目录/var/www 挂载到a2容器中的/mnt

docker run -id --name a2 -v /var/www/html:/mnt centos:7 bash
docker exec -it a2 bash

2.输入内容验证

#a2容器上输出
echo 'abcdef' > /mnt/zx.txt

#宿主机上查看
cd /var/www/html/
cat zx.txt

#a1容器上查看
cd /data/
cat zx.txt

挂载文件

1.创建a2容器,并且挂载文件

docker run -id --name a3 -v /var/www/html/zx.txt:/mnt/zx.txt centos:7 bash
docker exec -it a3 bash
cat /mnt/zx.txt
 
#宿主机共享目录
echo 'scj is shuaige!!' > /var/www/html/zx.txt

#a3容器共享目录下查看
cat /mnt/zx.txt

2.只读操作

docker run -id --name a4 -v /var/www/html/zx.txt:/mnt/zx.txt:ro centos:7 bash  #ro代表只允许只读操作

数据卷容器

不经过宿主机,实现容器间的数据共享

  • 如果需要在容器之间共享数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。

1.创建a1容器作为数据卷容器

docker run -id --name a1 -v /data1 -v /data2 centos:7 bash

2.挂载a1容器的数据卷到新的容器a2,a3

#使用 --volumes-from 来挂载 a1 容器中的数据卷到新的容器
docker run -id --name a2 --volumes-from a1 centos:7 bash
docker run -id --name a3 --volumes-from a1 centos:7 bash

3.进入a1容器,并输入内容

docker exec -it a1 bash
echo 'jlh' > data1/zx1.txt
echo 'zx' > data2/zx2.txt
exit   

4.进入a2 a3容器验证

#a2容器操作
docker exec -it a2 bash
ls data1
ls data2

#a3容器操作
docker exec -it a3 bash
ls data1
ls data2

容器互联

使用centos镜像

  • 默认情况下docker容器重新创建后,对应的容器IP地址可能会改变,这样如果两个容器之间通信就会变得非常麻烦,每次都要修改通信的IP地址
  • 容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息
#创建并运行接收容器取名a4,使用--link选项指定连接容器以实现容器互联
docker run -id --name a4 --link a3:xy101 centos:7 bash   #--link 容器名:连接的别名
 
docker exec -it a4 bash
ping a3
ping xy101

重启容器测试(重启后ip会发生改变)

相关推荐

  1. 5.Docker数据管理

    2024-07-23 05:22:04       26 阅读

最近更新

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

    2024-07-23 05:22:04       103 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 05:22:04       114 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 05:22:04       93 阅读
  4. Python语言-面向对象

    2024-07-23 05:22:04       99 阅读

热门阅读

  1. Git基本使用

    2024-07-23 05:22:04       28 阅读
  2. 深入理解Spring Boot中的Fastjson

    2024-07-23 05:22:04       24 阅读
  3. 【Golang 面试基础题】每日 5 题(四)

    2024-07-23 05:22:04       21 阅读
  4. vue中预览视频,word,pdf,xlsx

    2024-07-23 05:22:04       28 阅读
  5. service

    service

    2024-07-23 05:22:04      20 阅读
  6. vue3 页面引入组件

    2024-07-23 05:22:04       26 阅读
  7. NotebookApp Error unpacking user from cookie

    2024-07-23 05:22:04       25 阅读
  8. PHP基础语法(三)

    2024-07-23 05:22:04       30 阅读