docker简介
Docker是一种开源的容器化平台,用于开发、部署和运行应用程序。它通过容器技术将应用程序及其依赖项打包在一起,确保在不同环境中运行的一致性。
核心概念
容器(Container)
轻量级、可执行的软件包,包含运行应用程序所需的代码、运行时、库和配置。容器共享主机操作系统内核,但彼此隔离。
镜像(Image)
容器的静态模板,包含创建容器所需的文件系统和配置。镜像通过分层存储实现高效复用。
仓库(Registry)
存储和分发镜像的服务,如Docker Hub。用户可以从仓库拉取公共镜像或推送私有镜像。
主要优势
环境一致性
消除“在我机器上能运行”的问题,确保开发、测试和生产环境一致。
资源高效
容器共享主机OS内核,启动快且占用资源少,比虚拟机更轻量。
快速部署与扩展
支持秒级启动和停止,适合微服务架构和动态扩缩容场景。
docker desktop
Docker 最初是为 Linux 设计的,因为其核心依赖于 Linux 内核的容器化技术(如命名空间和控制组)。Windows 原生不支持这些技术,因此需要 Docker Desktop 来提供兼容性。
Docker Desktop 概述
Docker Desktop 是一款适用于开发者的桌面应用程序,支持在 Windows 和 macOS 系统上快速构建、测试和部署容器化应用。它集成了 Docker Engine、Kubernetes 和开发者工具链,提供图形化界面(GUI)与命令行(CLI)的双重操作方式。
核心功能
- 本地容器环境:内置 Docker Engine,支持创建和管理容器,无需额外配置。
- Kubernetes 集成:一键启用单机版 Kubernetes 集群,便于本地开发与测试。
- 跨平台兼容:通过 WSL 2(Windows)或 HyperKit(macOS)实现高效虚拟化。
- 镜像管理:可视化操作镜像的拉取、构建和推送至 Docker Hub 或其他仓库。
- 开发工具集成:支持与 VS Code、IntelliJ 等 IDE 深度协作。
Docker Desktop 在 Windows 上的作用包括:
- 提供 Linux 内核模拟:通过内置的轻量级虚拟机(如 WSL2 或 Hyper-V)运行 Linux 环境,使容器能够正常工作。
- 简化管理工具:集成图形界面和命令行工具,降低用户操作复杂度。
- 文件系统与网络适配:解决 Windows 和 Linux 文件系统差异,优化网络桥接和端口映射。
docker常用命令
容器管理
启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用选项:
-d:后台运行(守护进程模式)-p:端口映射(格式:主机端口:容器端口)-v:卷挂载(格式:主机目录:容器目录)--name:指定容器名称-e:设置环境变量
查看容器
docker ps [OPTIONS]
常用选项:
-a:显示所有容器(包括已停止的)-q:仅显示容器ID--filter:按条件过滤(如status=exited)
停止/启动容器
docker stop CONTAINER
docker start CONTAINER
docker restart CONTAINER
删除容器
docker rm [OPTIONS] CONTAINER
常用选项:
-f:强制删除运行中的容器-v:同时删除关联的卷
镜像管理
拉取镜像
docker pull [OPTIONS] NAME[:TAG]
列出镜像
docker images [OPTIONS]
常用选项:
-a:显示所有镜像(包括中间层)--digests:显示摘要信息--filter:按条件过滤
删除镜像
docker rmi [OPTIONS] IMAGE
常用选项:
-f:强制删除
构建镜像
docker build [OPTIONS] PATH
常用选项:
-t:指定镜像名称和标签--no-cache:禁用缓存构建
日志与监控
查看日志
docker logs [OPTIONS] CONTAINER
常用选项:
-f:实时跟踪日志--tail:显示最后N行-t:显示时间戳
资源监控
docker stats [OPTIONS] [CONTAINER...]
显示实时资源使用统计(CPU、内存等)
网络管理
列出网络
docker network ls
创建网络
docker network create [OPTIONS] NETWORK
连接容器到网络
docker network connect [OPTIONS] NETWORK CONTAINER
数据管理
创建卷
docker volume create [OPTIONS] VOLUME
列出卷
docker volume ls
删除卷
docker volume rm VOLUME
其他实用命令
执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
常用选项:
-it:交互式终端(通常与/bin/bash配合使用)
复制文件
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
查看信息
docker info
显示Docker系统信息
查看版本
docker version
Docker run 与 Docker start 的区别
docker run 用于从镜像创建并启动一个新容器。
该命令会执行以下操作:检查本地是否存在指定镜像,若不存在则从远程仓库拉取;基于镜像创建新的容器文件系统层;分配网络和存储资源;执行启动命令(如 CMD 或 ENTRYPOINT)。每次运行都会生成一个全新的容器实例。
示例命令:
docker run -d --name my_container nginx
docker start 用于重新启动已存在的停止状态容器。该命令不会创建新容器,而是复用现有容器的文件系统层和配置,仅触发容器内进程的重新启动。适用于暂停或退出的容器恢复运行。
示例命令:
docker start my_container
核心差异总结
创建行为
docker run 每次调用均生成新容器(即使同名也会因冲突失败需先删除旧容器)。docker start 仅操作已创建的容器,无法修改原始配置(如端口映射或环境变量)。
资源分配
docker run 涉及完整的资源分配流程(IP、存储卷等)。docker start 复用现有资源,启动速度更快。
日志与状态
docker run 产生新的独立日志流。docker start 延续原有容器的日志文件,状态信息(如容器ID)保持不变。
典型使用场景
- 初始化部署:需使用
docker run创建容器并设置参数(如-p 8080:80)。 - 故障恢复:容器意外停止后,用
docker start快速重启服务。 - 调试测试:
docker run适合隔离测试环境;docker start适合延续之前的工作状态。
Docker 与 Docker-Compose 的核心区别
Docker 是一个容器化平台,用于构建、运行和管理单个容器。它通过 Dockerfile 定义容器镜像的构建步骤,并通过 docker run 命令启动容器。适用于单容器应用的开发和部署。
Docker-Compose 是一个工具,用于定义和运行多容器应用。通过 docker-compose.yml 文件配置多个服务(容器)、网络和卷,实现一键启动复杂应用栈。适用于微服务或多组件应用的编排。
功能对比
Docker
- 操作对象:单容器
- 配置文件:
Dockerfile - 典型命令:
docker build,docker run - 适用场景:构建镜像或运行独立容器
Docker-Compose
- 操作对象:多容器组成的服务
- 配置文件:
docker-compose.yml - 典型命令:
docker-compose up,docker-compose down - 适用场景:定义前后端、数据库等关联容器的协同部署
配置示例对比
Docker 单容器启动
通过命令行参数配置:
docker run -d --name nginx -p 80:80 -v /data:/usr/share/nginx/html nginx
Docker-Compose 多服务编排
通过 YAML 文件配置:
version: '3'
services:
web:
image: nginx
ports: ["80:80"]
volumes: ["./data:/usr/share/nginx/html"]
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
网络与依赖管理差异
Docker
需手动创建网络并连接容器:
docker network create app_net
docker run -d --net=app_net --name mysql mysql
docker run -d --net=app_net --link mysql -p 8080:8080 my_app
Docker-Compose
自动处理容器间网络和依赖:
services:
app:
depends_on: [db]
db:
image: mysql
适用场景建议
- 开发测试环境:优先使用 Docker-Compose 快速搭建完整服务栈
- 生产环境:结合 Docker Swarm/Kubernetes 进行集群编排
- 简单工具容器:直接使用 Docker 命令更高效
docker-compose常用命令
启动服务
docker-compose up 启动所有服务,默认在前台运行。添加 -d 参数可后台运行:
docker-compose up -d
停止服务
docker-compose down 停止并移除所有容器、网络、镜像(默认保留数据卷)。添加 -v 参数可同时删除数据卷:
docker-compose down -v
查看服务状态
docker-compose ps 列出所有容器的运行状态,包括端口映射:
docker-compose ps
查看日志
docker-compose logs 查看服务的日志输出。添加 -f 参数可实时跟踪日志:
docker-compose logs -f [服务名]
构建或重新构建服务
docker-compose build 重新构建服务的镜像,适用于Dockerfile有变更时:
docker-compose build
启动/停止/重启服务
- 启动已存在的服务容器:
docker-compose start - 停止运行中的服务容器:
docker-compose stop - 重启服务容器:
docker-compose restart
进入容器
docker-compose exec 在运行中的容器内执行命令,常用于调试:
docker-compose exec [服务名] /bin/bash
查看服务依赖
docker-compose config 验证并查看最终的compose文件配置:
docker-compose config
扩展服务实例
docker-compose scale 扩展指定服务的容器数量(需结合up使用):
docker-compose up -d --scale [服务名]=3
环境变量管理
- 通过
.env文件定义环境变量,或在命令中直接指定:docker-compose --env-file .env up
清理资源
- 删除未使用的资源(镜像、网络等):
docker-compose down --rmi all
命令组合示例
- 重新构建并启动服务:
docker-compose up -d --build - 强制重新创建容器(忽略缓存):
docker-compose up -d --force-recreate
注意:以上命令需在包含docker-compose.yml文件的目录中执行。部分命令可能需要Docker Compose V2以上版本支持。

被折叠的 条评论
为什么被折叠?



