docker数据管理与网络通信之数据卷与数据卷容器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker数据管理与网络通信之数据卷与数据卷容器相关的知识,希望对你有一定的参考价值。

管理Docker容器中数据主要有两种方式:数据卷和数据卷容器。

数据卷

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

1、创建数据卷

在docker run 命令中使用-v选项可以在容器内创建数据卷。多次使用-v选项可创建多个数据卷。使用--name选项可以给容器创建一个友好的自定义名称。

下面使用centos镜像创建一个名为xxy的容器,并且创建两个数据卷分别挂载到/data1与/data2目录上

docker pull centos       //下载镜像
docker run -d -v /data1 -v /data2 --name xxy centos
6f2307a84693aa1bf1bff46858e9f47820be7262c3181167779135c4035bad13
2、挂载主机目录作为数据卷

用centos镜像创建一个名为xxy1的容器,将宿主机/var/www目录挂载到容器的/data1目录上

docker run -v /var/www:/data1 --name xxy1 -it centos /bin/bash

cd /data1
touch test123
exit      //容器的/data1目录下创建test123文件

cd /var/www
ls            //宿主机对应目录下也能看到test123文件

技术分享图片

数据卷容器

数据卷容器就是一个普通的容器,专门提供数据卷给其他容器挂载使用

创建数据卷容器xx,其中所创建的数据卷分别挂载到了/data1与/data2目录上,使用--volumes-from来挂载xx容器中的数据卷到新的容器,新的容器名为xx1

docker run --name xx -v /data1 -v /data2 -it centos /bin/bash    //创建容器xx

docker run -it --volumes-from xx --name xx1 centos /bin/bash      //创建新容器xx1,挂载xx容器的数据卷
cd data1
touch file
ls
exit         //在xx1数据卷/data1目录下创建一个文件file

docker exec -it xx /bin/bash
cd data1
ls              //在xx容器中的/data1目录下可以查看到,需要开启xx和xx1两个容器才可登陆xx容器

技术分享图片
技术分享图片

端口映射

Docker提供端口映射机制来将容器内的服务提供给外部网络访问,是指上就是将宿主机的端口映射到容器中,使得外部网络访问宿主机的端口便可访问容器内的服务

实现端口映射,需要在运行docker run 命令时使用-P(大写)选项实现随机映射,Docker会随机映射一个端口范围在49000~49900的端口到容器内部开放的网络端口

docker run -d -P httpd:centos       //可使用docker ps -a查看到本机32768端口映射到了容器中的80端口

可使用-p(小写)指定要映射的端口

docker run -d -p 49280:80 httpd:centos

docker ps -a

技术分享图片

容器互联

简单说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息

1、创建源容器

docker run -d -P --name qw1 -it httpd:centos /bin/bash

2、创建接收容器,使用--link指定连接容器以实现容器互联

docker run -d -P --name qw2 --link qw1:qw1 -it httpd:centos /bin/bash

3、测试容器互联
进入容器使用ping命令查看容器是否能互相连通

docker exec -it qw2 /bin/bash
ping qw1

技术分享图片

以上是关于docker数据管理与网络通信之数据卷与数据卷容器的主要内容,如果未能解决你的问题,请参考以下文章

Docker 数据卷与容器互联

#云原生征文# docker数据卷与DockerFile学习

docker数据卷

Kubernetes进阶之hostpath及emptyDir数据卷

Docker之七---Docker存储卷与容器卷详解

如何将映像创建的卷与 docker-compose 指定的命名卷链接?