Docker常用命令详解

1. docker run - 启动容器

docker run 是 Docker 中最常用的命令之一,用于启动一个新的容器并运行镜像。其基本格式如下:

1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

常用选项:

  • -d:后台运行容器(即容器将以分离模式运行)。
  • -p:映射容器端口到主机端口,例如 -p 8080:80 将容器的 80 端口映射到主机的 8080 端口。
  • --name:为容器指定一个名称。
  • -v:挂载主机目录或卷到容器,例如 -v /path/on/host:/path/in/container
  • --rm:容器停止后自动删除容器。

示例:

1
docker run -d -p 8080:80 --name my_container nginx

此命令将启动一个名为 my_container 的容器,运行 Nginx 镜像,并将容器的 80 端口映射到主机的 8080 端口。

2. docker build - 构建镜像

docker build 命令用于从 Dockerfile 构建镜像。Dockerfile 是一种文本文件,包含了一系列指令,用于定义如何创建镜像。

基本格式:

1
docker build [OPTIONS] PATH | URL | -

常用选项:

  • -t:为构建的镜像指定标签(tag)。
  • .:指定构建上下文(通常是当前目录,Dockerfile 所在目录)。

示例:

1
docker build -t my_image .

此命令将在当前目录下构建 Docker 镜像,并将镜像命名为 my_image

3. docker ps - 查看运行中的容器

docker ps 命令用于列出当前正在运行的容器。默认情况下,docker ps 只显示正在运行的容器。

常用选项:

  • -a:显示所有容器,包括已停止的。
  • -q:只显示容器的 ID。

示例:

1
docker ps

此命令将列出所有正在运行的容器。

1
docker ps -a

此命令将列出所有容器(包括已停止的)。

4. docker stopdocker start - 停止和启动容器

  • docker stop 用于停止正在运行的容器。
  • docker start 用于启动一个已停止的容器。

示例:

1
docker stop my_container

此命令将停止名为 my_container 的容器。

1
docker start my_container

此命令将启动名为 my_container 的已停止容器。

5. docker rm - 删除容器

docker rm 命令用于删除一个或多个容器。要删除的容器必须处于停止状态。

示例:

1
docker rm my_container

此命令将删除名为 my_container 的容器。

6. docker rmi - 删除镜像

docker rmi 命令用于删除一个或多个镜像。

示例:

1
docker rmi my_image

此命令将删除名为 my_image 的镜像。

7. docker exec - 在运行中的容器中执行命令

docker exec 命令允许你在运行中的容器中执行命令。例如,你可以在容器内启动一个新的终端或运行某个程序。

示例:

1
docker exec -it my_container bash

此命令将打开名为 my_container 的容器,并在其中启动一个交互式 Bash 终端。

8. docker logs - 查看容器日志

docker logs 命令用于查看容器的标准输出和标准错误日志。

示例:

1
docker logs my_container

此命令将显示 my_container 容器的日志。

实用的命令行技巧

1. 查看所有容器及其信息

使用 docker ps -a 查看所有容器的状态,带上 -q 选项只返回容器 ID,方便批量操作。

1
docker ps -aq

2. 删除所有已停止的容器

可以使用以下命令删除所有已停止的容器:

1
docker rm $(docker ps -aq -f status=exited)

3. 删除未使用的镜像和容器

使用 docker system prune 命令可以清理所有未使用的镜像、容器和网络,帮助释放磁盘空间。

1
docker system prune -a

4. 查看镜像历史

你可以使用 docker history 命令查看镜像的构建历史,了解镜像是如何构建的。

1
docker history my_image