Docker 是容器化技术的核心工具,掌握常用命令是使用 Docker 的基础。下面按镜像操作、容器操作、网络 / 数据卷、系统信息四大类,详细讲解最常用的 Docker 命令,每个命令包含作用、语法、示例和关键说明。

一、镜像(Image)相关命令

        镜像是容器的「模板」,包含运行应用所需的代码、环境、依赖等,先掌握镜像操作才能创建容器。

1. 拉取镜像(docker pull)
  • 作用:从 Docker Hub(或私有仓库)下载镜像到本地
  • 语法docker pull [镜像名]:[标签](标签默认是 latest,即最新版)
  • 示例
    # 拉取官方最新版 Ubuntu 镜像
    docker pull ubuntu
    # 拉取指定版本(20.04)的 Ubuntu 镜像
    docker pull ubuntu:20.04
    # 拉取私有仓库的镜像(需先登录)
    docker pull registry.example.com/myapp:v1.0
    
  • 关键说明:标签(tag)是镜像的版本标识,避免直接用 latest 部署生产环境(版本不固定)
2. 查看本地镜像(docker images /docker image ls)
  • 作用:列出本地已下载的所有镜像
  • 语法docker images(简写)或 docker image ls(更规范)
  • 示例
    docker images
    # 筛选镜像:只显示 ubuntu 相关镜像
    docker images ubuntu
    # 精简输出(只显示镜像ID和名称)
    docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
    
  • 输出说明
    • REPOSITORY:镜像名;TAG:版本标签;IMAGE ID:镜像唯一 ID;SIZE:镜像大小
3. 删除镜像(docker rmi /docker image rm)
  • 作用:删除本地指定镜像(需确保该镜像没有运行中的容器依赖)
  • 语法docker rmi [镜像ID/镜像名:标签]
  • 示例
    # 通过镜像名删除
    docker rmi ubuntu:20.04
    # 通过镜像ID删除(只需前几位即可)
    docker rmi 9140108b62dc
    # 强制删除(即使有停止的容器依赖)
    docker rmi -f ubuntu:latest
    # 删除所有未使用的镜像(清理空间)
    docker image prune -a
    
  • 关键说明-f 是强制删除,谨慎使用;prune -a 会删除所有无标签、无容器关联的镜像,释放磁盘空间
4. 构建镜像(docker build)
  • 作用:通过 Dockerfile 自定义构建镜像(最核心的镜像操作之一)
  • 语法docker build -t [镜像名:标签] [Dockerfile 所在目录]
  • 示例
    # 在当前目录(.)构建镜像,命名为 myapp,标签 v1
    docker build -t myapp:v1 .
    # 指定自定义名称的 Dockerfile(如 Dockerfile.prod)
    docker build -t myapp:prod -f Dockerfile.prod .
    
  • 关键说明-t 是「打标签」,Dockerfile 是构建镜像的配置文件,. 表示「当前目录」是构建上下文(Docker 会读取该目录下的所有文件)

二、容器(Container)相关命令

        容器是镜像的「运行实例」,所有应用最终在容器中运行,这部分命令是使用 Docker 的核心。

1. 运行容器(docker run)
  • 作用:基于镜像创建并启动容器(最常用、参数最多的命令)
  • 核心语法docker run [参数] [镜像名:标签] [容器内执行的命令]
  • 常用参数说明
    参数 作用
    -d 后台运行容器(守护进程模式),不占用当前终端
    -it 交互式运行(-i 标准输入,-t 分配终端),常用于进入容器
    -p 端口映射:-p 主机端口:容器端口(如 -p 8080:80
    -v 数据卷挂载:-v 主机目录:容器目录(持久化数据)
    --name 给容器指定自定义名称(默认是随机字符串)
    --rm 容器停止后自动删除(适合临时测试)
  • 示例
    # 1. 交互式运行 Ubuntu 容器,进入容器终端
    docker run -it ubuntu /bin/bash
    # 退出容器:输入 exit 即可,容器会停止(因为没有 -d)
    
    # 2. 后台运行 Nginx 容器,映射主机 8080 端口到容器 80 端口,命名为 mynginx
    docker run -d --name mynginx -p 8080:80 nginx
    # 访问:浏览器输入 http://主机IP:8080 即可看到 Nginx 欢迎页
    
    # 3. 运行临时容器,停止后自动删除,测试 Python 版本
    docker run --rm python:3.10 python --version
    
    # 4. 挂载数据卷运行容器(持久化 Nginx 配置)
    docker run -d --name mynginx -p 8080:80 -v /my/nginx/conf:/etc/nginx/conf.d nginx
    
2. 查看容器(docker ps /docker container ls)
  • 作用:列出当前运行的容器(或所有容器)
  • 语法
    # 查看运行中的容器(默认)
    docker ps
    # 查看所有容器(包括已停止的)
    docker ps -a
    # 只显示容器ID(批量操作时常用)
    docker ps -aq
    
  • 输出说明
    • CONTAINER ID:容器唯一 ID;NAMES:容器名称;STATUS:容器状态(Up 运行中 / Exited 已停止);PORTS:端口映射信息
3. 启动 / 停止 / 重启容器
  • 作用:对已创建的容器进行启停控制(区别于 docker runrun 是「创建 + 启动」,这些是对已有容器操作)
  • 语法
    # 启动已停止的容器(指定容器名或ID)
    docker start mynginx
    # 停止运行中的容器(优雅停止)
    docker stop mynginx
    # 强制停止容器(类似 kill 进程)
    docker kill mynginx
    # 重启容器
    docker restart mynginx
    
4. 进入运行中的容器(docker exec)
  • 作用:进入后台运行的容器,执行命令(如调试、修改配置),是生产环境最常用的「进入容器」方式
  • 语法docker exec -it [容器名/ID] [命令]
  • 示例
    # 进入 mynginx 容器的 bash 终端(交互式)
    docker exec -it mynginx /bin/bash
    # 在容器内执行单条命令(无需进入终端)
    docker exec mynginx cat /etc/nginx/nginx.conf
    
  • 关键说明:避免用 docker attach 进入容器(退出会导致容器停止),docker exec 是安全的方式
5. 删除容器(docker rm /docker container rm)
  • 作用:删除已停止的容器(运行中的容器需先停止)
  • 语法
    # 删除单个容器
    docker rm mynginx
    # 强制删除运行中的容器
    docker rm -f mynginx
    # 删除所有已停止的容器(清理空间)
    docker container prune
    # 删除所有容器(包括运行中的)
    docker rm -f $(docker ps -aq)
    
6. 查看容器日志 / 信息
  • 查看日志docker logs [容器名/ID](查看容器运行输出,排障必备)
    # 实时跟踪日志(类似 tail -f)
    docker logs -f mynginx
    # 查看最后100行日志
    docker logs --tail 100 mynginx
    
  • 查看容器详情docker inspect [容器名/ID](返回 JSON 格式的容器配置、网络、挂载等所有信息)

三、网络 / 数据卷(持久化 / 联网)

1. 数据卷(Volume)命令

  数据卷用于容器数据持久化(容器删除后数据不丢失),是生产环境必备

# 创建自定义数据卷
docker volume create myvolume
# 查看所有数据卷
docker volume ls
# 查看数据卷详情(知道挂载路径)
docker volume inspect myvolume
# 删除未使用的数据卷
docker volume prune
# 删除指定数据卷
docker volume rm myvolume
2. 网络(Network)命令

容器默认使用桥接网络,自定义网络可实现容器间互通(如微服务场景)

# 创建自定义桥接网络
docker network create mynetwork
# 运行容器时加入自定义网络
docker run -d --name app1 --network mynetwork myapp:v1
# 查看所有网络
docker network ls
# 删除未使用的网络
docker network prune

四、系统信息 / 辅助命令

# 查看 Docker 版本信息(客户端+服务端)
docker version
# 查看 Docker 系统状态(镜像、容器、数据卷、空间占用等)
docker info
# 清理所有未使用的资源(镜像、容器、数据卷、网络)
docker system prune -a  # -a 表示包括未使用的镜像

总结

  1. 核心逻辑镜像(Image) 是模板,容器(Container) 是运行实例,先 pull/build 镜像,再 run 容器。
  2. 高频命令
    • 镜像:docker pull/docker images/docker rmi/docker build
    • 容器:docker run(重点记 -d/-it/-p/-v/--name)/docker ps/docker exec/docker stop/rm
  3. 清理技巧docker system prune -a 可一键清理无用资源,解决磁盘占用问题;生产环境避免用 latest 标签,指定具体版本更稳定。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐