容器化
容器化
docker, docker compose那一套, 感觉大家都很熟了
八股例:
2. Docker 的架构组件有哪些?
问: 描述 Docker 的主要架构组件。
答: Docker 的主要架构组件包括 Docker Client、Docker Daemon、Docker Registry 和 Docker 镜像。Client 用于与 Daemon 通信,Daemon 负责构建、运行和管理容器,Registry 存储和分发镜像。
3. 什么是 Docker 镜像和容器?
问: 解释 Docker 镜像和容器之间的区别。
答: Docker 镜像是一个只读的模板,用于创建容器。容器是镜像的运行实例,具有独立的文件系统和资源隔离。
4. 如何使用 Docker Compose?
问: Docker Compose 的作用是什么?如何使用它?
答: Docker Compose 是一个工具,用于定义和运行多容器 Docker 应用。通过 docker-compose.yml
文件 定义服务、网络和卷,使用 docker-compose up
命令启动应用。
5. Docker 如何管理网络?
问: 描述 Docker 的网络管理方式。
答: Docker 提供多种网络驱动,包括 Bridge、Host、Overlay 和 None。Bridge 是默认网络,用于单机容器通信;Overlay 网络用于跨主机通信。
6. 什么是 Docker Volume?
问: 解释 Docker Volume 的作用及其使用场景。
答: Docker Volume 用于持久化和共享容器数据。它独立于容器生命周期,适用于需要持久化数据或在多个容器间共享数据的场景。
7. 如何优化 Docker 镜像大小?
问: 列举一些优化 Docker 镜像大小的方法。
答: 优化 Docker 镜像大小的方法包括:使用轻量级基础镜像、多阶段构建、清理不必要的文件和缓存、合并 RUN 指令。
8. Docker 的安全性如何保障?
问: 描述 Docker 的安全机制。
答: Docker 提供多层次的安全保障,包括命名空间隔离、控制组资源限制、镜像签名验证和安全扫描。定期更新和最小化容器权限也是重要的安全措施。
容器网络:
docker 网络模式:
- bridge (默认) 使用linux netns创建bridge, 容器和宿主机可以互ping, 容器间只能通过ip(并且ip动态变化), 需要NAT(网络地址转换), 架构如图
- host 直接共享宿主机网络, 不需要映射端口(-p也会被忽略), 不需要NAT
- none 禁用网络
用户自定义网络
# 创建网络
docker network create my-net
# 连接已有容器到网络
docker network connect my-net <container name>
# 创建 时指定网络(此时不会连bridge)
docker run -it --rm --network my-net <image name> <command> -h<container name>
自定义网络的容器可以通过容器名相互访问, 使用docker 内部DNS
同理 disconnect 断开连接
docker 存储
-
bind mount 主机docker双向映射
-
volume 在主机文件系统分配一块专有存储, 由docker管理, 与主机隔离, 非docker进程不能修改
- 命名卷是通过显式名称创建和使用的卷
-
tmpfs mount 仅存在容器内存
bind mount: 配置文件, 源代码, 编译目录
volume 可以在多个容器中共享数据,容易备份迁移