docker基本知识及常用命令汇总

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以上版本支持。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值