目录
一、容器的相关操作
1、将现有容器生成镜像
1、利用 docker run -itd [REPOSITORY:TAG] /bin/bash 打开一个镜像
2、利用 docker exec -it [IMAGE ID] /bin/bash 进入镜像
3、在镜像内创建测试文档或安装服务
4、利用 docker commit [REPOSITORY:TAG]\[IMAGE ID] [NEWREPOSITORY:TAG] 生成新的镜像
5、打开新镜像查看测试文档或服务是否存在
2、拷贝文件到容器
docker cp [FileName] [REPOSITORY:TAG]\[IMAGE ID]:[FilePath]
3、查看容器资源使用
docker top [REPOSITORY:TAG]\[IMAGE ID]
docker stats [REPOSITORY:TAG]\[IMAGE ID]
4、查看容器日志
docker logs [REPOSITORY:TAG]\[IMAGE ID]
--details 显示更为详细的日志信息
--follow(-f) 跟踪日志输出
--since 显示自某个开始时间的所有日志
--tail 仅列出最新的N条容器日志
--timestamps(-t) 显示时间戳
--until 显示到某个截止时间的所有日志
二、Docker网络基础
1、Docker容器网络模型
CNM高层架构
沙箱(SandBox):包含容器的网络栈配置,涉及容器的接口、路由表和DNS设置的管理
端点(Endpoint):将沙箱连接到网络
网络(Network):CNM并没有定义OSI模型中的网络层,这里的网络可以由Linux网桥、虚拟局域网(Virtual Local Area Network,VLAN)等来实现
CNM驱动接口
网络驱动(Network Drivers):Docker网络驱动提供网络运行的具体实现
IPAM(IP地址管理)驱动:Docker有一个内置的IP地址管理驱动
Docker本地网络驱动
bridge:桥接网络,这是默认的网络驱动程序
host:主机网络,通过该驱动容器可以使用主机的网络栈
overlay:该驱动组合使用本地Linux桥接网络和VxLAN技术,在物理网络架构之上叠加一个容器之间的通信连接
macvlan:该驱动使用macvlan桥接模式建立容器接口和主机接口之间的连接,为容器提供在物理网络中可路由的IP地址
none:表示关闭容器的所有网络连接。
选择Docker网络驱动的基本原则
用户自定义桥接网络最适合用于同一个Docker主机上运行的多个容器之间需要通信的场景
host网络最适用于当网络栈不能与Docker主机隔离,而容器的其他方面需要被隔离的场景
overlay网络适用于不同Docker主机上运行的容器需要通信的场景,或者多个应用程序通过Swarm集群服务一起工作的场景
macvlan网络适用于从虚拟机迁移过来的场景,或者容器需要像网络上的物理机一样,拥有独立MAC地址的场景。 第三方网络插件适用于将Docker与专用网络栈进行集成的场景
单主机与多主机的Docker网络
从覆盖范围上,可以将Docker网络划分为单主机的网络和跨主机的网络
Docker无论是在单主机上进行部署,还是在多主机的集群上部署,都需要和网络打交道
对于大多数单主机部署来说,可以使用网络在容器之间和容器与主机之间进行数据交换
由于单主机的能力有限,实际应用中多主机部署通常是很有必要的。
docker run命令的网络配置用法
使用选项--network设置Docker容器要连接的网络
默认Docker守护进程会为容器连接的每个Docker网络分配一个IP地址
通过选项--network启动容器时,可以使用--ip或--ip6选项明确指定分配给容器的IP地址
通过docker network connect命令将现有的容器连接到另一个不同的网络时,可以使用--ip或--ip6选项指定容器在该网络上的IP地址。
默认情况下,容器的MAC地址是基于其IP地址生成的
可以通过--mac-address选项为容器指定一个MAC地址
默认情况下,容器继承Docker守护进程的DNS设置
--dns选项为容器设置DNS服务器的IP地址
--dns-search选项为容器指定一个DNS搜索域,用于搜索非全称主机名
--hostname选项为容器指定自定义的主机名
发布端口和连接其他容器只在默认的桥接模式下工作
通过docker run命令创建容器时使用选项-p(--publish)或-P(--publish-all)来设置对外发布的端口
docker network命令的网络配置用法
docker network connect:将容器连接到指定的网络
docker network create:创建一个网络
docker network disconnect:断开容器与指定网络的连接
docker network inspect:显示一个或多个网络的详细信息
docker network ls:显示网络列表
docker network prune:删除所有未使用的网络
docker network rm:删除一个或多个网络。