Docker基础操作命令众多,这些命令可以按如下方式进行分类:
- 镜像操作
- 容器操作
- 网络操作
- 数据卷操作
- LOG查询
等方面进行分类。
一、镜像操作命令
docker images
:用于列出本地系统中所有的 Docker 镜像。镜像就像是一个模板,它包含了运行容器所需的所有文件、配置和依赖项。通过docker images命令,可以查看镜像的名称、标签、ID、创建时间以及大小等信息,例如:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 05a60464f1d5 2 weeks ago 133MB
ubuntu 20.04 98c375a7b220 3 weeks ago 72.8MB
docker pull
:用于从 Docker 镜像仓库(如 Docker Hub)拉取镜像。
docker pull nginx:latest
上述命令会从 Docker Hub 拉取最新版本的 Nginx 镜像。
docker build
:基于 Dockerfile 构建自定义镜像。
docker build -t my-custom-image:1.0 .
此命令会在当前目录(.
)查找 Dockerfile 并构建名为 my-custom-image
、标签为 1.0
的镜像。
docker rmi
:删除本地的 Docker 镜像。
docker rmi nginx:latest
该命令会删除本地的 nginx:latest
镜像。
二、容器操作命令
docker ps
::用于列出正在运行的 Docker 容器。
容器是基于镜像创建的可运行实例,当使用一个镜像启动一个容器后,就可以通过docker ps命令查看容器的相关信息,如容器 ID、运行的命令、创建时间、状态、端口映射以及所使用的镜像等,例如:
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 05a60464f1d5 2 weeks ago 133MB
ubuntu 20.04 98c375a7b220 3 weeks ago 72.8MB
docker run -d -p 8080:80 nginx:latest
此命令会使用 nginx:latest
镜像创建一个后台运行(-d
)的容器,并将容器的 80 端口映射到主机的 8080 端口。
# 启动容器
docker start my-container
# 停止容器
docker stop my-container
# 重启容器
docker restart my-container
docker exec -it my-container bash
该命令会以交互式(-i
)和伪终端(-t
)模式在 my-container
容器内启动一个 Bash 会话。
docker rm my-container
注意:
1、不能删除一个正在run的程序;
2、如果一个image下启动了一个或多个容器,且容器正在运行。如果要删除image,必须按如下步骤进行:
关于镜像和容器的补充说明:
两者的关系
- 镜像与容器的关系:容器是由镜像创建而来的,镜像是容器的基础。可以将镜像看作是一个类,而容器则是这个类的实例。一个镜像可以创建多个容器实例,这些容器共享镜像的文件系统和基础配置,但各自有独立的运行时环境和状态。
- 命令作用的关系:
docker images
命令主要用于管理和查看镜像资源,帮助了解本地有哪些可用的镜像,以便进行拉取、构建、删除等操作。而docker ps
命令则主要用于监控和管理正在运行的容器,可以通过它了解容器的运行状态,进而进行停止、启动、重启等操作。
docker images
和docker ps
分别从镜像和容器的角度提供了对Docker环境的不同视角,它们相互配合,帮助用户全面了解和管理Docker中的资源。
三、网络操作命令
docker network ls
:列出所有 Docker 网络。
docker network ls
docker network create
:创建一个新的 Docker 网络。
docker network create my-network
# 将容器连接到网络
docker network connect my-network my-container
# 从网络中断开容器
docker network disconnect my-network my-container
四、数据卷操作命令
docker volume ls
:列出所有 Docker 数据卷。
docker volume ls
docker volume create
:创建一个新的 Docker 数据卷。
docker volume create my-volume
docker volume rm
:删除一个或多个 Docker 数据卷。
docker volume rm my-volume
五、其他常用命令
docker info
docker logs my-container
docker logs
命令用于查看 Docker 容器的日志输出,这对于调试和监控容器内应用程序的运行状态非常有用。以下是对该命令的详细解释:
基本语法
docker logs [OPTIONS] CONTAINER
其中,OPTIONS
是可选参数,CONTAINER
是容器的名称或 ID。
常用选项及示例
1. -f
或 --follow
- 作用:持续跟踪日志输出,类似于
tail -f
命令。当容器内的应用程序持续产生日志时,使用该选项可以实时查看新的日志信息。 - 示例:
docker logs -f my-container
此命令会持续输出 my-container
容器的日志,直到手动停止(使用 Ctrl + C
)。
2. --since
- 作用:只显示自指定时间之后的日志。时间格式可以是
YYYY-MM-DDTHH:MM:SS
或者相对时间(如2m
表示 2 分钟前)。 - 示例:
# 显示自 2024-01-01 12:00:00 之后的日志
docker logs --since "2024-01-01T12:00:00" my-container
# 显示自 5 分钟前之后的日志
docker logs --since 5m my-container
3. --until
- 作用:只显示直到指定时间之前的日志。时间格式与
--since
相同。 - 示例:
# 显示直到 2024-01-01 12:00:00 之前的日志
docker logs --until "2024-01-01T12:00:00" my-container
# 显示直到 3 分钟前之前的日志
docker logs --until 3m my-container
4. -t
或 --timestamps
- 作用:在日志输出中添加时间戳,方便了解每条日志的产生时间。
- 示例:
docker logs -t my-container
输出的日志每条前面会带有时间戳,类似如下格式:
2024-01-01T12:00:00.123456000Z Log message here
5. --tail
- 作用:只显示日志的最后 N 行。当日志文件非常大时,使用该选项可以快速查看最新的日志信息。
- 示例:
# 显示日志的最后 10 行
docker logs --tail 10 my-container
六、高级用法
结合 grep
进行日志过滤
可以将 docker logs
的输出通过管道传递给 grep
命令,以过滤出包含特定关键字的日志信息。
docker logs my-container | grep "error"
该命令会过滤出 my-container
容器日志中包含 “error” 关键字的行。
查找 指定开始、结束时间范围内
的数据
docker logs --since "2024-01-01T12:00:00" --until "2024-01-01T12:05:00" my-container