深入理解 Docker:概念与命令详解
一、Docker 基础概念
Docker 是一个开放源代码软件,它用于创建、部署和运行应用程序,利用操作系统级别的虚拟化,其核心概念包括镜像、容器、网络和卷。
镜像(Images):Docker 镜像是由文件系统叠加而成,可以被执行(即运行一个容器)或者可以被分发。镜像提供了在完全相同的环境中运行应用程序的能力,它包含了运行应用程序所需要的所有内容,包括代码、运行时环境、库以及环境变量。
容器(Containers):容器是 Docker 镜像的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、安全的,并且都有自己的内存、CPU 和 I/O 资源。
卷(Volumes):卷是由 Docker 创建和管理的,可用于持久化存储 Docker 容器的数据。卷完全独立于容器生命周期,因此使用卷来存储数据可以在容器生命周期结束时保留数据。
网络(Networks):Docker 网络抽象的主要目的是在容器间实现隔离和通信。Docker 提供了多种网络模型,比如桥接网络、主机网络和覆盖网络等,以适应不同的使用场景。
二、Docker 基础构建组件:Dockerfile 和 docker-compose.yml
Dockerfile:Dockerfile 是一种由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们可以自动化镜像创建过程,简化用户从头到尾的流程并极大的提高生产效率。
docker-compose.yml:这是一个用于定义和运行多容器 Docker 应用的配置文件。通过 docker-compose.yml 文件,你可以一次性管理整个应用的服务,而不需要分别去管理每一个 Docker 容器。
三、Docker 常用命令
Docker 提供了丰富的命令行工具用于操作和管理 Docker 对象,包括镜像、容器、网络和卷。
- 镜像管理
docker images
:列出本地主机上的所有镜像。docker pull
:从仓库拉取镜像到本地主机。docker rmi
:删除本地主机上的镜像。
- 容器管理
docker run
:创建并启动一个新的容器。docker start/stop
:启动/停止一个已存在的容器。docker ps
:列出当前正在运行的容器,加上-a
参数则可以列出所有的容器。docker rm
:删除一个或多个容器。docker logs
:获取容器的日志输出。docker exec
:在正在运行的容器中执行命令。
- 网络管理
docker network create/ls/rm
:创建、列出和删除网络。
- 卷管理
docker volume create/ls/rm
:创建、列出和删除卷。
此外,Docker 还提供了 docker build
用于从 Dockerfile 构建镜像,以及 docker compose up/down
用于管理由 docker-compose.yml 定义的应用。