Interview AiBoxInterview AiBox 实时 AI 助手,让你自信应答每一场面试
请列举并解释你常用的Docker命令及其作用。
题型摘要
Docker是容器化平台的核心工具,其命令可分为六大类:镜像管理(search/pull/images/rmi/build/save/tag)、容器管理(run/ps/stop/start/restart/rm/exec/logs/inspect/stats/top/update)、网络管理(ls/create/inspect/rm/connect/disconnect)、数据卷管理(ls/create/inspect/rm)、系统信息(info/version/df/prune)和Docker Compose(up/down/ps/logs/exec/build)。掌握这些命令能有效管理容器生命周期,实现应用的快速部署、扩展和维护。最常用的命令包括docker run(运行容器)、docker ps(查看容器)、docker logs(查看日志)和docker exec(执行命令),它们构成了Docker日常操作的基础。
常用Docker命令及其作用详解
Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个可移植的容器中。掌握Docker命令是使用Docker的基础,下面我将按照功能分类列举并解释常用的Docker命令。
Docker命令分类概览
Docker命令可以分为以下几个主要类别:
- 镜像管理命令:用于搜索、拉取、构建、删除和管理Docker镜像
- 容器管理命令:用于创建、运行、停止、删除和管理Docker容器
- 网络管理命令:用于创建、管理和查看Docker网络
- 数据卷管理命令:用于创建、管理和查看Docker数据卷
- 系统信息命令:用于查看Docker系统信息和资源使用情况
- Docker Compose命令:用于管理多容器应用
下面我将详细解释每个类别下的常用命令。
镜像管理命令
docker search
作用:在Docker Hub中搜索镜像。
语法:
docker search [OPTIONS] TERM
示例:
# 搜索nginx镜像
docker search nginx
# 搜索官方提供的nginx镜像
docker search --filter=is-official=true nginx
# 搜索超过10颗星的nginx镜像
docker search --filter=stars=10 nginx
docker pull
作用:从镜像仓库中拉取指定的镜像。
语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
示例:
# 拉取最新的nginx镜像
docker pull nginx
# 拉取指定版本的nginx镜像
docker pull nginx:1.21
# 拉取指定摘要的镜像
docker pull nginx@sha256:41ad9967ea448d7c2b203c699b429abe1ed5af331cd92533900c6d77490e0268
docker images
作用:列出本地主机上的镜像。
语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
示例:
# 列出所有本地镜像
docker images
# 列出所有本地镜像(包括中间层镜像)
docker images -a
# 列出nginx镜像
docker images nginx
# 以特定格式列出镜像
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
docker rmi
作用:删除一个或多个本地镜像。
语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
示例:
# 删除指定镜像
docker rmi nginx:latest
# 强制删除镜像(即使有容器使用该镜像)
docker rmi -f nginx:latest
# 删除多个镜像
docker rmi nginx:latest redis:latest alpine:latest
# 删除所有未被使用的镜像
docker image prune
docker build
作用:使用Dockerfile创建镜像。
语法:
docker build [OPTIONS] PATH | URL | -
示例:
# 使用当前目录下的Dockerfile构建镜像
docker build -t myapp:latest .
# 使用指定目录下的Dockerfile构建镜像
docker build -t myapp:latest /path/to/dir
# 使用指定的Dockerfile构建镜像
docker build -f /path/to/Dockerfile -t myapp:latest .
# 构建时不使用缓存
docker build --no-cache -t myapp:latest .
# 构建时传递构建参数
docker build --build-arg APP_VERSION=1.0 -t myapp:latest .
docker history
作用:显示镜像的历史记录。
语法:
docker history [OPTIONS] IMAGE
示例:
# 显示nginx镜像的历史记录
docker history nginx
# 显示nginx镜像的详细历史记录(包括大小)
docker history --no-trunc nginx
docker save/load
作用:
docker save:将指定镜像保存成 tar 归档文件。docker load:从 tar 归档文件或标准输入中加载镜像。
语法:
docker save [OPTIONS] IMAGE [IMAGE...]
docker load [OPTIONS]
示例:
# 将nginx镜像保存为tar文件
docker save -o nginx.tar nginx:latest
# 将多个镜像保存为tar文件
docker save -o images.tar nginx:latest redis:latest
# 从tar文件加载镜像
docker load -i nginx.tar
# 从标准输入加载镜像
docker load < nginx.tar
docker tag
作用:标记本地镜像,将其归入某一仓库。
语法:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
示例:
# 将nginx:latest标记为my-nginx:latest
docker tag nginx:latest my-nginx:latest
# 将nginx:1.21标记为my-nginx:v1.21
docker tag nginx:1.21 my-nginx:v1.21
容器管理命令
docker run
作用:创建一个新的容器并运行一个命令。
语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
示例:
# 运行一个nginx容器,并在后台运行
docker run -d --name my-nginx nginx
# 运行一个nginx容器,将容器的80端口映射到主机的8080端口
docker run -d -p 8080:80 --name my-nginx nginx
# 运行一个nginx容器,将主机的目录挂载到容器中
docker run -d -v /host/path:/container/path --name my-nginx nginx
# 运行一个nginx容器,并设置环境变量
docker run -d -e ENV_VAR=value --name my-nginx nginx
# 运行一个容器,并在容器内执行命令
docker run -it --name my-nginx nginx /bin/bash
# 运行一个容器,并设置自动重启
docker run -d --restart always --name my-nginx nginx
# 运行一个容器,并限制内存使用
docker run -d --memory="512m" --name my-nginx nginx
docker ps
作用:列出容器。
语法:
docker ps [OPTIONS]
示例:
# 列出正在运行的容器
docker ps
# 列出所有容器(包括未运行的)
docker ps -a
# 列出最近创建的n个容器
docker ps -n 5
# 只显示容器ID
docker ps -q
# 显示容器大小
docker ps -s
# 以特定格式列出容器
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
docker stop/start/restart
作用:
docker stop:停止一个或多个运行中的容器。docker start:启动一个或多个已停止的容器。docker restart:重启一个或多个容器。
语法:
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
示例:
# 停止一个容器
docker stop my-nginx
# 停止多个容器
docker stop my-nginx my-redis
# 启动一个已停止的容器
docker start my-nginx
# 启动多个容器
docker start my-nginx my-redis
# 重启一个容器
docker restart my-nginx
# 重启多个容器
docker restart my-nginx my-redis
# 强制停止容器(发送SIGKILL而不是SIGTERM)
docker kill my-nginx
docker rm
作用:删除一个或多个容器。
语法:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
示例:
# 删除一个已停止的容器
docker rm my-nginx
# 强制删除一个正在运行的容器
docker rm -f my-nginx
# 删除多个容器
docker rm my-nginx my-redis
# 删除所有已停止的容器
docker container prune
# 删除容器并删除其关联的数据卷
docker rm -v my-nginx
docker exec
作用:在运行的容器中执行命令。
语法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
示例:
# 在容器中执行命令
docker exec my-nginx ls /
# 在容器中以交互模式执行命令
docker exec -it my-nginx /bin/bash
# 以特定用户在容器中执行命令
docker exec -u root my-nginx whoami
# 设置工作目录并在容器中执行命令
docker exec -w /tmp my-nginx pwd
docker logs
作用:获取容器的日志。
语法:
docker logs [OPTIONS] CONTAINER
示例:
# 查看容器的所有日志
docker logs my-nginx
# 实时查看容器的日志
docker logs -f my-nginx
# 查看容器最后n行的日志
docker logs --tail 50 my-nginx
# 查看容器最近30分钟的日志
docker logs --since 30m my-nginx
# 查看容器特定时间段的日志
docker logs --since "2023-01-01T00:00:00" --until "2023-01-02T00:00:00" my-nginx
# 显示容器日志的时间戳
docker logs -t my-nginx
docker inspect
作用:获取容器或镜像的详细信息。
语法:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
示例:
# 查看容器的详细信息
docker inspect my-nginx
# 查看镜像的详细信息
docker inspect nginx:latest
# 查看容器的IP地址
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-nginx
# 查看容器的挂载点
docker inspect --format='{{json .Mounts}}' my-nginx
# 查看容器的配置
docker inspect --format='{{json .Config}}' my-nginx
docker stats
作用:显示容器的资源使用统计信息。
语法:
docker stats [OPTIONS] [CONTAINER...]
示例:
# 显示所有运行中容器的资源使用情况
docker stats
# 显示指定容器的资源使用情况
docker stats my-nginx my-redis
# 显示所有容器的资源使用情况(包括未运行的)
docker stats -a
# 禁用流式输出,只显示一次结果
docker stats --no-stream
# 以特定格式显示容器的资源使用情况
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
docker top
作用:显示容器中运行的进程。
语法:
docker top CONTAINER [ps OPTIONS]
示例:
# 显示容器中运行的进程
docker top my-nginx
# 显示容器中运行的进程的详细信息
docker top my-nginx aux
docker update
作用:更新一个或多个容器的配置。
语法:
docker update [OPTIONS] CONTAINER [CONTAINER...]
示例:
# 更新容器的内存限制
docker update --memory="1g" my-nginx
# 更新容器的CPU限制
docker update --cpus="1.5" my-nginx
# 更新容器的重启策略
docker update --restart=always my-nginx
网络管理命令
docker network ls
作用:列出所有网络。
语法:
docker network ls [OPTIONS]
示例:
# 列出所有网络
docker network ls
# 只显示网络ID
docker network ls -q
# 以特定格式列出网络
docker network ls --format "table {{.ID}}\t{{.Name}}\t{{.Driver}}"
docker network create
作用:创建一个新的网络。
语法:
docker network create [OPTIONS] NETWORK
示例:
# 创建一个桥接网络
docker network create my-network
# 创建一个指定子网的桥接网络
docker network create --subnet=192.168.0.0/16 my-network
# 创建一个覆盖网络(用于Swarm集群)
docker network create --driver overlay my-overlay-network
docker network inspect
作用:显示一个或多个网络的详细信息。
语法:
docker network inspect [OPTIONS] NETWORK [NETWORK...]
示例:
# 查看网络的详细信息
docker network inspect my-network
# 查看多个网络的详细信息
docker network inspect my-network my-other-network
# 以特定格式查看网络的详细信息
docker network inspect --format='{{json .IPAM.Config}}' my-network
docker network rm
作用:删除一个或多个网络。
语法:
docker network rm NETWORK [NETWORK...]
示例:
# 删除一个网络
docker network rm my-network
# 删除多个网络
docker network rm my-network my-other-network
# 删除所有未使用的网络
docker network prune
docker network connect/disconnect
作用:
docker network connect:将容器连接到网络。docker network disconnect:将容器从网络断开。
语法:
docker network connect [OPTIONS] NETWORK CONTAINER
docker network disconnect [OPTIONS] NETWORK CONTAINER
示例:
# 将容器连接到网络
docker network connect my-network my-nginx
# 将容器连接到网络,并指定别名
docker network connect --alias nginx my-network my-nginx
# 将容器从网络断开
docker network disconnect my-network my-nginx
数据卷管理命令
docker volume ls
作用:列出所有数据卷。
语法:
docker volume ls [OPTIONS]
示例:
# 列出所有数据卷
docker volume ls
# 只显示数据卷名称
docker volume ls -q
# 以特定格式列出数据卷
docker volume ls --format "table {{.Name}}\t{{.Driver}}\t{{.Mountpoint}}"
docker volume create
作用:创建一个新的数据卷。
语法:
docker volume create [OPTIONS] [VOLUME]
示例:
# 创建一个数据卷
docker volume create my-volume
# 创建一个带标签的数据卷
docker volume create --label type=cache my-volume
docker volume inspect
作用:显示一个或多个数据卷的详细信息。
语法:
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
示例:
# 查看数据卷的详细信息
docker volume inspect my-volume
# 查看多个数据卷的详细信息
docker volume inspect my-volume my-other-volume
# 以特定格式查看数据卷的详细信息
docker volume inspect --format='{{.Mountpoint}}' my-volume
docker volume rm
作用:删除一个或多个数据卷。
语法:
docker volume rm VOLUME [VOLUME...]
示例:
# 删除一个数据卷
docker volume rm my-volume
# 删除多个数据卷
docker volume rm my-volume my-other-volume
# 删除所有未使用的数据卷
docker volume prune
系统信息命令
docker info
作用:显示Docker系统信息。
语法:
docker info [OPTIONS]
示例:
# 显示Docker系统信息
docker info
# 以特定格式显示Docker系统信息
docker info --format '{{json .}}'
docker version
作用:显示Docker版本信息。
语法:
docker version [OPTIONS]
示例:
# 显示Docker版本信息
docker version
# 只显示客户端版本
docker version --format '{{.Client.Version}}'
# 只显示服务器版本
docker version --format '{{.Server.Version}}'
docker system df
作用:显示Docker磁盘使用情况。
语法:
docker system df [OPTIONS]
示例:
# 显示Docker磁盘使用情况
docker system df
# 显示更详细的信息
docker system df -v
docker system prune
作用:清理未使用的Docker对象。
语法:
docker system prune [OPTIONS]
示例:
# 清理未使用的Docker对象(镜像、容器、网络和构建缓存)
docker system prune
# 清理所有未使用的Docker对象(包括未标记的镜像)
docker system prune -a
# 清理未使用的Docker对象,但不显示确认提示
docker system prune -f
# 清理未使用的Docker对象,包括数据卷
docker system prune --volumes
Docker Compose命令
docker-compose up
作用:创建并启动容器。
语法:
docker-compose up [OPTIONS] [SERVICE...]
示例:
# 启动所有服务
docker-compose up
# 在后台启动所有服务
docker-compose up -d
# 启动特定服务
docker-compose up nginx
# 强制重新创建容器
docker-compose up --force-recreate
# 不使用缓存构建镜像
docker-compose up --build --no-cache
docker-compose down
作用:停止并删除容器、网络、数据卷和镜像。
语法:
docker-compose down [OPTIONS]
示例:
# 停止并删除容器、网络
docker-compose down
# 停止并删除容器、网络和数据卷
docker-compose down -v
# 停止并删除容器、网络、数据卷和镜像
docker-compose down --rmi all
docker-compose ps
作用:列出容器。
语法:
docker-compose ps [OPTIONS] [SERVICE...]
示例:
# 列出所有容器
docker-compose ps
# 列出特定服务的容器
docker-compose ps nginx
# 只显示容器ID
docker-compose ps -q
docker-compose logs
作用:查看服务日志。
语法:
docker-compose logs [OPTIONS] [SERVICE...]
示例:
# 查看所有服务的日志
docker-compose logs
# 实时查看所有服务的日志
docker-compose logs -f
# 查看特定服务的日志
docker-compose logs nginx
# 查看特定服务最近n行的日志
docker-compose logs --tail 50 nginx
docker-compose exec
作用:在运行的容器中执行命令。
语法:
docker-compose exec [OPTIONS] SERVICE COMMAND [ARGS...]
示例:
# 在nginx服务中执行命令
docker-compose exec nginx ls /
# 在nginx服务中以交互模式执行命令
docker-compose exec nginx /bin/bash
# 以特定用户在nginx服务中执行命令
docker-compose exec -u root nginx whoami
docker-compose build
作用:构建或重建服务。
语法:
docker-compose build [OPTIONS] [SERVICE...]
示例:
# 构建所有服务
docker-compose build
# 构建特定服务
docker-compose build nginx
# 不使用缓存构建镜像
docker-compose build --no-cache
# 构建时传递构建参数
docker-compose build --build-arg APP_VERSION=1.0
Docker命令使用流程图
下面是一个使用Docker命令的典型流程图,展示了从镜像管理到容器运行的基本流程:
总结
Docker提供了丰富的命令集来管理镜像、容器、网络和数据卷。掌握这些命令是使用Docker的基础,也是运维人员必备的技能。通过本文的介绍,你应该能够理解并熟练使用这些常用的Docker命令,从而更高效地管理和部署容器化应用。
参考资料
- Docker官方文档:https://docs.docker.com/engine/reference/commandline/cli/
- Docker Compose官方文档:https://docs.docker.com/compose/reference/
- Docker入门教程:https://docs.docker.com/get-started/
- Docker最佳实践:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
思维导图
Interview AiBoxInterview AiBox — 面试搭档
不只是准备,更是实时陪练
Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。
AI 助读
一键发送到常用 AI
Docker是容器化平台的核心工具,其命令可分为六大类:镜像管理(search/pull/images/rmi/build/save/tag)、容器管理(run/ps/stop/start/restart/rm/exec/logs/inspect/stats/top/update)、网络管理(ls/create/inspect/rm/connect/disconnect)、数据卷管理(ls/create/inspect/rm)、系统信息(info/version/df/prune)和Docker Compose(up/down/ps/logs/exec/build)。掌握这些命令能有效管理容器生命周期,实现应用的快速部署、扩展和维护。最常用的命令包括docker run(运行容器)、docker ps(查看容器)、docker logs(查看日志)和docker exec(执行命令),它们构成了Docker日常操作的基础。
智能总结
深度解读
考点定位
思路启发
相关题目
请做一个自我介绍
自我介绍是面试的开场环节,需简洁有力地展示个人背景、技能经验与岗位匹配度。有效结构包括:开场问候、核心经历、技能展示、成就亮点、岗位认知、职业规划、公司了解和得体收尾。针对运维岗位,应突出Linux管理、网络配置、自动化部署等技术能力,并结合具体案例和量化成果。表达要真诚自然,时间控制在2-3分钟,展现自信和对公司的了解。
请详细介绍一下你参与的项目
项目经验介绍应包括项目背景、个人角色、技术栈、工作内容、挑战与解决方案、成果收获以及与岗位的关联。通过具体案例展示技术能力和问题解决能力,突出与运维岗位相关的经验和技能,如系统部署、监控、故障排查、自动化运维等。同时体现团队协作和持续学习的态度。
请介绍一下你的项目经验
在面试中介绍项目经验时,应选择与运维岗位最相关的项目,按"项目背景→个人职责→技术栈→难点与解决方案→项目成果"的结构进行介绍。重点突出自己在项目中的技术贡献、解决问题的能力以及与运维岗位相关的经验。通过具体案例展示自己的技术实力、学习能力和团队协作精神,并将项目经验与应聘岗位联系起来,展示自己的匹配度和价值。
请进行自我介绍并详细介绍你参与过的项目
自我介绍和项目经验是面试的重要环节。优秀的自我介绍应简洁明了地展示个人背景、专业技能和职业规划;项目经验介绍则应选择与岗位相关的项目,详细说明项目背景、个人职责、使用技术、解决方案和项目成果。回答时应突出与岗位相关的技能和经验,展现专业能力和解决问题的能力,同时保持自信和真诚的态度。
请详细介绍你简历中提到的项目,包括实现细节和遇到的问题
面试中介绍项目经验时,应选择与运维岗位最相关的项目,按照"项目背景-个人职责-技术实现-遇到问题-解决方案-项目成果"的结构进行介绍。重点突出个人贡献、技术细节和解决问题的能力,用数据量化项目成果。示例包括校园服务器集群自动化运维平台和基于Kubernetes的微服务部署与运维两个项目,展示了监控模块设计、CI/CD流水线构建、故障排查等运维核心能力。