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

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

一、数据卷(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.创建数据卷

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

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

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

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

二、数据卷容器

1.新建数据卷容器

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

验证:
[root@xjj docker]# docker run -it --name xjj -v /data1 -v /data2 centos:7 /bin/bash 
[root@441165bdb9ed /]# ls /data1
1.txt
[root@441165bdb9ed /]# ls /data2
2.txt

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

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

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

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

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

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

五、暴露端口

-p  自定义端口(宿主机端口: 容器内端口)
-P  随机端口 (-P 49153起始   49153到65535 )
docker run -itd -p 333:80 nginx /bin/bash (docker 0)
docker run- itd -P nginx /bin/bash

六、自定义网络固定IP

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

相关文章