Skip to main content

Docker 题库

Docker 是一个开源的容器化平台,它允许开发人员将应用程序及其依赖项打包在轻量级的容器中,以便在不同的环境中轻松部署和运行。Docker 提供了一种标准化的方式来构建、部署和管理容器化应用程序。

Docker 是什么?​

Docker 是一个容器化平台,它允许将应用程序及其依赖项打包在轻量级的容器中,以便在不同的环境中轻松部署和运行。

Docker 有什么优点?​

Docker 的优点包括:

  • 可移植性:Docker 容器可以在不同的操作系统和基础设施上运行,无需修改应用程序代码。
  • 一致性:Docker 容器提供了一致的运行环境,无论在开发环境还是生产环境中,应用程序都能以相同的方式运行。
  • 隔离性:Docker 容器提供了进程级的隔离,每个容器都有自己的文件系统、网络和资源限制,避免了应用程序之间的冲突。
  • 高效性:Docker 容器启动速度快,资源占用少,可以在同一台服务器上运行多个容器,提高了资源利用率。
  • 版本控制:Docker 容器可以使用版本控制系统进行管理,方便跟踪和回滚应用程序的变更。

Docker 容器和虚拟机有什么区别?​

Docker 容器和虚拟机的主要区别在于虚拟化的层次不同。虚拟机是在硬件级别上进行虚拟化,提供了完整的操作系统环境,每个虚拟机都有自己的内核和系统资源。而 Docker 容器是在操作系统级别上进行虚拟化,共享宿主机的内核和系统资源,容器内的应用程序只看到自己的文件系统和资源限制。

如何构建 Docker 镜像?​

构建 Docker 镜像的常用方法是使用 Dockerfile,它是一个描述如何构建镜像的文本文件。Dockerfile 包含一系列指令,用于指定基础镜像、安装依赖项、配置环境变量等。可以使用 docker build 命令根据 Dockerfile 构建镜像。

如何运行 Docker 容器?​

可以使用 docker run 命令运行 Docker 容器,该命令接受镜像名称或 ID 作为参数,并可以指定容器的运行参数,如端口映射、环境变量等。

如何管理 Docker 容器?​

可以使用 docker container 命令管理 Docker 容器,包括查看容器列表、启动、停止、删除容器等操作。

如何实现容器之间的通信?​

容器之间可以通过网络进行通信,可以使用 Docker 的网络功能来实现容器之间的连接。Docker 提供了多种网络模式,如 bridge、host、overlay 等,可以根据具体需求选择合适的网络模式。

如何在容器中存储数据?​

容器中的数据可以存储在容器的文件系统中,但容器的生命周期是短暂的,当容器停止或删除时,数据也会被删除。为了持久化存储数据,可以使用 Docker 的数据卷或绑定挂载功能,将容器中的数据存储在宿主机的文件系统中。

Docker的核心技术是什么​

  • CGroup:用于限制和控制进程组(Process Group)对系统资源的使用。例如 CPU、内存、磁盘 I/O、网络带宽等。
  • Namespace:用于隔离进程资源。
  • UnionFS:用于构建镜像的分层结构。
    • Docker 镜像由多个只读层(Layer)组成,每个层都包含了文件和文件系统的变更。
    • 当在当前镜像基础上构建新镜像的时候,会在当前基础镜像上添加新的层,而不是复制整个层。从而实现优雅的复用。

如何理解Docker镜像​

如何理解Docker网络​

多阶段编译​

多阶段编译是docker构建中的一种技术,支持在dockerfile中进行多个阶段的构建来构成最终的镜像。

好处:

  1. 大大减少镜像体积。避免临时数据或者编译阶段的数据造成镜像体积过大。
  2. 避免源码泄露