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. 避免源码泄露