docker常用命令
引言
Docker 作为当下最流行的容器化技术,以其轻量、快速、可移植的特性,极大地简化了应用的构建、分发和部署流程。掌握 Docker 的基本命令是高效使用 Docker 的关键。本文将系统性地梳理 Docker 日常使用中最常用、最核心的命令,涵盖容器生命周期管理、镜像操作、数据管理、网络配置等方面,助你快速上手并提升工作效率。
一、容器生命周期管理(核心操作)
1. docker run:创建并启动新容器
功能:这是最常用的命令之一,用于基于指定镜像创建并启动一个新的容器。
常用参数:
-d:后台运行容器 (detached mode)。-it:分配一个伪终端并保持 STDIN 打开,通常用于交互式容器 (如/bin/bash)。--name:为容器指定一个自定义名称。-p:映射端口 (主机端口:容器端口)。-v:挂载卷 (主机目录:容器目录 或 卷名:容器目录)。--rm:容器退出时自动删除。-e:设置环境变量。
示例:
docker run -d --name my-nginx -p 8080:80 nginx:latest
docker run -it --rm ubuntu:22.04 /bin/bash
2. docker start:启动已停止的容器
功能:启动一个或多个处于停止 (Exited) 状态的容器。
示例:
docker start my-nginx
3. docker stop:停止运行中的容器
功能:优雅地停止一个或多个运行中的容器(发送 SIGTERM,然后 SIGKILL)。
示例:
docker stop my-nginx
4. docker restart:重启容器
功能:重启一个或多个容器。
示例:
docker restart my-nginx
5. docker kill:强制停止容器
功能:强制立即停止一个或多个运行中的容器(直接发送 SIGKILL)。
示例:
docker kill my-nginx
6. docker exec:在运行中的容器内执行命令
功能:在正在运行的容器中启动一个新进程(通常是执行一个命令或进入 shell)。
常用参数:-it(用于交互式命令)。
示例:
docker exec -it my-nginx /bin/bash # 进入容器的 bash shell
docker exec my-nginx ls /app # 在容器内执行 ls 命令
7. docker pause / docker unpause:暂停/恢复容器进程
功能:暂停容器内所有进程(pause),或恢复已暂停的进程(unpause)。
示例:
docker pause my-nginx
docker unpause my-nginx
8. docker rm:删除一个或多个容器
功能:删除已停止的容器。使用 -f 可以强制删除运行中的容器(先 kill)。
示例:
docker rm my-nginx # 删除已停止的容器
docker rm -f my-nginx # 强制删除运行中的容器
9. docker ps:列出容器
功能:查看容器列表。
常用参数:
-a:显示所有容器(包括已停止的)。-q:仅显示容器 ID。-l:显示最近创建的容器。
示例:
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
二、镜像管理
1. docker images:列出本地镜像
功能:查看本地存储的 Docker 镜像列表。
常用参数:-a(显示所有镜像,包括中间层), -q(仅显示镜像 ID)。
示例:
docker images
2. docker pull:拉取镜像
功能:从镜像仓库(默认 Docker Hub)下载镜像到本地。
示例:
docker pull ubuntu:22.04
3. docker search:搜索镜像
功能:在 Docker Hub 等仓库中搜索镜像。
示例:
docker search nginx
4. docker build:构建镜像
功能:根据 Dockerfile 构建新的镜像。
常用参数:-t(指定镜像名称和标签)。
示例:
docker build -t my-custom-image:1.0 . (注意最后的 . 表示当前目录是构建上下文)
5. docker rmi:删除镜像
功能:删除本地一个或多个镜像。使用 -f 强制删除。
示例:
docker rmi ubuntu:22.04 # 删除指定镜像
docker rmi $(docker images -q) # 删除所有镜像 (谨慎使用!)
6. docker tag:标记镜像
功能:为本地镜像创建一个新的标签(通常用于准备推送到私有仓库)。
示例:
docker tag my-custom-image:1.0 my-registry.com/my-custom-image:1.0
7. docker push:推送镜像
功能:将本地镜像推送到远程仓库(如 Docker Hub、私有仓库)。
示例:
docker push my-registry.com/my-custom-image:1.0
三、信息查看与日志
1. docker logs:获取容器日志
功能:查看容器的标准输出 (STDOUT) 和标准错误 (STDERR) 日志。
常用参数:-f(跟踪日志输出), -t(显示时间戳), --tail(显示末尾指定行数)。
示例:
docker logs my-nginx # 查看全部日志
docker logs -f -t --tail=100 my-nginx # 实时跟踪最后100行日志并带时间戳
2. docker inspect:查看容器/镜像的详细信息
功能:获取容器或镜像的底层详细信息(配置、网络设置、挂载点等),输出为 JSON 格式。
示例:
docker inspect my-nginx # 查看容器详细信息
docker inspect ubuntu:22.04 # 查看镜像详细信息
3. docker stats:实时监控容器资源使用
功能:实时显示一个或多个容器的资源使用统计(CPU、内存、网络 I/O、磁盘 I/O)。
示例:
docker stats my-nginx
4. docker top:查看容器进程
功能:查看容器内正在运行的进程信息。
示例:
docker top my-nginx
四、数据管理(卷与绑定挂载)
1. docker volume create:创建数据卷
功能:创建一个新的、命名的数据卷(由 Docker 管理)。
示例:
docker volume create my-data
2. docker volume ls:列出数据卷
功能:列出所有本地数据卷。
示例:
docker volume ls
3. docker volume inspect:查看卷详细信息
功能:查看指定数据卷的详细信息(如挂载点)。
示例:
docker volume inspect my-data
4. docker volume rm:删除数据卷
功能:删除一个或多个数据卷。
示例:
docker volume rm my-data
5. docker volume prune:删除未使用的数据卷
功能:删除所有未被任何容器引用的本地数据卷。
示例:
docker volume prune (谨慎使用!)
6. 挂载卷 (-v 或 --mount)
如前所述,在 docker run 时使用 -v volume_name:/path/in/container 或 -v /host/path:/path/in/container 来分别挂载命名卷或绑定宿主机目录。
五、网络管理
1. docker network ls:列出网络
功能:列出 Docker 引擎管理的所有网络。
示例:
docker network ls
2. docker network create:创建网络
功能:创建一个新的用户自定义网络(支持 bridge, overlay 等驱动)。
示例:
docker network create my-network
3. docker network inspect:查看网络详细信息
功能:查看指定网络的详细信息(连接容器、IPAM 配置等)。
示例:
docker network inspect bridge
4. docker network connect:将容器连接到网络
功能:将运行中的容器连接到指定网络。
示例:
docker network connect my-network my-nginx
5. docker network disconnect:断开容器与网络的连接
功能:将容器从指定网络中断开。
示例:
docker network disconnect my-network my-nginx
6. docker network rm:删除网络
功能:删除一个或多个未使用的网络。
示例:
docker network rm my-network
六、Docker Compose (简化多容器应用)
虽然 docker-compose 是一个单独的工具,但在管理多容器应用时不可或缺,通常与 docker-compose.yml 文件配合使用。
1. docker-compose up:启动/构建服务
功能:根据 docker-compose.yml 文件创建并启动所有定义的服务。-d 参数用于后台运行。
示例:
docker-compose up -d
2. docker-compose down:停止并移除服务
功能:停止并移除由 up 创建的所有容器、网络、卷。
示例:
docker-compose down
3. docker-compose ps:列出服务
功能:列出项目中正在运行的容器。
示例:
docker-compose ps
4. docker-compose logs:查看服务日志
功能:查看项目中所有服务的日志。常用 -f 跟踪。
示例:
docker-compose logs -f
5. docker-compose build:构建服务镜像
功能:构建或重新构建服务所需的镜像。
示例:
docker-compose build
七、Docker Swarm (集群管理)
对于生产环境集群,Docker Swarm 提供了原生的集群和编排能力。
1. docker swarm init:初始化 Swarm 集群
功能:将当前节点设置为 Swarm 管理节点。
示例:
docker swarm init --advertise-addr <MANAGER-IP>
2. docker swarm join:加入 Swarm 集群
功能:将节点作为工作者或管理节点加入现有 Swarm 集群。
示例:
docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>
3. docker node ls:列出集群节点
功能:列出 Swarm 集群中的所有节点。
示例:
docker node ls
4. docker service create:创建服务
功能:在 Swarm 集群中创建一个新的服务(多副本容器)。
示例:
docker service create --name web -p 8080:80 --replicas 3 nginx:latest
5. docker service ls:列出服务
功能:列出 Swarm 集群中运行的服务。
示例:
docker service ls
6. docker service scale:扩缩容服务
功能:调整服务副本数量。
示例:
docker service scale web=5
7. docker service update:更新服务
功能:更新服务的配置(如镜像版本、环境变量等)。
示例:
docker service update --image nginx:alpine web
结语
熟练掌握这些 Docker 常用命令是高效管理和运维容器化应用的基础。本文涵盖了从基础容器操作、镜像管理到高级的网络、数据卷以及 Docker Compose 和 Swarm 集群命令,希望能成为你日常工作中的实用参考手册。建议在实际操作中多加练习,并结合 --help 参数查看每个命令的详细用法和选项。
更多推荐
所有评论(0)