Docker常用操作命令大全
·
一、镜像 (Image) 相关命令
镜像是创建容器的基础模板。
| 命令 | 说明 | 示例 |
|---|---|---|
docker images | 列出本地所有镜像 | docker images |
docker search <镜像名> | 从 Docker Hub 搜索镜像 | docker search nginx |
docker pull <镜像名>[:标签] | 拉取(下载)镜像 | docker pull nginx:latest |
docker rmi <镜像ID或名> | 删除本地镜像 | docker rmi abc123def |
docker rmi $(docker images -q) | 删除所有本地镜像 | docker rmi $(docker images -q) |
docker build -t <镜像名> . | 构建镜像 (需要 Dockerfile) | docker build -t my-app:1.0 . |
docker image prune | 删除所有悬虚镜像(无名无标签) | docker image prune |
docker image prune -a | 删除所有未被容器使用的镜像 | docker image prune -a |
二、容器 (Container) 相关命令
容器是镜像的运行实例。
1. 生命周期管理
| 命令 | 说明 | 示例 |
|---|---|---|
docker run [选项] <镜像> | 创建并启动一个新容器 | docker run -d --name my-nginx nginx |
docker start <容器名/ID> | 启动一个已停止的容器 | docker start my-nginx |
docker stop <容器名/ID> | 停止一个运行中的容器 (SIGTERM) | docker stop my-nginx |
docker restart <容器名/ID> | 重启容器 | docker restart my-nginx |
docker kill <容器名/ID> | 强制立即停止容器 (SIGKILL) | docker kill my-nginx |
docker rm <容器名/ID> | 删除一个已停止的容器 | docker rm my-nginx |
docker rm $(docker ps -aq) | 删除所有已停止的容器 | docker rm $(docker ps -aq) |
docker container prune | 删除所有已停止的容器 | docker container prune |
docker pause/unpause <容器> | 暂停/恢复容器中的所有进程 | docker pause my-nginx |
2. docker run 常用选项
| 选项 | 说明 | 示例 |
|---|---|---|
-d --detach | 后台运行容器 | docker run -d nginx |
-it | 交互模式运行容器 (通常与 /bin/bash 连用) | docker run -it ubuntu /bin/bash |
--name | 为容器指定一个名称 | docker run --name my-web nginx |
-p <主机端口>:<容器端口> | 端口映射 | docker run -p 8080:80 nginx |
-v <主机目录>:<容器目录> | 挂载数据卷 | docker run -v /my/data:/app/data nginx |
--rm | 容器停止后自动删除 | docker run --rm alpine echo "hello" |
-e --env | 设置环境变量 | docker run -e MY_VAR=value nginx |
--network | 指定容器网络 | docker run --network=my-net nginx |
3. 查看与进入
| 命令 | 说明 | 示例 |
|---|---|---|
docker ps | 列出正在运行的容器 | docker ps |
docker ps -a | 列出所有容器(包括已停止的) | docker ps -a |
docker logs <容器> | 查看容器日志 | docker logs my-nginx |
docker logs -f <容器> | 实时追踪(跟随)日志输出 | docker logs -f my-nginx |
docker exec -it <容器> <命令> | 在运行的容器中执行命令 | docker exec -it my-nginx /bin/bash |
docker inspect <容器/镜像> | 获取容器/镜像的详细信息(JSON格式) | docker inspect my-nginx |
docker top <容器> | 查看容器内运行的进程 | docker top my-nginx |
docker stats | 实时显示容器资源使用情况(CPU、内存等) | docker stats |
三、网络 (Network) 相关命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker network ls | 列出所有网络 | docker network ls |
docker network create <网络名> | 创建一个新网络 | docker network create my-app-net |
docker network inspect <网络名> | 查看网络详细信息 | docker network inspect bridge |
docker network connect <网络> <容器> | 将容器连接到指定网络 | docker network connect my-net my-nginx |
docker network disconnect <网络> <容器> | 断开容器的网络连接 | docker network disconnect my-net my-nginx |
docker network prune | 删除所有未使用的网络 | docker network prune |
四、数据卷 (Volume) 相关命令
数据卷用于持久化数据和容器间共享数据。
| 命令 | 说明 | 示例 |
|---|---|---|
docker volume ls | 列出所有数据卷 | docker volume ls |
docker volume create <卷名> | 创建一个数据卷 | docker volume create my-data |
docker volume inspect <卷名> | 查看数据卷详细信息 | docker volume inspect my-data |
docker volume rm <卷名> | 删除一个数据卷 | docker volume rm my-data |
docker volume prune | 删除所有未被使用的数据卷 | docker volume prune |
五、文件相关命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker cp [主机文件路径] [容器ID或名称]:[容器内目标路径] | 从主机复制文件到容器 | docker cp ./app.py mycontainer:/app/(将主机当前目录的 app.py 复制到容器 mycontainer 的 /app 目录下) |
docker cp [容器ID或名称]:[容器内文件路径] [主机目标路径] | 从容器复制文件到主机 | docker cp mycontainer:/logs/app.log ./logs/(将容器 mycontainer 的 /logs/app.log 复制到主机当前目录的 logs 目录) |
docker exec [容器ID或名称] ls [容器内路径] | 查看容器内指定路径的文件列表 | docker exec mycontainer ls /usr/local(查看容器 mycontainer 内 /usr/local 目录下的文件) |
docker exec [容器ID或名称] cat [容器内文件路径] | 查看容器内文件的内容 | docker exec mycontainer cat /var/log/app.log(查看容器 mycontainer 内 /var/log/app.log 文件的内容) |
docker exec [容器ID或名称] mkdir -p [目录路径] | 在容器内创建目录(-p 确保父目录存在) | docker exec mycontainer mkdir -p /data/config(在容器 mycontainer 内创建 /data/config 目录) |
docker exec [容器ID或名称] touch [文件路径] | 在容器内创建文件 | docker exec mycontainer touch /tmp/test.txt(在容器 mycontainer 内的 /tmp 目录下创建 test.txt 文件) |
docker exec [容器ID或名称] rm [文件路径] | 删除容器内的文件 | docker exec mycontainer rm /tmp/test.txt(删除容器 mycontainer 内的 /tmp/test.txt 文件) |
docker exec [容器ID或名称] rm -r [目录路径] | 递归删除容器内的目录及内容 | docker exec mycontainer rm -r /data/config(删除容器 mycontainer 内的 /data/config 目录及其所有内容) |
docker exec -it [容器ID或名称] /bin/bash | 进入容器的交互式终端,可执行各种 Linux 文件操作命令 | docker exec -it mycontainer /bin/bash(进入容器 mycontainer 后,可使用 cd、cp、mv 等命令操作文件) |
六、Docker Compose 常用命令
用于定义和运行多容器 Docker 应用程序。
| 命令 | 说明 | 示例 |
|---|---|---|
docker-compose up | 创建并启动所有服务(在前台) | docker-compose up |
docker-compose up -d | 创建并在后台启动所有服务 | docker-compose up -d |
docker-compose down | 停止并删除所有容器、网络 | docker-compose down |
docker-compose ps | 列出所有正在运行的compose服务 | docker-compose ps |
docker-compose logs | 查看所有服务的日志 | docker-compose logs |
docker-compose logs -f <服务名> | 实时追踪特定服务的日志 | docker-compose logs -f web |
docker-compose exec <服务名> <命令> | 在服务的容器中执行命令 | docker-compose exec db psql -U user |
docker-compose build | 重新构建服务的镜像 | docker-compose build |
docker-compose restart | 重启所有服务 | docker-compose restart |
六、系统与清理命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker info | 显示 Docker 系统信息 | docker info |
docker version | 显示 Docker 版本信息 | docker version |
docker system df | 查看 Docker 磁盘使用情况 | docker system df |
docker system prune | 一键清理:删除所有已停止的容器、未使用的网络、悬虚镜像、构建缓存 | docker system prune |
docker system prune -a | 彻底清理:在上述基础上,额外删除所有未被容器使用的镜像 | docker system prune -a (慎用!) |
实战命令组合示例
-
运行一个简单的Web服务并测试:
docker run -d --name my-web -p 80:80 nginx curl http://localhost -
进入容器进行调试:
docker exec -it my-web /bin/bash # 在容器内: cat /etc/nginx/nginx.conf -
调试容器启动问题:
# 如果容器一直重启,用交互模式启动看看日志 docker run -it --rm my-failing-app -
备份容器内的数据到宿主机:
docker cp my-container:/path/to/data /host/backup/ -
将本地镜像打包文件:
# 保存 (Save) - 将镜像保存为tar文件(包含所有层的历史) docker save -o my-image.tar my-image:tag # 加载 (Load) - 从tar文件加载镜像 docker load -i my-image.tar
更多推荐


所有评论(0)