可以创建一个数据容器,也就是再创建容器是指定这个容器的数据盘,然后让其他容器可以使用这个容器作为他们的数据盘,有点像继承了这个数据容器指定的数据盘作为数据盘。
首先创建一个数据容器命名为newnginx
docker create -v /mnt -it --name newnginx docker.io/nginx /bin/bash
利用此数据容器容器运行一个容器nginx1,在数据目录/mnt 下创建一个文件
docker run --volumes-from newnginx --name nginx1 -it docker.io/nginx /bin/bash
利用数据容器在创建一个容器nginx2,查看数据目录下容器nginx1创建的文件依旧存在,同理在nginx2的/mnt下创建文件,其他基于数据容器运行的新容器也可以看到文件
3.3 数据盘管理:
在删除容器时,docker默认不会删除其数据盘。
docker volume ls #查看数据盘
docker volume ls -f dangling=true #查看未被容器使用的数据盘
docker volume rm VOLUME NAME #删除数据盘
如果想要删除容器时,同时删除掉其数据盘,那么可以使用-v参数。
docker rm -v newnginx
四、网络
docker提供几种网络,它决定容器之间和外界和容器之间如何去相互通信。
docker network ls #查看网络
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。
4.1 bridge桥接网络
除非创建容器的时候指定网络,不然容器就会默认的使用桥接网络。属于这个网络的容器之间可以相互通信,不过外界想要访问到这个网络的容器呢,需使用桥接网络,有点像主机和容器之间的一座桥,对容器有一点隔离作用。实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。
4.2 host主机网络