Docker学习笔记三:Docker数据卷与网络
一、数据卷 – volume
Docker 容器内产生的数据默认都是存储在容器内部,当容器被删除后,容器内的数据也就被删除了。通常情况可以使用 docker cp命令进行数据拷贝和备份,这样不太方便,那么能不能让容器内产生的数据自动存储到宿主机呢?
毫无疑问,数据卷就是解决容器内数据持久化问题的。数据卷就是将容器内的数据保存到宿主机中,并且完全独立于容器的生命周期,即Docker不会在容器删除时删除其挂载的数据卷。
如何使用数据卷呢?
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
– privileged=true 该命令使容器内root拥有真正的root权限(默认情况下是普通用户权限)
数据卷的特点
- 数据卷可以在容器之间共享或重用数据
- 卷中的更改可以直接实时生效
- 数据卷的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
数据卷的读写规则映射
该规则只是针对容器而言,宿主机对数据卷是拥有读写权限的。
- 读写(默认)
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
- 只读:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
数据卷的继承和共享
- 命令:
docker run -it --privileged=true --volumes-from 父类 --name u2 镜像名
二、Network
Docker容器实例内默认网络IP是可能发生变化的。那么容器之间的通信就不能使用 IP:PORT 方式进行。
常用命令
docker network ls:查看网络docker network inspect XXX网络名字:查看网络源数据docker network rm XXX网络名字:删除网络docker network create XXX网络名字:创建网络
网络模式类型
-
bridge – 默认

Docker在宿主机上虚拟出一个Docker容器网桥(docker0),Docker启动容器时,会根据docker0的网段分配给容器一个IP地址(Container-IP),并且docker0为每个容器的默认网关。此时同一宿主机内的容器都接入同一个网桥中,那么容器之间可以通过Container-IP直接通信。 -
host
容器不会获得一个独立的Network Namespace,而是和宿主机公用一个,即容器不会虚拟出自己的网卡而是使用宿主机的IP和端口。

-
none
不会为容器进行任何的网络配置,即没有网卡、IP、路由等信息。 -
container
新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

若是指定共享容器停止运行了,那么该容器的IP也不存在了。 -
自定义网络
上诉模式中,不同容器间的通信只能依靠IP地址,但这是不可靠的,那么有没有一种方式让容器可以通过服务名进行通信呢。自定义网络就可以实现这个需求。自定义网络本身维护了主机名和IP的对应关系。
使用步骤:
- 创建自定义网络:
docker network create muci_net - 运行容器并指定网络模式:
docker run -d --network muci_net --name xxx 镜像名
- 创建自定义网络:
本文是Docker学习笔记的第三部分,主要探讨Docker数据卷(volume)的使用和网络配置。数据卷提供了容器数据持久化的方法,可以在容器间共享和重用,且不受容器生命周期影响。介绍了数据卷的创建、特点以及读写规则。同时,文章还讲解了Docker的网络模式,包括默认的bridge模式、host模式、none模式和container模式,以及如何创建自定义网络以实现容器间通过服务名通信。
2182

被折叠的 条评论
为什么被折叠?



