当前位置: 首页 > news >正文

Docker常用命令及示例大全

以下将对Docker常用命令按类别进行详细讲解,并配以丰富示例,方便查阅。
在这里插入图片描述

命令目录,点击直达

    • 一、启动类命令
      • 1. 启动docker
      • 2. 关闭docker
      • 3. 重新启动docker
      • 4. docker设置自启动
      • 5. 查看docker运行状态
      • 6. 查看docker版本号等信息
      • 7. docker帮助
    • 二、镜像类命令
      • 1. 查看镜像
      • 2. 搜索镜像
      • 3. 拉取镜像
      • 4. 运行镜像
      • 5. 删除镜像
      • 6. 加载镜像
      • 7. 保存镜像
    • 三、容器类命令
      • 1. 查看正在运行的容器
      • 2. 创建容器
      • 3. 启动守护式容器(后台运行)
      • 4. 停止容器
      • 5. 启动容器
      • 6. 进入正在运行的容器
      • 7. 强制停止容器
      • 8. 删除容器
      • 9. 查看容器日志
      • 10. 查看容器内运行的进程
      • 11. 查看容器内部细节
      • 12. 创建容器数据卷挂载
      • 13. 查看数据卷
      • 14. 查看数据卷详情
      • 15. 删除数据卷
    • 四、网络类
      • 1. 查看网络
      • 2. 创建网络
      • 3. 查看网络数据源
      • 4. 删除网络
    • 五、Docker Compose
      • 1. 查看帮助
      • 2. 启动所有服务
      • 3. 停止并删除容器、网络、卷、镜像。
      • 4. 进入容器实例内部
      • 5. 展示容器
      • 6. 展示进程
      • 7. 查看容器输出日志
      • 8. 检查配置
      • 9. 启动服务
      • 10. 重启服务
      • 11. 停止服务
    • 六、其他
      • 1. 命令别名

一、启动类命令

1. 启动docker

命令systemctl start docker
定义:用于启动Docker服务,使其在系统中开始运行,以便后续进行容器相关的操作。
示例:假设您的服务器刚刚重启,需要启动Docker服务来运行之前创建的容器,在终端输入systemctl start docker即可启动Docker。

2. 关闭docker

命令systemctl stop docker
定义:与启动命令相对,该命令用于停止正在运行的Docker服务,停止后无法进行新的容器操作,已运行的容器也会停止运行(除非设置了特殊的重启策略)。
示例:当您需要对服务器进行一些维护操作,且暂时不需要Docker运行时,可以输入systemctl stop docker来关闭Docker服务。

3. 重新启动docker

命令systemctl restart docker
定义:此命令会先停止正在运行的Docker服务,然后再重新启动它。常用于在修改了Docker相关配置后,使配置生效。
示例:比如您修改了Docker的网络配置文件,为了让新配置生效,可在终端执行systemctl restart docker

4. docker设置自启动

命令systemctl enable docker
定义:设置Docker服务在系统开机时自动启动,无需人工手动启动,方便在服务器重启后能自动恢复Docker相关服务。
示例:在部署了多个基于Docker的应用服务的服务器上,为了确保每次开机后这些服务能正常运行,可通过systemctl enable docker设置Docker自启动。

5. 查看docker运行状态

命令systemctl status docker
定义:用于查看Docker服务当前的运行状态,包括是否正在运行、运行时间、占用资源情况等信息,方便排查可能出现的问题。
示例:如果您怀疑Docker服务出现异常,比如容器无法正常启动,可先通过systemctl status docker查看其运行状态,若显示“active (running)”则表示正常运行,若有其他提示则可根据提示进一步排查故障。

6. 查看docker版本号等信息

命令docker versiondocker info
定义

  • docker version主要用于查看Docker客户端和服务器端的具体版本号信息,了解当前所安装的Docker版本情况。
  • docker info除了能查看版本信息外,还能获取到更多关于Docker的详细信息,如当前有多少容器正在运行及其状态、本地存储的镜像信息等。
    示例
  • 若只想知道Docker的版本,可输入docker version,会显示类似如下信息:
Client:Version: 20.10.12API version: 1.41
...
Server:Version: 20.10.12API version: 1.41
...
  • 若想获取更全面的信息,输入docker info,会列出如容器数量、镜像数量、存储驱动等详细内容。

7. docker帮助

命令

  • docker --help:查看Docker的总体文档,了解所有可用命令及其简要说明。
  • docker run --help:查看docker run命令的详细帮助文档,获取关于运行容器命令的更多参数及用法说明。
    定义:提供关于Docker相关命令的使用说明和帮助信息,方便用户在不熟悉具体命令用法时快速查阅。
    示例:当您初次接触Docker,不确定如何使用docker run命令来运行容器时,可输入docker run --help,终端会显示该命令的详细参数解释及示例等内容,帮助您正确使用该命令。

二、镜像类命令

1. 查看镜像

命令docker images
定义:用于列出本地存储的所有Docker镜像信息,包括镜像名称、标签(版本)、镜像ID、创建时间、大小等内容,方便用户了解本地已有的镜像资源。
示例:在终端输入docker images,可能会显示如下类似信息:

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
ubuntu        latest    54c9d81cbb44   2 days ago    72.9MB
nginx         latest    91769060862f   3 days ago    133MB

这里展示了本地有ubuntunginx两个镜像的相关信息。

2. 搜索镜像

命令docker search [OPTIONS] 镜像名字
定义:在Docker Hub或其他配置的镜像注册表中搜索指定名称的镜像,可通过添加选项来进一步筛选搜索结果。
示例:若要搜索名为mysql的镜像,可在终端输入docker search mysql,会列出一系列与mysql相关的镜像信息,包括镜像名称、描述、星级评价、是否官方等内容,例如:

NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10000+    yes       no
mysql/mysql-server                MySQL Server is an open-source relational da…   100+      no        no
percona/mysql-server              Percona Server is a drop-in replacement for …   10+       no        no

3. 拉取镜像

命令docker pull [镜像名称:标签]
定义:从Docker Hub或其他配置的镜像源中下载指定的镜像到本地存储,若未指定标签,则默认拉取最新版本的镜像。
示例

  • 若要拉取最新版本的nginx镜像,可输入docker pull nginx,Docker会从官方镜像库下载最新的nginx镜像到本地。
  • 若要拉取特定版本的mysql镜像,比如mysql:5.7,则输入docker pull mysql:5.7,这样就会拉取到指定版本的mysql镜像。

4. 运行镜像

命令docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
定义:基于指定的镜像创建并启动一个容器,可通过添加不同的选项来配置容器的运行方式,如是否后台运行、端口映射、环境变量设置等。
示例

  • 若要在前台以交互模式运行一个ubuntu容器,可输入docker run -it ubuntu /bin/bash,这里-it表示以交互模式运行并分配一个伪终端,/bin/bash是在容器内要执行的命令,启动后会进入容器的命令行界面,可在其中进行各种操作,如安装软件等,按Ctrl+C可退出容器。
  • 若要在后台运行一个nginx容器,并将宿主机的80端口映射到容器的80端口,可输入docker run -d --name nginx -p 80:80 nginx,其中-d表示后台运行并返回容器ID,--name用于给容器指定名称,-p用于端口映射。

5. 删除镜像

命令

  • docker rmi 镜像名/镜像ID:用于删除指定的镜像,若镜像正在被容器使用,则会报错。
  • docker rmi -f 镜像名/镜像ID:强制删除指定的镜像,即使该镜像正在被容器使用,会先停止使用该镜像的容器再删除镜像。
    定义:从本地存储中删除不再需要的Docker镜像,以释放磁盘空间。
    示例
  • 若要删除名为nginx:latest的镜像(前提是该镜像未被使用),可输入docker rmi nginx:latest
  • 若要强制删除名为mysql的镜像(不管其是否被使用),可输入docker rmi -f mysql
  • 若要删除本地所有镜像,可输入docker rmi -f $(docker images -aq),这里-a表示显示全部镜像,-q表示只显示镜像ID,通过$( )将获取到的所有镜像ID作为参数传递给docker rmi -f命令来实现全部删除。

6. 加载镜像

命令docker load -i 镜像保存文件位置
定义:用于将之前通过docker save命令保存的镜像文件加载到本地Docker环境中,使其可再次被使用。
示例:假设之前将一个myimage.tar的镜像文件保存到了/home/user目录下,现在要加载该镜像,可在终端输入docker load -i /home/user/myimage.tar

7. 保存镜像

命令docker save 镜像名/镜像ID -o 镜像保存位置和名字
定义:将指定的本地Docker镜像保存为一个.tar格式的文件,以便在其他环境中进行传输或备份。
示例:若要将本地的tomcat镜像保存到/myimage.tar文件中,可输入docker save tomcat -o /myimage.tar

三、容器类命令

1. 查看正在运行的容器

命令docker ps
定义:用于列出当前正在运行的所有Docker容器信息,包括容器ID、镜像名称、所映射的端口、容器状态、容器名称等内容,方便查看正在运行的容器情况。
示例:在终端输入docker ps,可能会显示如下类似信息:

CONTAINER ID   IMAGE       PORTS      STATUS      NAMES
54c9d81cbb44   ubuntu      8080/tcp   Up 1 hour   my_ubuntu
91769060862f   nginx       80:80      Up 2 hours  my_nginx

这里展示了两个正在运行的容器my_ubuntumy_nginx的相关信息。

2. 创建容器

命令docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
定义:创建一个新的Docker容器,基于指定的镜像,并可根据所设置的选项来配置容器的各种属性,如名称、运行模式、端口映射、环境变量等。
示例

  • 若要创建一个名为my_mysql的MySQL容器,在后台运行,并将宿主机的3306端口映射到容器的3306端口,同时设置MySQL的根密码为123456,可输入:
docker run -d --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

这里-d表示后台运行,--name用于指定容器名称,-p用于端口映射,-e用于设置环境变量。

3. 启动守护式容器(后台运行)

命令docker run -d 容器名
定义:以守护模式(后台运行)启动指定名称的容器,容器启动后会在后台持续运行,不会占用当前终端的输入输出,可通过其他命令来查看和管理该容器。
示例:若要在后台启动一个名为redis的容器,可输入docker run -d redis,启动后可通过docker ps等命令查看该容器的运行状态。

4. 停止容器

命令docker stop 容器名
定义:用于停止正在运行的指定名称的容器,容器会正常停止运行,释放所占用的系统资源。
示例:若要停止名为my_nginx的容器,可在终端输入docker stop my_nginx

5. 启动容器

命令docker start 容器名
定义:用于启动之前已经停止的指定名称的容器,使其恢复运行状态。
示例:若之前停止了名为my_mysql的容器,现在要重新启动它,可在终端输入docker start my_mysql

6. 进入正在运行的容器

命令docker exec -it 容器名 bashshelldocker exec -it 容器名 /bin/bash
定义:在不中断容器运行的情况下,进入到正在运行的指定容器内部,以便在容器内部执行各种命令和操作,如查看容器内文件系统、安装软件等。
示例:若要进入正在运行的my_nginx容器内部,可输入docker exec -it my_nginx /bin/bash,进入后会出现容器内部的命令行提示符,可在此基础上进行操作。

7. 强制停止容器

命令docker kill 容器名
定义:强制立即停止正在运行的指定名称的容器,不考虑容器当前正在执行的任务是否完成,可能会导致容器内数据丢失或未正常保存等情况,一般在容器无法正常停止时使用。
示例:若docker stop命令无法正常停止名为my_nginx的容器,可尝试输入docker kill my_nginx来强制停止它。

8. 删除容器

命令

  • docker rm 容器ID:用于删除指定ID的容器,若容器正在运行,则会报错。
  • docker rm -f 容器ID:强制删除指定ID的容器,即使容器正在运行,会先强制停止容器再删除。
  • docker rm -f $(docker ps -a -q)docker ps -a -q | xargs docker rm:用于删除所有容器(包括正在运行和未运行的),前者通过将docker ps -a -q获取到的所有容器ID作为参数传递给docker rm -f来实现全部删除,后者则是通过管道操作将获取到的容器ID传递给docker rm命令来实现删除。
    定义:从本地环境中删除不再需要的Docker容器,以释放磁盘空间和系统资源。
    示例
  • 若要删除名为my_nginx的容器(前提是该容器已停止),可输入docker rm my_nginx
  • 若要强制删除正在运行的my_mysql容器,可输入docker rm -f my_mysql
  • 若要删除本地所有容器,可输入docker rm -f $(docker ps -a -q)

9. 查看容器日志

命令docker logs 容器名
定义:用于查看指定名称容器的运行日志,日志中记录了容器启动、运行过程中发生的各种事件、错误信息等,有助于排查容器运行过程中出现的问题。
示例:若要查看名为my_nginx的容器的运行日志,可在终端输入docker logs my_nginx,会显示出类似如下的日志信息:

2025-05-13 10:00:00 [nginx] starting up...
2025-05-13 10:01:00 [nginx] serving requests...

10. 查看容器内运行的进程

命令docker top 容器名
定义:用于查看指定名称容器内部正在运行的进程信息,包括进程ID、进程名称、CPU使用率、内存使用率等内容,可了解容器内的资源使用情况和运行状态。
示例:若要查看名为my_nginx的容器内运行的进程,可在终端输入docker top my_nginx,会显示出类似如下的进程信息:

PID    COMMAND      CPU%    MEM%
1      nginx: master 0.1     0.2
2      nginx: worker 0.2     0.3

11. 查看容器内部细节

命令docker inspect 容器名
定义:用于获取指定名称容器的详细内部信息,包括容器的配置信息、网络信息、挂载信息、环境变量等所有相关细节,可用于深入了解容器的状态和属性。
示例:若要查看名为my_nginx的容器的内部细节,可在终端输入docker inspect my_nginx,会返回一个包含大量详细信息的JSON格式数据,可通过查看该数据来了解容器的各种情况。

12. 创建容器数据卷挂载

命令docker run -d --name 容器名 -p 端口映射 -v 数据卷名:容器内路径 镜像名
定义:在创建容器时,通过-v参数来指定数据卷的挂载,将宿主机上的指定数据卷挂载到容器内的指定路径,实现数据的持久化存储和共享,即使容器被删除,数据卷中的数据依然存在。
示例:若要创建一个名为my_nginx的容器,并将宿主机上的html数据卷挂载到容器内的/usr/share/nginx/html路径,同时进行端口映射等操作,可输入:

docker run -d --name my_nginx -p 8# 创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

在上述示例中,我们创建了一个名为nginx的容器,它在后台运行(-d参数)。将主机的80端口映射到容器内的80端口(-p 80:80),并且通过-v html:/usr/share/nginx/html将一个名为html的数据卷挂载到容器内的/usr/share/nginx/html目录下。这样,容器内该目录下的数据变更可以反映在数据卷中,实现数据的持久化等需求。

13. 查看数据卷

定义:使用docker volume ls命令可以列出当前系统中所有已创建的Docker数据卷的相关信息。

示例

docker volume ls

执行该命令后,会显示出各个数据卷的名称、驱动等基本信息,帮助我们了解系统中存在哪些数据卷。

14. 查看数据卷详情

定义:通过docker volume inspect命令,并指定具体的数据卷名,可以获取该数据卷的详细信息,包括其挂载点、创建时间、所属容器等更多细节内容。

示例

# 查看数据卷详情
docker volume inspect html

这里假设我们之前创建了名为html的数据卷,执行上述命令后,会输出关于html数据卷的详细信息,以便我们深入了解其状态和配置情况。

15. 删除数据卷

定义:使用docker volume rm命令,并跟上要删除的数据卷名,即可删除指定的数据卷。需要注意的是,只有当数据卷没有被任何容器使用时才能成功删除。

示例

# 删除数据卷
docker volume rm html

如果html数据卷当前没有被其他容器挂载或使用,执行上述命令后,该数据卷就会被从系统中删除。

四、网络类

1. 查看网络

定义docker network ls命令用于查看当前系统中所有已创建的Docker网络的相关信息,比如网络的名称、驱动、范围等。

示例

docker network ls

执行此命令后,系统会列出所有已创建的Docker网络的基本信息,方便我们了解网络的总体情况。

2. 创建网络

定义:利用docker network create命令,并指定网络名,就可以在系统中创建一个新的Docker网络。

示例

# 创建网络
docker network create hmall

上述命令创建了一个名为hmall的Docker网络,后续可以将容器连接到这个网络中,以实现容器之间的网络通信等功能。

3. 查看网络数据源

定义:通过docker network inspect命令,并指定具体的网络名,可以查看该网络的详细信息,包括网络中的容器连接情况、网络配置参数等。

示例

# 查看网络数据源
docker network inspect hmall

假设我们之前创建了hmall网络,执行该命令后,会输出关于hmall网络的详细信息,有助于我们深入了解网络的具体状态和配置细节。

4. 删除网络

定义:使用docker network rm命令,并跟上要删除的网络名,就可以删除指定的Docker网络。

示例

# 删除网络
docker network rm hmall

如果hmall网络当前没有被任何容器使用,执行上述命令后,该网络就会被从系统中删除。

五、Docker Compose

1. 查看帮助

定义docker-compose -h命令用于查看Docker Compose的帮助信息,它会列出所有可用的命令选项及其简要说明,方便我们在使用过程中快速了解各个命令的功能和用法。

示例

docker-compose -h

执行该命令后,会在终端显示出详细的帮助内容,我们可以根据需要查看具体命令的用法指导。

2. 启动所有服务

定义docker-compose up命令用于启动在docker-compose.yml文件中定义的所有服务。如果添加-d参数,则可以让服务在后台运行,不占用当前终端的输入输出。

示例

# 启动所有服务
docker-compose up
# 后台运行
docker-compose up -d

例如,我们有一个docker-compose.yml文件定义了多个服务,执行上述命令后,这些服务就会按照配置启动起来。

3. 停止并删除容器、网络、卷、镜像。

定义docker-compose down命令会停止并删除由docker-compose.yml文件启动的容器、网络、数据卷以及相关的镜像(如果没有其他地方使用这些镜像)等资源,实现对整个应用环境的清理。

示例

docker-compose down

当我们想要彻底清理之前通过docker-compose启动的应用环境时,执行该命令即可完成相关资源的清理操作。

4. 进入容器实例内部

定义:使用docker-compose exec命令,并指定yml里面的服务ID,可以进入到对应的容器实例内部,以便在容器内执行各种命令和操作。

示例
假设在docker-compose.yml文件中有一个服务定义,其服务ID为my_service,要进入该容器内部可执行如下命令:

docker-compose exec my_service

进入容器后,就可以像在普通的Linux终端一样在容器内进行各种操作了。

5. 展示容器

定义docker-compose ps命令用于展示当前由docker-compose.yml文件启动的所有容器的相关信息,比如容器的名称、状态、端口映射等。

示例

docker-compose ps

执行该命令后,会在终端列出所有相关容器的详细信息,方便我们了解各个容器的运行状态。

6. 展示进程

定义docker-compose top命令用于展示由docker-compose.yml文件启动的所有容器内的进程信息,包括进程的ID、名称、用户等。

示例

docker-compose top

执行该命令后,会输出各个容器内正在运行的进程的相关信息,有助于我们了解容器内的运行情况。

7. 查看容器输出日志

定义:通过docker-compose logs命令,并指定yml里面的服务ID,可以查看对应服务所在容器的输出日志,了解容器内应用的运行情况、报错信息等。

示例
假设在docker-compose.yml文件中有一个服务定义,其服务ID为my_service,要查看该容器的输出日志可执行如下命令:

docker-compose logs my_service

执行该命令后,会在终端显示出该容器内应用的运行日志信息。

8. 检查配置

定义docker-compose config命令用于检查docker-compose.yml文件的配置是否正确。如果添加-q参数(即docker-compose config -q),则只有在配置有问题时才会输出相关信息,否则无输出,这样可以方便地在脚本等场景中进行配置检查。

示例

# 检查配置
docker-compose config
# 检查配置,有问题才有输出
docker-compose config -q

在修改了docker-compose.yml文件后,执行上述命令可以确保配置的正确性,避免因配置错误导致应用无法正常启动等问题。

9. 启动服务

定义docker-compose start命令用于启动在docker-compose.yml文件中已经定义但当前处于停止状态的服务。

示例

docker-compose start

当我们之前通过docker-compose停止了某些服务,现在想要重新启动它们时,执行该命令即可。

10. 重启服务

定义docker-compose restart命令用于对在docker-compose.yml文件中定义的服务进行重启操作,它会先停止服务,然后再重新启动。

示例

docker-compose restart

如果我们发现某个服务运行出现异常,执行该命令可以尝试重新启动该服务来解决问题。

11. 停止服务

定义docker-compose stop命令用于停止在docker-compose.yml文件中定义的服务。

示例

docker-compose stop

当我们想要暂时停止某个服务的运行时,执行该命令即可实现。

六、其他

1. 命令别名

在日常使用Docker的过程中,我们可以通过设置命令别名来简化一些常用命令的输入。

定义:通过修改/root/.bashrc文件,在其中添加自定义的别名定义,然后执行source /root/.bashrc命令使别名生效。

示例
首先,使用文本编辑器(如vi)打开/root/.bashrc文件:

vi /root/.bashrc

然后在文件中添加如下内容(这里是一些常见的Docker相关别名示例):

#.bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'

添加完成后,保存并退出文件(在vi中可通过:wq命令保存并退出)。最后执行如下命令使别名生效:

source /root/.bashrc

之后,我们就可以在终端中直接使用这些别名来执行相应的命令,比如输入dps就相当于执行docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}",这样可以大大提高命令输入的效率。

相关文章:

  • 构建你的第一个简单AI助手 - 入门实践
  • #跟着若城学鸿蒙# HarmonyOS NEXT学习之AlphabetIndexer组件详解
  • 【兽医电子处方软件】佳易王宠物医院电子处方管理系统:宠物医院诊所用什么软件?一键导入配方模板软件程序实操教程 #操作简单 #宠物医院软件下载安装
  • Python -将MP4文件转为GIF图片
  • 中国古代史5---隋唐时期
  • JavaScript 模块封装函数
  • 在scala中sparkSQL读入csv文件
  • maven工程跳过@SpringTest
  • Linux干货(一)
  • 需求实现与测试验证脱节,如何确保产品质量
  • 下周,Coinbase将被纳入标普500指数
  • 解锁 CPFR 潜力:电商智能补货优化算法的全链路设计与实战指南
  • 二叉树、红黑树与 B 树的对比
  • arctanx 导数 泰勒展开式证明
  • 代码随想录算法训练营第三十九天
  • 日常学习开发记录-rate评价组件
  • docker-compose部署thingsboard/tb-cassandra
  • MySQL:关系模型的基本理论
  • 这类物种组织heatmap有点东西
  • 贪心算法:最小生成树
  • MSCI中国指数5月调整:新增5只A股、1只港股
  • “典孝急乐批麻蚌赢”:互联网“八字真言”与当代赛博赢学
  • 三亚通报救护车省外拉警报器开道旅游:违规违法,责令公司停业整顿
  • 习近平同巴西总统卢拉会谈
  • 外交部:正确认识和对待历史是检验日本能否恪守和平发展承诺的重要标准
  • 云南一男子持刀致邻居3死1重伤案二审开庭,未当庭宣判