Skip to content

深入理解 Docker:概念与命令详解

一、Docker 基础概念

Docker 是一个开放源代码软件,它用于创建、部署和运行应用程序,利用操作系统级别的虚拟化,其核心概念包括镜像、容器、网络和卷。

  1. 镜像(Images):Docker 镜像是由文件系统叠加而成,可以被执行(即运行一个容器)或者可以被分发。镜像提供了在完全相同的环境中运行应用程序的能力,它包含了运行应用程序所需要的所有内容,包括代码、运行时环境、库以及环境变量。

  2. 容器(Containers):容器是 Docker 镜像的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、安全的,并且都有自己的内存、CPU 和 I/O 资源。

  3. 卷(Volumes):卷是由 Docker 创建和管理的,可用于持久化存储 Docker 容器的数据。卷完全独立于容器生命周期,因此使用卷来存储数据可以在容器生命周期结束时保留数据。

  4. 网络(Networks):Docker 网络抽象的主要目的是在容器间实现隔离和通信。Docker 提供了多种网络模型,比如桥接网络、主机网络和覆盖网络等,以适应不同的使用场景。

二、Docker 基础构建组件:Dockerfile 和 docker-compose.yml

  1. Dockerfile:Dockerfile 是一种由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们可以自动化镜像创建过程,简化用户从头到尾的流程并极大的提高生产效率。

  2. docker-compose.yml:这是一个用于定义和运行多容器 Docker 应用的配置文件。通过 docker-compose.yml 文件,你可以一次性管理整个应用的服务,而不需要分别去管理每一个 Docker 容器。

三、Docker 常用命令

Docker 提供了丰富的命令行工具用于操作和管理 Docker 对象,包括镜像、容器、网络和卷。

  1. 镜像管理
  • docker images:列出本地主机上的所有镜像。
  • docker pull:从仓库拉取镜像到本地主机。
  • docker rmi:删除本地主机上的镜像。
  1. 容器管理
  • docker run:创建并启动一个新的容器。
  • docker start/stop:启动/停止一个已存在的容器。
  • docker ps:列出当前正在运行的容器,加上 -a 参数则可以列出所有的容器。
  • docker rm:删除一个或多个容器。
  • docker logs:获取容器的日志输出。
  • docker exec:在正在运行的容器中执行命令。
  1. 网络管理
  • docker network create/ls/rm:创建、列出和删除网络。
  1. 卷管理
  • docker volume create/ls/rm:创建、列出和删除卷。

此外,Docker 还提供了 docker build 用于从 Dockerfile 构建镜像,以及 docker compose up/down 用于管理由 docker-compose.yml 定义的应用。