发表时间: 2025-02-03 10:20:00+08:00 来自: shiyi 分类: 运维 标签: 操作命令

第一部分:镜像管理

镜像是构建容器的基础,类似于虚拟机的模板。

命令 解释与细节
docker imagesdocker image ls 列出本地所有镜像。
docker search <image_name> 从 Docker Hub 搜索镜像。例如:docker search nginx
docker pull <image_name>[:tag] 拉取(下载)镜像。不指定 tag 时默认为 latest。例如:docker pull ubuntu:20.04
docker rmi <image_id>docker image rm <image_id> 删除指定的本地镜像。
docker rmi $(docker images -q) (小心!) 删除所有本地镜像。
docker build -t <name:tag> <path> 根据指定路径的 Dockerfile 构建镜像。-t 用于给镜像打标签。例如:docker build -t my-app:1.0 .
docker build -t <name:tag> -f <Dockerfile_path> . 使用指定路径的 Dockerfile 进行构建。
docker history <image_id> 查看镜像的构建历史层。
docker tag <source> <target> 给镜像打一个新的标签。例如:docker tag my-app:1.0 my-registry.com/my-app:1.0
docker save -o <file.tar> <image> 将镜像保存为一个 tar 归档文件。例如:docker save -o my-app.tar my-app:1.0
docker load -i <file.tar> 从 tar 归档文件加载镜像。

第二部分:容器生命周期管理

这是最核心的部分,涉及容器的创建、启动、停止和删除。

命令 解释与细节
docker run [options] <image> [command] 创建并启动一个新容器。
docker create [options] <image> [command] 只创建容器但不启动。
docker start <container_id> 启动一个已停止的容器。
docker stop <container_id> 优雅地停止一个运行中的容器(发送 SIGTERM,等待一段时间后 SIGKILL)。
docker restart <container_id> 重启容器。
docker kill <container_id> 强制立即停止一个运行中的容器(发送 SIGKILL)。
docker pause <container_id> 暂停容器内的所有进程。
docker unpause <container_id> 恢复暂停的容器。
docker rm <container_id> 删除一个已停止的容器。
docker rm -f <container_id> 强制删除一个容器(包括正在运行的)。
docker rm $(docker ps -aq) (小心!) 删除所有已停止的容器。
docker container prune 交互式地删除所有已停止的容器。
docker update --memory="512m" <container> 更新一个运行中容器的配置(如内存限制)。

docker run 的常用选项(非常重要)

选项 解释与细节
-d--detach 在后台运行容器(守护进程模式)。
-it 交互模式运行容器,通常与 -it 连用,分配一个伪终端。例如:docker run -it ubuntu bash
--name <name> 为容器指定一个名称,而不是使用随机 ID。
-p <host_port>:<container_port> 端口映射。例如:-p 8080:80 将容器的 80 端口映射到主机的 8080 端口。
-v <host_path>:<container_path> 挂载数据卷。例如:-v /my/data:/var/lib/mysql
--network <network> 指定容器加入的网络。例如:--network my-bridge
-e <KEY>=<VALUE> 设置环境变量。例如:-e MYSQL_ROOT_PASSWORD=my-secret-pw
--rm 容器退出时自动删除它。非常适合一次性任务。
--restart=<policy> 设置重启策略(no, on-failure, always, unless-stopped)。

第三部分:查看与监控

用于查看容器状态、日志和资源使用情况。

命令 解释与细节
docker ps 列出正在运行的容器。
docker ps -a 列出所有容器(包括已停止的)。
docker logs <container_id> 查看容器的日志输出。
docker logs -f <container_id> 跟随模式查看日志(类似 tail -f)。
docker logs --tail N <container_id> 查看最后 N 行日志。
docker top <container_id> 查看容器内运行的进程。
docker stats 动态显示所有容器的资源使用统计(CPU,内存,网络IO等)。
docker stats <container_id> 显示指定容器的资源使用统计。
docker inspect <container_id> 获取容器(或镜像)的底层详细信息(JSON格式)。包括配置、网络、卷等。
docker port <container_id> 查看容器的端口映射情况。
docker diff <container_id> 检查容器文件系统相对于其镜像的更改(A:增加,C:修改,D:删除)。

第四部分:进入容器与执行命令

用于在运行的容器内部进行操作。

命令 解释与细节 区别
docker exec -it <container_id> <command> 正在运行的容器中执行命令。最常用的是启动一个 shell:docker exec -it my-container bash 主要方式,用于与运行中的容器交互。
docker attach <container_id> 附着到一个正在运行的容器的主进程上。如果主进程是 shell,则可以交互;如果主进程是服务,则只能看到日志。注意:使用 Ctrl+C 会停止容器,使用 Ctrl+P Ctrl+Q 可以分离而不停止。 连接到主进程,不推荐新手使用。

第五部分:网络管理

Docker 提供了强大的网络功能来连接容器。

命令 解释与细节
docker network ls 列出所有 Docker 网络。
docker network create <network_name> 创建一个新的用户自定义网络(推荐用于多容器应用)。
docker network inspect <network_name> 查看网络的详细信息。
docker network connect <network> <container> 将容器连接到指定网络。
docker network disconnect <network> <container> 将容器从指定网络断开。
docker network prune 删除所有未使用的网络。

第六部分:数据卷管理

数据卷是持久化容器数据的首选机制。

命令 解释与细节
docker volume ls 列出所有数据卷。
docker volume create <volume_name> 创建一个命名的数据卷。
docker volume inspect <volume_name> 查看数据卷的详细信息(如挂载点)。
docker volume rm <volume_name> 删除一个数据卷。
docker volume prune (小心!) 删除所有未被容器使用的数据卷。

第七部分:Docker Compose

用于定义和运行多容器 Docker 应用程序的工具,通过 docker-compose.yml 文件配置。

命令 解释与细节
docker compose up 创建并启动所有服务。
docker compose up -d 在后台启动所有服务。
docker compose down 停止并删除所有容器、网络。(加 -v 可以同时删除 compose 中声明的卷)
docker compose ps 列出 compose 项目中的所有容器。
docker compose logs 查看所有服务的日志。
docker compose logs -f <service> 跟随模式查看指定服务的日志。
docker compose exec <service> <command> 在指定服务的容器中执行命令。例如:docker compose exec db mysql -u root -p
docker compose build 构建或重新构建 compose 文件中定义的服务镜像。
docker compose pull 拉取 compose 文件中定义的服务镜像。
docker compose config 验证并查看编译后的 compose 文件内容。

第八部分:系统与清理

用于管理 Docker 守护进程和清理磁盘空间。

命令 解释与细节
docker system df 查看 Docker 的磁盘使用情况(镜像、容器、卷、缓存)。
docker system prune (小心!) 一键清理所有未被使用的资源(停止的容器、无用的网络、构建缓存等)。
docker system prune -a (非常小心!) 更彻底的清理,包括所有未被使用的镜像。
docker system info 显示整个 Docker 系统的信息。
docker version 显示 Docker 客户端和服务器端的版本信息。