目录
[一.使用 nginx 镜像创建并启动容器(后台运行)](#一.使用 nginx 镜像创建并启动容器(后台运行))
前言:
今天所展现的是Docker容器化技术的相关场景化操作实战,以及进行网络配置时的几种方式的实际应用。
一.使用 nginx 镜像创建并启动容器(后台运行)


二.容器的创建,启动与停止
1.使用create创建容器并查看

2.启动容器并查看状态

3.停止容器并查看状态

三.进行容器交互
进行'ls'命令查看,并查看文件'os-release'

四.关于宿主机与容器之间的文件互相复制
1.从宿主机复制文件到容器

2.从容器复制文件到宿主机

五.容器的迁移(导入导出)
1.容器的导出

2.容器的导入

注意,导入先前容器打包成的tar包之后,不会创建容器,而是生成镜像。
说明题:export/import 和 save/load 有什么区别?
export/import实现的是导出/导入容器整体,save/reload实现的则是导出/导入镜像
六.下线与清理容器
1.删除指定容器


注意,这里正规操作应该是先停止容器,再进行删除,实在需要强制删除,可以在rm后添加f参数。
2.批量停止容器
首先是awk相关操作(包含筛选)

另一种是直接使用docker stop后面加所有容器

3.批量删除容器

4.批量删除镜像
这里我只删除了某个特定的镜像,采取了grep进行筛选。


安全说明:
为什么生产环境不建议直接执行"删除所有容器/镜像"?
1.删除所有容器/镜像包含其所有配置和依赖,如果涉及重要数据,极有可能丢失
2.假设部分容器/镜像涉及网络配置和多个库共用,极有可能造成生产混乱
接下来是网络模式部分:
七.使用默认模式(bridge模式)
1.使用bridge模式启动nginx
这里是基于nginx的随机映射

2.查看一下容器,检查相应的IP和端口映射

3.查看连接

思考:
1.为什么外部不能直接访问容器 IP?
因为bridge模式下容器的网桥是根据宿主机虚拟出来的,实际不存在,所以无法连接外网
2.bridge 模式下端口映射的作用是什么?
端口映射到宿主机之后,外网可以通过宿主机的IP以及这个端口去进行访问
八.使用host模式(高性能服务部署)
1.使用host网络模式启动nginx
在host模式下,容器与宿主机默认使用相同的ip和端口而并非独立,因此不会显示

2.查看连接

思考:
1.host 模式下,容器有没有独立 IP?
没有,与宿主机共用
2.host模式适用于什么类型的场景
公司内部的软件,网站等的架设和访问
3.host 模式的安全风险是什么?
因为与宿主机共用IP和端口,所以极有可能暴露宿主机信息
九.使用container模式(紧密耦合服务)
1.启动主容器
这里在创建时添加container参数去规定模式

2.查看主容器的网络命名空间

3.启动共享网络的辅助容器


4.查看并对比主辅容器的net设置
此为主

此为辅

可以观察到在container网络模式下这个参数是一致的,说明主辅容器共享了相同的IP和端口。
思考:
1.container 模式与 host 模式的区别?
container模式是后面的容器可以直接使用第一台容器(直接创建默认bridge模式)的IP和端口,而host模式是全部和宿主机使用一样的IP和端口
2.为什么称这种模式为 Sidecar(边车模式---)?
边车/挎斗,本意即是形容主容器和辅助容器的关系,他们互相独立却紧密结合,独立体现在个体,结合体现在共用IP和端口
十.自定义网络模式(多容器与指定IP)
1.创建自定义网络

2.在自定义网络中启动容器
这里添加network中的mynetwork配置参数去在刚才设置的指定IP中启动容器

查看可以看到刚才设置的mynetwork自定义网络模式已经在列表中。
思考:
1.为什么默认 bridge 不能指定 IP?
因为bridge模式仅支持自动分配
2.自定义网络适合什么场景?
比如说公司内部或者某团体内部使用容器或者其他技术需要内部共享,不外接的,可以使用
3.Docker 如何实现容器间二层通信?
docker在使用bridge网络模式去进行部署时,所有容器与宿主机完全隔离,互相之间却可以通过类似于虚拟交换机的虚拟桥接进行通信,这样就构成了二层网络通信
总结:
本次详细讲述了关于docker容器的相关增删改查操作,包括交互和迁移,另外还对四种网络部署模式进行了实战操作演示,希望对读者们有所帮助!