Docker容器数据卷详解(共享数据)

x33g5p2x  于2021-11-27 转载在 Docker  
字(1.5k)|赞(0)|评价(0)|浏览(595)

一、数据卷(Data Volumes)

原理:将容器内部的配置文件目录,挂载到宿主机指定目录下

它可以提供很多有用的特性:

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立马生效
  • 对数据卷的更新,不会影响到镜像
  • 数据卷默认 会一直存在,即使容器被删除

1.作用

①修改配置文件例如,nginx. conf /usr/local/nginx/ conf/nginx.conf —> /container_ nginx/ conf/nginx. conf
②容器内部产生的日志,如何收集将容器内部存方日志文件的目录挂载到宿主机指定目录下/container_ nginx/ log/access_ 1og/access_ log
③传入变量挂载到宿主机在宿主机上添加变量内容,将变量放入共享目录,在容器中/etc/profile 直接加载就可以
export xxdir=/data/data1/xx.

2.创建数据卷

  1. 宿主机目录 /var/www 挂载容器中的 /data1
  2. docker run -it -v /var/www/html:/data1 --name test1 centos:7 /bin/bash

验证:在容器目录下创建新文件,去宿主机上验证是否同步

验证:在宿主机上修改此文件,去容器目录下验证是否同步修改

  • exit 和 stop 两种退出方式不同,返回状态也不同

二、数据卷容器

1.新建数据卷容器

  1. docker run -it --name xjj -v /data1 -v /data2 centos:7 /bin/bash
  2. 注:-v 后面接的共享数据真实存放路径
  • 用容器db1测试数据卷容器是否可用
  1. [root@xjj html]# docker run -it --name db1 --volumes-from xjj centos:7 /bin/bash
  2. [root@3fea8199ee77 /]# ls
  3. anaconda-post.log data2 home media proc sbin tmp
  4. bin dev lib mnt root srv usr
  5. data1 etc lib64 opt run sys var
  6. [root@3fea8199ee77 /]# touch data1/1.txt
  7. [root@3fea8199ee77 /]# touch data2/2.txt
  8. 验证:
  9. [root@xjj docker]# docker run -it --name xjj -v /data1 -v /data2 centos:7 /bin/bash
  10. [root@441165bdb9ed /]# ls /data1
  11. 1.txt
  12. [root@441165bdb9ed /]# ls /data2
  13. 2.txt

随便创建一个1.txt 2.txt文件就可以查看效果了

效果:上面例子中 db1 通过 xjj 来共享了数据

三、把宿主机的文件传入到容器内部

  1. #linux 复制:
  2. cp 原文件路径 目标文件路径
  3. #容器:
  4. docker cp /opt/abc 容器ID:/opt/abc

四、在宿主机环境执行容器内命令

  1. docker exec -it 容器ID /bin/bash -c 'nginx'
  2. docker exec 容器ID/容器name 执行的命令

五、暴露端口

  1. -p 自定义端口(宿主机端口: 容器内端口)
  2. -P 随机端口 (-P 49153起始 4915365535 )
  3. docker run -itd -p 333:80 nginx /bin/bash (docker 0)
  4. docker run- itd -P nginx /bin/bash

六、自定义网络固定IP

  1. docker network create --subnet=172.18.0.0/16 mynetwork
  2. docker run - itd --name test2 --het mynetwork --ip 172.18.0. 100 centos: latest /bin/bash

相关文章

最新文章

更多