docker的学习笔记(1)
就是将宿主机的某个目录,映射到容器中,作为数据存储的目录,我们就可以在宿主机对数据进行存储。数据卷(Data Volumes):容器内数据直接映射到本地主机环境
1、数据卷可以在容器之间共享和重用,本地与容器间传递数据更高效;
2、对数据卷的修改会立马有效,容器内部与本地目录均可;
3、对数据卷的更新,不会影响镜像,对数据与应用进行了解耦操作;
4、卷会一直存在,直到没有容器使用。
docker run 加参数 -v 用来挂载一个到多个数据卷到当前运行的容器中,使宿主机和容器之间共享一个目录,若本地路径不存在,docker也会自动创建
对于数据卷来说可以挂载目录,也可以挂载普通文件
挂载目录:创建容器并挂载目录(宿主机目录要是绝对路径)
注:不建议直接挂载文件故不演示
docker run -itd –name [dst容器名字] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]
需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门用来提供数据卷供其他容器挂载。
数据卷容器(Data Volume Containers):使用特定容器维护数据卷
简单点:数据卷容器就是为其他容器提供数据交互存储的容器
1.创建数据卷容器
2.其他容器挂载数据卷容器
注:数据卷容器本身不需要启动,若启动也可工作
1.创建数据卷容器
2.创建两个或以上的容器,并挂载数据卷容器
3.确认同时挂载成功
网络管理主要是两个方面: 端口映射和网络模式
默认情况下,容器和主机之间网络是隔离的,我们可以通过端口映射的方式,将容器中的端口,映射到主机的某个端口上。这样我们就可以通过主机的ip+port的方式来访问容器里的内容
参数 -P :随机映射的端口由docker随机分配,端口不会有冲突
默认随机映射
docker run -d -p image_name
打开一个普通的镜像,并查看网络状态
打开一个默认映射的镜像,并查看网络状态
效果显示
指定主机随机映射
~$ docker run -d -p [宿主机ip]::[容器端口] –name [容器名称]
指定端口映射
docker run -d -p [主机ip]:[主机端口]:[容器端口] –name [容器名字] [镜像名称]
指定多端口映射
docker run -d -p [主机端口1]:[容器端口1] -p [主机端口2]:[容器端口2] –name [容器名称] [镜像名称]
指定端口协议映射
docker run -d -p [主机ip]:[主机端口]:[容器端口]/udp –name [容器名称] [镜像名称]
基础命令
命令 | 简述 |
---|---|
connect | 将一个容器连接到一个网络 |
create | 创建一个网络 |
disconnect | 从网络断开一个容器 |
inspect | 在一个或多个网络上显示详细信息 |
ls | 网络列表 |
prune | 删除所有未使用的网络 |
rm | 删除一个或多个网络。 |
inspect | 查看网络内部信息 |
port | 查看网络端口信息 |
1.host模式
众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
2.container模式
在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。
3.none模式
这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
4 bridge模式
bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。