Docker 常用命令
帮助启动类命令
Docker 的帮助启动类命令主要涉及 Docker 服务的启动、停止、重启、查看状态以及设置开机自启动等操作。
启动 Docker
- 命令:
systemctl start docker
- 说明:该命令用于启动 Docker 服务。在大多数 Linux 发行版中,Docker 服务是通过 systemd 管理的,因此使用
systemctl
命令来启动服务。
停止 Docker
- 命令:
systemctl stop docker
- 说明:该命令用于停止正在运行的 Docker 服务。同样,通过
systemctl
命令来管理服务的停止。
重启 Docker
- 命令:
systemctl restart docker
- 说明:当需要重启 Docker 服务时,可以使用该命令。这通常用于在修改 Docker 配置或更新 Docker 版本后,确保服务以最新的配置或版本运行。
查看 Docker 状态
- 命令:
systemctl status docker
- 说明:该命令用于查看 Docker 服务的当前状态,包括是否正在运行、启动时间、进程ID等信息。这对于诊断 Docker 服务问题非常有用。
设置 Docker 开机自启动
- 命令:
systemctl enable docker
- 说明:该命令用于设置 Docker 服务在系统启动时自动启动。这对于确保 Docker 服务在系统重启后能够自动恢复运行非常重要。
查看 Docker 概要信息
- 命令:
docker info
- 说明:虽然这个命令不属于直接的启动类命令,但它提供了 Docker 系统的概要信息,包括容器数量、镜像数量、存储驱动、执行驱动等,对于了解 Docker 系统的整体状态非常有用。
查看 Docker 总体帮助文档
- 命令:
docker --help
- 说明:该命令显示 Docker 的总体帮助文档,列出了所有可用的 Docker 命令及其简短描述。这是了解 Docker 命令结构和可用选项的好方法。
查看 Docker 命令帮助文档
- 命令:
docker 具体命令 --help
- 说明:对于任何特定的 Docker 命令,都可以通过在该命令后添加
--help
选项来查看其详细的帮助文档。这包括命令的语法、选项、示例等,对于深入了解和使用 Docker 命令非常有帮助。
综上所述,Docker 的帮助启动类命令主要涉及服务的启动、停止、重启、查看状态以及设置开机自启动等操作,同时提供了查看 Docker 系统概要信息和帮助文档的命令。这些命令是 Docker 用户日常管理和维护 Docker 服务的基本工具。
镜像命令
Docker 的常用镜像命令涵盖了镜像的搜索、拉取(下载)、查看、删除、导出、导入等多个方面。
列出本地所有镜像
在Docker中,docker images
命令用于列出本地所有的镜像。这个命令是Docker用户日常操作中最常用的命令之一,它可以帮助用户快速查看和管理本地的镜像资源。
基本用法
-
命令格式:
docker images [OPTIONS] [REPOSITORY[:TAG]]
-
常用选项:
-a
或--all
:列出本地所有的镜像(包括中间映像层,默认情况下,会过滤掉中间映像层)。--digests
:显示镜像的摘要信息。-f
或--filter
:显示满足条件的镜像。--format
:指定返回值的模板文件,用于自定义输出的格式。--no-trunc
:显示完整的镜像信息,避免截断。-q
或--quiet
:只显示镜像的ID。
输出信息
执行docker images
命令后,通常会列出以下信息:
- REPOSITORY:镜像仓库名称,从Docker Hub下载的镜像名称或用户自定义编译出的镜像名称。
- TAG:镜像标签,镜像版本标签,未定义时默认显示
latest
,代表最新版本。 - IMAGE ID:镜像ID,Docker系统分配的ID,通常显示的是截断的ID,实际ID更长。
- CREATED:创建时间,一般显示镜像创建时离当下经过的时间。
- SIZE:镜像大小,硬盘中占用空间的大小。
对于使用v2或更高版本格式的镜像,还会有一个DIGEST
列,以sha256:
开头,这是镜像的摘要信息。摘要信息是一个内容可寻址标识符,只要生成镜像的输入保持不变,摘要值就是可预测的。
示例
假设执行docker images
命令,输出可能如下(示例内容,实际输出会根据本地镜像情况有所不同):
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 1d622ef86b13 2 weeks ago 64.2MB
nginx latest f09fe80ddb0f 3 weeks ago 133MB
hello-world latest fce289e99eb9 4 months ago 1.84kB
这个列表显示了本地存储的三个镜像:ubuntu
、nginx
和hello-world
,包括它们的标签、镜像ID、创建时间和大小。
注意事项
- 如果想要删除某个镜像,可以使用
docker rmi
命令,并指定镜像的ID或名称及标签。 - 镜像的存储和管理对于Docker容器的运行至关重要,合理的镜像管理可以提高系统的整体性能和稳定性。
综上所述,docker images
命令是Docker中用于列出本地镜像的基本且重要的命令,通过它用户可以方便地查看和管理本地镜像资源。
搜索镜像
- 命令:
docker search [OPTIONS] TERM
- 说明:此命令用于在Docker Hub或其他配置的镜像仓库中搜索镜像。TERM是你想要搜索的镜像名称或相关关键词。
- 示例:
docker search nginx
,将搜索所有与nginx相关的镜像。
拉取(下载)镜像
- 命令:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
- 说明:此命令用于从配置的镜像仓库中下载镜像。NAME是镜像的名称,TAG是镜像的标签(默认为latest,表示最新版本),DIGEST是镜像的摘要信息。
- 示例:
docker pull nginx:latest
,将下载最新版本的nginx镜像。
查看镜像
- 命令:
docker images [OPTIONS] [REPOSITORY[:TAG]]
- 说明:此命令用于列出本地主机上的所有镜像或满足特定条件的镜像。如果不指定任何参数,将列出所有镜像。
- 示例:
docker images
,列出所有本地镜像。
删除镜像
- 命令:
docker rmi [OPTIONS] IMAGE [IMAGE...]
- 说明:此命令用于删除一个或多个镜像。IMAGE可以是镜像的名称、标签或ID。如果镜像被容器使用,则无法直接删除,需要先删除或停止使用该镜像的容器。
- 示例:
docker rmi nginx:latest
,将删除最新版本的nginx镜像。
导出镜像
- 命令:
docker save [OPTIONS] IMAGE [IMAGE...] > FILE.tar
- 说明:此命令用于将一个或多个镜像保存为一个tar归档文件。这可以用于备份或在不同主机之间传输镜像。
- 示例:
docker save -o nginx.tar nginx:latest
,将最新版本的nginx镜像保存为nginx.tar文件。
导入镜像
- 命令:
docker load [OPTIONS] < FILE.tar
或docker load [OPTIONS] --input FILE.tar
- 说明:此命令用于从tar归档文件中加载镜像。这可以用于恢复备份的镜像或在不同主机之间导入镜像。
- 示例:
docker load -i nginx.tar
或docker load < nginx.tar
,将从nginx.tar文件中加载镜像。
其他常用镜像命令
- 查看镜像详细信息:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
,用于获取镜像的详细信息,如创建时间、大小、配置等。 - 给镜像打标签:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
,用于给镜像添加新的标签,便于管理和引用。
以上命令是Docker镜像管理的常用命令,通过它们可以方便地进行镜像的搜索、下载、查看、删除、导出和导入等操作。
Docker 虚悬镜像
Docker虚悬镜像(dangling image)是指在Docker环境中存在的一种特殊镜像,它们已经被创建,但当前没有被任何容器所引用,同时也没有被赋予明确的仓库名和标签。这种镜像通常是在构建或删除镜像的过程中,由于某些原因(如构建取消、构建失败或删除操作未完全清理)而产生的。
虚悬镜像的成因
- 构建过程中的错误:在构建镜像时,如果某个步骤出错或构建被取消,可能会留下未被正确标记或引用的镜像层。
- 未标记的镜像:创建镜像后,如果没有为其指定仓库名和标签,它也会成为虚悬镜像。
- 删除操作不完全:在删除容器或镜像时,如果操作不当或Docker环境出现问题,可能导致部分镜像未被完全清理。
虚悬镜像的特点
- 无标签和仓库名:虚悬镜像在Docker镜像列表中通常显示为
<none>
的仓库名和<none>
的标签。 - 不被引用:这些镜像当前没有被任何容器所使用或引用。
- 不会自动清理:Docker的自动清理机制通常不会删除虚悬镜像,需要手动进行清理。
查看虚悬镜像
要查看Docker中的虚悬镜像,可以使用以下命令:
docker images -f "dangling=true"
或者,你也可以使用-a
或--all
参数来查看所有镜像(包括虚悬镜像),但这样可能会列出更多的信息,需要手动筛选:
docker images -a
在输出中,你可以找到仓库名和标签都是<none>
的镜像,它们就是虚悬镜像。
清理虚悬镜像
清理虚悬镜像以释放磁盘空间是一个好习惯。你可以使用以下命令来删除所有虚悬镜像:
docker image prune
执行该命令后,Docker会列出所有将被删除的虚悬镜像,并询问你是否确认删除。如果你确认要删除,输入y
并按回车键即可。
另外,如果你知道某个特定虚悬镜像的ID,也可以直接使用docker rmi
命令来删除它,但需要注意的是,这样做需要小心谨慎,以免误删其他重要镜像。
总结
Docker虚悬镜像是Docker环境中一种特殊的镜像状态,它们没有被任何容器所引用且没有明确的仓库名和标签。定期清理虚悬镜像是一种良好的Docker环境维护习惯,可以帮助释放磁盘空间并减少环境复杂性。通过docker images -f "dangling=true"
命令可以查看虚悬镜像,而docker image prune
命令则用于删除所有虚悬镜像。
容器命令
Docker 的常用容器命令涵盖了容器的创建、启动、停止、删除、查看、日志管理等多个方面。以下是一些常用的 Docker 容器命令及其说明:
创建并启动容器
- docker run:这是最常用的命令之一,用于新建并启动容器。
- 语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 常用选项:
--name="容器名"
:为容器指定一个名称。-d
:后台运行容器,并返回容器ID。-i
:以交互模式运行容器,通常与-t
同时使用。-t
:为容器重新分配一个伪输入终端,通常与-i
同时使用。-P
:随机端口映射,将容器内部使用的网络端口映射到主机上。-p
:指定端口映射,格式为ip:hostPort:containerPort
或hostPort:containerPort
。-v
:挂载宿主机的目录到容器的指定目录。
- 语法:
查看容器
- docker ps:列出当前所有正在运行的容器。
- 常用选项:
-a
:显示所有容器(包括未运行的)。-l
:显示最近创建的容器。-n
:显示最近创建的n个容器。-q
:静默模式,只显示容器ID。
- 常用选项:
停止和启动容器
- docker stop:停止正在运行的容器。
- 语法:
docker stop 容器ID或容器名
- 语法:
- docker start:启动已经停止的容器。
- 语法:
docker start 容器ID或容器名
- 语法:
- docker restart:重启容器。
- 语法:
docker restart 容器ID或容器名
- 语法:
删除容器
- docker rm:删除已经停止的容器。
- 语法:
docker rm 容器ID或容器名
- 强制删除(包括正在运行的容器):
docker rm -f 容器ID或容器名
- 删除所有容器(包括正在运行的容器):
docker rm -f $(docker ps -aq)
- 语法:
进入容器
- docker exec:在运行的容器中执行命令。
- 语法:
docker exec -it 容器ID或容器名 /bin/bash
(或/bin/sh
,取决于容器内的shell) - 这个命令会打开一个新的终端,允许用户与容器进行交互,而不会停止容器。
- 语法:
- docker attach:连接到正在运行的容器。
- 语法:
docker attach 容器ID或容器名
- 注意:使用
docker attach
退出容器时(如使用exit
命令),容器也会停止。因此,更推荐使用docker exec
。
- 语法:
查看容器日志
- docker logs:查看容器的输出日志。
- 语法:
docker logs 容器ID或容器名
- 跟随查看(实时输出日志):
docker logs -f 容器ID或容器名
- 语法:
其他常用命令
-
docker rename:重命名容器。
- 语法:
docker rename 旧容器名 新容器名
- 语法:
-
docker inspect:查看容器的详细信息。
- 语法:
docker inspect 容器ID或容器名
- 语法:
-
docker cp:在容器和宿主机之间复制文件。
- 语法:
docker cp 宿主机路径 容器ID或容器名:容器内路径
或docker cp 容器ID或容器名:容器内路径 宿主机路径
- 语法:
这些命令是 Docker 容器管理的基础,通过它们可以方便地对容器进行创建、管理、维护和调试。