Docker 常用操作命令

一、镜像 (Image) 相关命令

镜像是创建容器的基础,相当于一个只读的模板。

命令 说明 示例
docker images 列出本地所有镜像 docker images
docker search <name> 从 Docker Hub 搜索镜像 docker search nginx
docker pull <image>[:tag] 下载镜像(不指定 tag 默认为 latest) docker pull nginx:alpine
docker rmi <image_id> 删除​​一个​​本地镜像 docker rmi abc123def456
docker rmi -f <image_id> ​强制​​删除一个本地镜像(即使有容器在用) docker rmi -f abc123def456
docker rmi $(docker images -q) 删除​​所有​​本地镜像 -
docker build -t <name:tag> . 根据当前目录的 Dockerfile 构建镜像 docker build -t my-app:v1 .
docker image prune 删除所有未被使用的​​悬虚镜像​​(none) docker image prune
docker image prune -a ​删除所有未被任何容器使用的镜像​ docker image prune -a

二、容器 (Container) 相关命令

容器是由镜像创建的运行实例。

1. 生命周期管理

命令 说明 示例
docker run [options] <image> ​创建并启动​​一个新容器 docker run -d --name my-nginx nginx
docker start <container> ​启动​​一个已停止的容器 docker start my-nginx
docker stop <container> ​停止​​一个运行中的容器(SIGTERM) docker stop my-nginx
docker restart <container> ​重启​​一个容器 docker restart my-nginx
docker kill <container> ​强制停止​​一个容器(SIGKILL) docker kill my-nginx
docker pause <container> ​暂停​​容器内的所有进程 docker pause my-nginx
docker unpause <container> ​恢复​​容器内的所有进程 docker unpause my-nginx
docker rm <container> ​删除一个已停止的容器​ docker rm my-nginx
docker rm -f <container> ​强制删除一个容器​​(无论是否运行) docker rm -f my-nginx
docker container prune ​删除所有已停止的容器​ docker container prune

docker run常用选项:​

  • -d:后台运行容器(守护模式)
  • --name:为容器指定一个名称
  • -p <host_port>:<container_port>:映射主机端口到容器端口
    • 示例:-p 8080:80将主机的 8080 端口映射到容器的 80 端口
  • -v <host_path>:<container_path>:挂载数据卷
    • 示例:-v /opt/data:/var/lib/mysql
  • -e <key=value>:设置环境变量
    • 示例:-e MYSQL_ROOT_PASSWORD=123456
  • --rm:容器停止后自动删除(常用于测试)
  • -it:启动一个交互式容器(通常与 /bin/bash连用)
    • 示例:docker run -it ubuntu /bin/bash

2. 查看与查询

命令 说明 示例
docker ps 列出​​正在运行​​的容器 docker ps
docker ps -a 列出​​所有​​容器(包括已停止的) docker ps -a
docker logs <container> 查看容器的日志输出 docker logs my-nginx
docker logs -f <container> ​实时跟踪​​(follow)日志输出 docker logs -f my-nginx
docker logs --tail 10 <container> 查看最后 10 条日志 docker logs --tail 10 my-nginx
docker inspect <container> 查看容器的详细信息(JSON 格式) docker inspect my-nginx

3. 交互与执行

命令 说明 示例
docker exec [options] <container> <command> 在​​正在运行​​的容器中执行命令 docker exec my-nginx ls /
docker exec -it <container> /bin/bash ​进入​​一个正在运行的容器的交互式 Shell docker exec -it my-nginx /bin/bash
docker attach <container> 附着到正在运行的容器(不推荐,退出会导致容器停止) docker attach my-nginx

​注意:​​ exec是在容器内​​新启动一个进程​​,而 attach是直接连接容器​​原有的主进程​​。


三、网络 (Network) 相关命令

命令 说明 示例
docker network ls 列出所有网络 docker network ls
docker network create <name> 创建一个新的网络 docker network create my-net
docker network inspect <network> 查看网络的详细信息 docker network inspect bridge
docker network connect <network> <container> 将容器连接到指定网络 docker network connect my-net my-nginx
docker network disconnect <network> <container> 断开容器与指定网络的连接 docker network disconnect my-net my-nginx
docker network prune 删除所有未使用的网络 docker network prune

​使用网络:​

在 docker run时使用 --network选项指定容器使用的网络。

docker run -d --name app --network my-net my-app

四、数据卷 (Volume) 相关命令

数据卷用于持久化容器产生的数据。

命令 说明 示例
docker volume ls 列出所有数据卷 docker volume ls
docker volume create <name> 创建一个数据卷 docker volume create my-data
docker volume inspect <name> 查看数据卷的详细信息 docker volume inspect my-data
docker volume rm <name> 删除一个数据卷 docker volume rm my-data
docker volume prune 删除所有未被使用的数据卷 docker volume prune

​使用数据卷:​

在 docker run时使用 -v选项。

  • ​命名卷:​​ -v my-data:/app/data(推荐)
  • ​绑定挂载:​​ -v /host/path:/app/data

五、Docker Compose 常用命令

Compose 用于定义和运行多容器应用。

命令 说明 示例
docker-compose up 创建并启动所有服务(在前台) docker-compose up
docker-compose up -d 创建并​​后台启动​​所有服务 docker-compose up -d
docker-compose down ​停止并删除​​所有容器、网络 docker-compose down
docker-compose start 启动已存在的服务容器 docker-compose start
docker-compose stop 停止服务容器,但不删除 docker-compose stop
docker-compose restart 重启服务 docker-compose restart
docker-compose ps 列出本项目下的所有容器 docker-compose ps
docker-compose logs 查看所有服务的日志 docker-compose logs
docker-compose logs -f <service> 实时跟踪某个服务的日志 docker-compose logs -f web
docker-compose exec <service> <command> 在某个服务中执行命令 docker-compose exec db mysql -u root -p
docker-compose build 重新构建服务的镜像 docker-compose build

总结与最佳实践

  1. ​容器命名​​:始终使用 --name为容器指定一个有意义的名称,便于管理
  2. ​端口映射​​:使用 -p参数将容器内部服务暴露给外部
  3. ​数据持久化​​:务必使用 -v或​​命名卷​​来保存重要数据,避免容器删除后数据丢失
  4. ​查看日志​​:使用 docker logs -f来调试和监控应用程序
  5. ​进入容器​​:使用 docker exec -it ... /bin/bash进入容器内部进行调试
  6. ​清理资源​​:定期使用 prune系列命令(container pruneimage prunevolume prune)清理不再使用的资源,释放磁盘空间