Docker 常用命令

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。

输出信息

  • 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

这个列表显示了本地存储的三个镜像:ubuntunginxhello-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.tardocker load [OPTIONS] --input FILE.tar
  • 说明:此命令用于从tar归档文件中加载镜像。这可以用于恢复备份的镜像或在不同主机之间导入镜像。
  • 示例docker load -i nginx.tardocker 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环境中存在的一种特殊镜像,它们已经被创建,但当前没有被任何容器所引用,同时也没有被赋予明确的仓库名和标签。这种镜像通常是在构建或删除镜像的过程中,由于某些原因(如构建取消、构建失败或删除操作未完全清理)而产生的。

虚悬镜像的成因

  1. 构建过程中的错误:在构建镜像时,如果某个步骤出错或构建被取消,可能会留下未被正确标记或引用的镜像层。
  2. 未标记的镜像:创建镜像后,如果没有为其指定仓库名和标签,它也会成为虚悬镜像。
  3. 删除操作不完全:在删除容器或镜像时,如果操作不当或Docker环境出现问题,可能导致部分镜像未被完全清理。

虚悬镜像的特点

  1. 无标签和仓库名 :虚悬镜像在Docker镜像列表中通常显示为<none>的仓库名和<none>的标签。
  2. 不被引用:这些镜像当前没有被任何容器所使用或引用。
  3. 不会自动清理:Docker的自动清理机制通常不会删除虚悬镜像,需要手动进行清理。

查看虚悬镜像

要查看Docker中的虚悬镜像,可以使用以下命令:

bash 复制代码
docker images -f "dangling=true"

或者,你也可以使用-a--all参数来查看所有镜像(包括虚悬镜像),但这样可能会列出更多的信息,需要手动筛选:

bash 复制代码
docker images -a

在输出中,你可以找到仓库名和标签都是<none>的镜像,它们就是虚悬镜像。

清理虚悬镜像

清理虚悬镜像以释放磁盘空间是一个好习惯。你可以使用以下命令来删除所有虚悬镜像:

bash 复制代码
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:containerPorthostPort:containerPort
      • -v:挂载宿主机的目录到容器的指定目录。
    • 启动容器
      • docker run -it --name="" IMAGE bash:启动交互式容器
      • docker run -d --name="" IMAGE bash:启动守护式容器
    • 离开容器
      • exit: run 进去容器, exit 退出,容器停止
      • Ctrl + p + q:run 进去容器, Ctrl + p + q 退出,容器停止

查看容器

  • 基本命令
    • docker ps:列出当前正在运行的容器。
  • 常用选项
    • -a--all:列出所有容器(包括未运行的)。
    • -l--latest:仅显示最新创建的容器(包括未运行的,如果指定了 -a)。
    • -n <num>:显示最新创建的 个容器。
    • -q--quiet:仅显示容器 ID。
    • --size:显示容器的大小。
    • --filter:根据提供的条件过滤输出。
  • 输出信息
    • CONTAINER ID:容器的唯一标识符。
    • IMAGE:容器使用的镜像名称。
    • COMMAND:容器启动时运行的命令。
    • CREATED:容器创建的时间。
    • STATUS:容器的当前状态,如"Up 3 minutes"表示容器已运行3分钟。
    • PORTS:容器暴露的端口以及映射到宿主机的端口(如果有的话)。
    • NAMES:用户为容器指定的名称(如果未指定,则自动生成)。

停止和启动容器

  • docker stop :停止正在运行的容器。
    • 语法:docker stop 容器ID或容器名
  • docker kill :强制停止正在运行的容器。
    • 语法:docker kill 容器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 ps -a -q | xargs docker rm

进入容器

  • docker exec :在运行的容器中执行命令。
    • 语法:docker exec -it 容器ID或容器名 /bin/bash(或 /bin/sh,取决于容器内的shell)
    • 这个命令会打开一个新的终端,允许用户与容器进行交互,而不会停止容器。
  • docker attach :连接到正在运行的容器。
    • 语法:docker attach 容器ID或容器名
    • 注意:使用 docker attach 退出容器时(如使用 exit 命令),容器也会停止。因此,更推荐使用 docker exec

docker execdocker attach 的区别

Docker ExecDocker Attach 是Docker 管理容器时常用的两个命令,它们在功能和用法上存在显著差异。以下是这两个命令的主要区别:

功能差异
  • Docker Exec

    • 允许用户在正在运行的容器内部执行命令或启动新进程。
    • 不会打开一个新的TTY(终端仿真器)连接到容器,而是将命令的结果直接输出到终端。
    • 用户可以通过这个命令与容器进行交互,执行各种操作,如运行shell脚本、安装软件包、查看日志等。
    • 使用-i(或--interactive)选项可以保持标准输入打开,允许用户与命令交互;-t(或--tty)选项可以分配一个伪终端。
    • 执行完毕后,容器将继续运行,不会因为执行了Docker Exec命令而停止。
  • Docker Attach

    • 用于连接到正在运行的容器的标准输入、输出和错误输出(stdin、stdout和stderr)。
    • 它允许用户直接与容器内的shell进行交互,就像在本地终端下操作一样。
    • 使用这个命令,用户可以实时看到容器内的输出,并进行命令输入。
    • 但是,docker attach命令会直接连接到容器的主进程,如果容器的主进程退出或者被终止,连接也会被关闭。
    • 如果用户想要退出当前的连接,可以通过特定的组合键(如Ctrl+P, Ctrl+Q)来退出,而不是直接退出容器。
使用场景
  • Docker Exec

    • 更适合用于需要在容器中执行一次性命令或长时间运行的后台任务。
    • 由于它会启动新的进程,因此即使退出该进程,容器也会继续运行。
  • Docker Attach

    • 更适合用于需要实时查看或操作容器内进程的输出和输入的场景。
    • 但是,由于它与容器的主进程共享输入输出,因此如果主进程退出,连接也会中断。
退出机制
  • Docker Exec

    • 执行完毕后,用户可以通过输入exit命令来退出容器内的shell,但这不会影响容器的运行状态。
  • Docker Attach

    • 用户可以通过特定的组合键(如Ctrl+P, Ctrl+Q)来退出当前的连接,而不会停止容器的运行。如果直接输入exit命令,则可能会退出容器的主进程,导致容器停止运行(这取决于容器的启动命令和配置)。

综上所述,Docker Exec和Docker Attach在功能和用法上存在明显的差异,用户应根据具体的需求和场景来选择合适的命令。

查看容器日志

  • docker logs :查看容器的输出日志。
    • 语法:docker logs 容器ID或容器名
    • 跟随查看(实时输出日志):docker logs -f 容器ID或容器名

导入导出容器

导出容器

Docker容器导出主要使用docker export命令,该命令将容器的文件系统内容导出为一个tar归档文件。但请注意,导出的内容不包括容器的配置、端口映射、网络设置等元数据信息。

导出步骤

  1. 停止容器(如果容器正在运行)

    bash 复制代码
    docker stop <container_name_or_id>

    这一步是可选的,但建议在进行导出前停止容器,以确保导出的是一致性的文件系统状态。

  2. 使用docker export命令导出容器

    bash 复制代码
    docker export <container_name_or_id> > <output_tar_file.tar>

    或者,你也可以通过管道直接输出到文件:

    bash 复制代码
    docker export <container_name_or_id> | gzip > <output_tar_file.tar.gz>

    这样可以压缩导出的文件,便于传输和存储。

导入容器

Docker容器导入主要使用docker import命令,但需要注意的是,docker import实际上是将导出的tar文件作为新的镜像的根文件系统来创建一个新的镜像,而不是直接恢复为一个容器。因此,导入后你需要基于这个新镜像来启动一个新的容器。

导入步骤

  1. 使用docker import命令导入tar文件

    bash 复制代码
    docker import <input_tar_file.tar> <repository:tag>

    例如:

    bash 复制代码
    docker import mycontainer.tar myrepo/myimage:latest

    这将创建一个新的镜像myrepo/myimage:latest,其根文件系统来自mycontainer.tar文件。

  2. 基于新镜像启动容器

    bash 复制代码
    docker run -d --name <new_container_name> <repository:tag>

    例如:

    bash 复制代码
    docker run -d --name my_new_container myrepo/myimage:latest

注意事项

  • 导出的tar文件不包含容器的配置、端口映射、网络设置等元数据信息,因此导入后创建的容器将是一个全新的容器,需要重新配置。
  • 如果需要迁移完整的容器环境(包括配置和依赖服务),通常建议使用docker savedocker load命令来保存和加载镜像,或者使用Docker Compose来管理多容器应用。
  • 导入的tar文件在docker import命令中被视为新的镜像的根文件系统,因此你可以为导入的镜像指定新的仓库名、标签等信息。

综上所述,Docker的容器导入导出功能主要用于迁移容器内部的数据状态,而不是整个容器及其配置。在实际应用中,应根据具体需求选择合适的方法。

其他常用命令

  • docker rename:重命名容器。

    • 语法:docker rename 旧容器名 新容器名
  • docker inspect:查看容器内部细节

    • 语法:docker inspect 容器ID或容器名
  • docker cp:在容器和宿主机之间复制文件。

    • 语法
      • docker cp 宿主机路径 容器ID或容器名:容器内路径
      • docker cp 容器ID或容器名:容器内路径 宿主机路径
  • docker top`:查看容器内运行的进程

    • 语法:docker top 容器ID或容器名

这些命令是 Docker 容器管理的基础,通过它们可以方便地对容器进行创建、管理、维护和调试。

相关推荐
南猿北者1 小时前
docker容器
docker·容器
二十雨辰2 小时前
[linux]docker基础
linux·运维·docker
time never ceases2 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
MonkeyKing_sunyuhua4 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林5 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€6 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘6 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
全能全知者7 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器
阿尔帕兹9 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
ZHOU西口10 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac