Skip to main content

容器化

容器化

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(网络地址转换), 架构如图

docker bridge network

  • 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 可以在多个容器中共享数据,容易备份迁移