Dockerfile、Image与Container三者的关系

什么是Dockerfile?
Dockerfile是一个用来构建Docker镜像的文本文件,其中包含了构建镜像所需的一系列指令与说明。可以把Dockerfile看作是一个构建脚本,通过它可以自动化地生成Docker镜像。
Dockerfile的基本结构通常包括四个部分:
- 基础镜像信息:使用FROM指令指定一个基础镜像,这是构建新镜像的起点
- 维护者信息:使用MAINTAINER指令指定镜像的维护者信息
- 镜像操作指令:包括RUN、CMD、EXPOSE、ENV等指令,用于在基础镜像上进行各种操作
- 容器启动指令:使用CMD或ENTRYPOINT指令指定容器启动时要执行的命令
简单比喻:Dockerfile就像是大楼的设计蓝图,定义了如何构建整个项目环境
什么是Image?
Image(镜像)是一个只读的模板,用于创建Docker容器。可以把Image看作是面向对象思想中的类,它包含了运行某个应用所需的所有文件和配置信息)。
Image的特点:
- 只读性:镜像是不可变的,一旦创建就不能修改分层结构:镜像由一层一层的Layer组成,就像大楼的每一层
- 包含内容:包含应用程序运行所需的一切,比如代码、运行时、库和环境变量等
- 轻量级:共享主机操作系统内核,启动速度快,资源利用率高
简单比喻:Image就像是根据设计图盖好的大楼,里面有所有的设施,但还不能运作。
什么是Container?
Container(容器)是Docker的运行实例,它是Image的实例化。每个Container都是相互隔离的,保证了应用的安全性。可以把Container看作是面向对象思想中的对象,它是Image的具体运行实例。
Container的特点:
- 隔离环境:是一个轻量级、可移植的、独立的环境,包含应用程序及其所有依赖项
- 可写层:在镜像的基础上添加一个可写层,可以修改容器内的文件
- 快速启动:启动时间极快,通常只需几秒钟
- 资源共享:共享主机操作系统的内核,但具有隔离的用户空间
简单比喻:Container就像是运作中的大楼,人们可以进出并互动。
常用Docker命令
| 命令 | 功能 | 示例 |
|---|---|---|
| docker run | 启动一个新的容器并运行命令 | docker run -d ubuntu |
| docker ps | 列出当前正在运行的容器 | docker ps |
| docker ps -a | 列出所有容器(包括已停止的容器) | docker ps -a |
| docker build | 使用 Dockerfile 构建镜像 | docker build -t my-image . |
| docker images | 列出本地存储的所有镜像 | docker images |
| docker pull | 从 Docker 仓库拉取镜像 | docker pull ubuntu |
| docker push | 将镜像推送到 Docker 仓库 | docker push my-image |
| docker exec | 在运行的容器中执行命令 | docker exec -it container_name bash |
| docker stop | 停止一个或多个容器 | docker stop container_name |
| docker start | 启动已停止的容器 | docker start container_name |
| docker restart | 重启一个容器 | docker restart container_name |
| docker rm | 删除一个或多个容器 | docker rm container_name |
| docker rmi | 删除一个或多个镜像 | docker rmi my-image |
| docker logs | 查看容器的日志 | docker logs container_name |
| docker inspect | 获取容器或镜像的详细信息 | docker inspect container_name |
| docker exec -it | 进入容器的交互式终端 | docker exec -it container_name /bin/bash |
| docker network ls | 列出所有 Docker 网络 | docker network ls |
| docker volume ls | 列出所有 Docker 卷 | docker volume ls |
| docker-compose up | 启动多容器应用(从 docker-compose.yml 文件) | docker-compose up |
| docker-compose down | 停止并删除由 docker-compose 启动的容器、网络等 | docker-compose down |
| docker info | 显示 Docker 系统的详细信息 | docker info |
| docker version | 显示 Docker 客户端和守护进程的版本信息 | docker version |
| docker stats | 显示容器的实时资源使用情况 | docker stats |
| docker login | 登录 Docker 仓库 | docker login |
| docker logout | 登出 Docker 仓库 | docker logout |
常用选项说明:
- -d:后台运行容器,例如 docker run -d ubuntu。
- -it:以交互式终端运行容器,例如 docker exec -it container_name bash。
- -t:为镜像指定标签,例如 docker build -t my-image .。