从入门到实战详解Docker中的常用命令

 更新时间:2026年06月04日 08:52:39   作者:程序猿乐锅  
本文是一份Docker入门命令手册,重点为大家介绍了镜像和容器管理的常用操作,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

前言

刚开始学 Docker 的时候,最容易遇到的一个问题就是:命令看着很多,但真正上手时总是记不住,或者一不小心就把镜像和容器的命令混了。

我这两天在整理自己练习 Docker 命令时用到的内容,顺手把它改成一篇适合分享的学习笔记。本文不讲太多抽象概念,重点放在平时最常用、最容易碰到的 Docker 命令上,同时补充一些实战里很常见的报错和使用场景。

如果你也是刚接触 Docker,这篇文章可以直接当成一份入门命令手册来看。

一、先搞清楚两个核心概念

在记命令之前,先把两个概念分清楚:

  • 镜像(Image):可以理解成模板
  • 容器(Container):可以理解成镜像运行起来后的实例

说得直白一点:

  • docker images 是看“模板”
  • docker run 是用“模板”创建并启动“实例”
  • docker ps 是看“实例”现在有没有在运行

只要这层关系不乱,后面的命令就会顺很多。

二、Docker 使用前的准备命令

启动 Docker 服务

systemctl start docker

这个命令不是 Docker 子命令,而是 Linux 系统命令。它的作用是启动 Docker 服务。

如果 Docker 服务没有启动,你在执行 docker imagesdocker ps 这类命令时,往往会看到下面这个错误:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock

这个报错的重点不是命令写错了,而是 Docker 后台服务没起来。所以遇到这个错误,优先检查 Docker 服务状态。

三、镜像相关的常用命令

镜像相关命令建议放在前面记,因为很多操作都要从镜像开始。

1. 查看本地镜像

docker images

作用:查看当前机器上已经下载好的镜像。

常见输出字段含义如下:

  • REPOSITORY:镜像名
  • TAG:版本标签
  • IMAGE ID:镜像 ID
  • CREATED:创建时间
  • SIZE:镜像大小

比如下面这些都属于镜像名称:

nginx:1.20.2
mysql:8
redis:7

这里要注意,镜像名和版本之间用的是 :,不是 -

2. 拉取镜像

docker pull redis:7

作用:从 Docker 仓库把镜像下载到本地。

如果本地没有某个镜像,直接 docker run 时 Docker 也可能自动去拉取,但在学习阶段,我更建议先手动执行 docker pull,这样思路更清晰。

3. 删除本地镜像

docker rmi nginx:1.20.2

作用:删除本地镜像。

这个命令一般在以下场景比较常见:

  • 镜像拉错版本了
  • 本地磁盘空间紧张
  • 需要清理不再使用的镜像

4. 导出镜像

docker save -o nginx-1.20.2.tar nginx:1.20.2

作用:把镜像导出成一个 tar 文件,便于备份或者拷贝到其他机器。

这个命令里有两个容易出错的点:

  • 子命令必须是 save
  • 镜像名必须写成 镜像名:标签

也就是说,下面这种写法是错的:

docker save -o nginx-1.20.2.tar nginx-1.20.2

错因就在于把 nginx:1.20.2 写成了 nginx-1.20.2

5. 导入镜像

docker load -i nginx-1.20.2.tar

作用:把之前导出的镜像文件重新导入 Docker。

这个命令通常和 docker save 配套使用,尤其适合离线环境或者需要跨机器传镜像的场景。

四、容器相关的常用命令

相比镜像,容器命令在日常使用中更高频,因为我们平时真正操作的大多是“运行起来的容器”。

1. 创建并运行容器

docker run nginx:1.20.2

作用:基于指定镜像创建并启动一个容器。

如果你只写:

docker run

那肯定会报错,因为 run 后面至少要跟一个镜像名。

2. 后台运行容器并指定名称和端口

docker run -d --name nginx -p 80:80 nginx:1.20.2

这是非常常用的一条命令,建议重点记住。

参数说明:

  • -d:后台运行
  • --name nginx:给容器起一个名字
  • -p 80:80:端口映射

其中端口映射格式是:

-p 宿主机端口:容器端口

也就是说,上面的 -p 80:80 表示访问宿主机的 80 端口,本质上是在访问容器里的 80 端口。

3. 查看正在运行的容器

docker ps

作用:查看当前正在运行的容器。

这个命令适合用来快速判断:

  • 容器有没有启动成功
  • 当前有哪些容器正在跑
  • 容器暴露了哪些端口

4. 查看所有容器

docker ps -a

作用:查看所有容器,包括正在运行的和已经停止的。

这个命令特别实用。因为很多时候不是容器“没了”,而是容器“停了”。如果你只看 docker ps,可能会误以为容器不存在。

5. 停止容器

docker stop nginx

作用:停止一个正在运行的容器。

要注意,停止容器不代表删除容器,它只是从“运行中”变成了“已停止”。

6. 启动已停止的容器

docker start nginx

作用:重新启动一个已经存在但当前处于停止状态的容器。

这里很多初学者容易把 runstart 混掉,实际上它们的区别很清楚:

  • docker run:创建并启动容器
  • docker start:启动已有容器

7. 重启容器

docker restart nginx

作用:重启容器。

这个命令在修改配置、重载服务或者排查临时问题时很常见,属于日常维护中的高频命令。

8. 查看容器日志

docker logs nginx

作用:查看容器运行日志。

如果想持续跟踪日志,可以这样写:

docker logs -f nginx

很多问题,比如 Nginx 启动失败、Spring Boot 容器报错、端口冲突等,第一时间都应该先去看日志。

9. 进入容器内部

docker exec -it nginx bash

作用:进入正在运行的容器,并打开一个交互式终端。

参数说明:

  • exec:在容器内执行命令
  • -i:保持标准输入开启
  • -t:分配终端
  • bash:进入 bash 环境

不过并不是所有镜像里都有 bash。如果没有,可以改成:

docker exec -it nginx sh

这个命令在排查容器内文件、查看配置、手动测试服务时特别有用。

10. 查看容器详细信息

docker inspect nginx

作用:查看容器的详细配置。

常见能看到的信息包括:

  • 容器 IP
  • 端口映射
  • 挂载目录
  • 启动参数
  • 网络信息

如果你在查“容器到底映射到哪个端口了”“文件到底挂载到哪里了”,inspect 非常有帮助。

11. 宿主机和容器之间复制文件

docker cp nginx:/etc/nginx/nginx.conf .

作用:把容器里的文件复制到宿主机。

反过来也可以把宿主机文件复制进容器,这在调试配置文件时很常见。

12. 查看资源占用

docker stats

作用:实时查看容器的 CPU、内存、网络等资源占用情况。

如果你发现某个容器特别卡,或者怀疑内存吃得太多,可以先用这个命令看一眼。

13. 删除容器

docker rm -f nginx

作用:强制删除容器。

参数说明:

  • rm:删除容器
  • -f:如果容器还在运行,就先停掉再删除

这个命令适合做快速清理,但在正式环境里还是建议先确认再删,避免误操作。

五、用一条主线把命令串起来

如果只是一条一条背命令,其实很容易忘。更好的方式是按操作流程去记:

1. 先确认 Docker 服务正常

systemctl start docker

2. 查看本地有没有需要的镜像

docker images

3. 如果没有,就先拉取镜像

docker pull nginx:1.20.2

4. 基于镜像启动容器

docker run -d --name nginx -p 80:80 nginx:1.20.2

5. 查看容器是否正常运行

docker ps
docker ps -a

6. 需要排错时看日志、进容器

docker logs -f nginx
docker exec -it nginx bash

7. 需要暂停、恢复或重启时执行控制命令

docker stop nginx
docker start nginx
docker restart nginx

8. 最后做清理或者备份

docker rm -f nginx
docker save -o nginx.tar nginx:1.20.2
docker load -i nginx.tar

这样记忆就不是一堆零散命令,而是一条完整的 Docker 使用流程。

六、初学者最容易踩的几个坑

1. Docker 服务没启动

错误信息:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock

解决方式:

systemctl start docker

2. 命令拼写错误

错误写法:

docker iamges

正确写法:

docker images

这类错误看起来很小,但在刚开始练命令的时候特别常见。

3. 把镜像名和版本标签写错

错误写法:

docker save -o nginx-1.20.2.tar nginx-1.20.2

正确写法:

docker save -o nginx-1.20.2.tar nginx:1.20.2

记住一点就行:镜像版本前面用的是冒号 :

4. 少写了子命令

错误写法:

docker -o nginx-1.20.2.tar nginx:1.20.2

正确写法:

docker save -o nginx-1.20.2.tar nginx:1.20.2

因为 -odocker save 的参数,不是 docker 根命令的参数。

七、Docker 常用命令速记版

如果你是为了复习或者考试前快速过一遍,可以直接记下面这组:

systemctl start docker
docker images
docker pull nginx:1.20.2
docker run -d --name nginx -p 80:80 nginx:1.20.2
docker ps
docker ps -a
docker stop nginx
docker start nginx
docker restart nginx
docker logs -f nginx
docker exec -it nginx bash
docker inspect nginx
docker cp nginx:/etc/nginx/nginx.conf .
docker stats
docker rm -f nginx
docker rmi nginx:1.20.2
docker save -o nginx.tar nginx:1.20.2
docker load -i nginx.tar

八、结语

Docker 命令刚开始看起来很多,但真正常用的其实就集中在几类:

  • 镜像管理
  • 容器创建与运行
  • 容器状态查看
  • 日志与排错
  • 清理与备份

我的建议是,不要只死记命令本身,而是按照“镜像 -> 容器 -> 查看状态 -> 进入排查 -> 清理备份”这条主线去记。这样学起来会更顺,也更接近真实开发和部署时的使用方式。

如果你刚开始学 Docker,可以先把本文里的 runpslogsexecrm 这几条命令练熟,后面再补 saveloadinspectstats 这些命令,效果会更好。

以上就是从入门到实战详解Docker中的常用命令的详细内容,更多关于Docker常用命令的资料请关注脚本之家其它相关文章!

相关文章

  • Docker Push常见报错及解决方案总结

    Docker Push常见报错及解决方案总结

    这篇文章主要介绍了Docker Push常见报错及解决方案,包括HTTP响应、insecure-registries配置、Registry使用HTTPS以及connection refused问题的详细分析和解决方法,需要的朋友可以参考下
    2026-03-03
  • Docker安装部署RabbitMQ的实现步骤

    Docker安装部署RabbitMQ的实现步骤

    RabbitMQ是一款开源的消息队列中间件,能够在分布式系统中实现可靠的消息传递,本文主要介绍了Docker安装部署RabbitMQ的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 解决Docker删除镜像报错:Error response from daemon:conflict:unable to delete xxx (cannot be forced)

    解决Docker删除镜像报错:Error response from daemon:con

    删除Docker镜像时遇到冲突,因为镜像正在被一个运行中的容器使用,解决方法是先停止并删除该容器,然后再尝试删除镜像,此外,还可以选择强制删除镜像,但这可能会导致数据丢失
    2024-11-11
  • docker如何运行一个python脚本

    docker如何运行一个python脚本

    这篇文章主要介绍了docker如何运行一个python脚本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker学习笔记之Docker部署Java web系统

    Docker学习笔记之Docker部署Java web系统

    这篇文章主要介绍了Docker学习笔记之Docker部署Java web系统,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Docker跨主机容器通信overlay实现过程详解

    Docker跨主机容器通信overlay实现过程详解

    这篇文章主要介绍了Docker跨主机容器通信overlay实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Docker动态添加端口不需要重新建立镜像的方法

    Docker动态添加端口不需要重新建立镜像的方法

    Docker容器在运行期间有时可能会需要修改或者添加暴露的端口,但是有时候运行的容器又不想再另外建立一个新的镜像。接下来通过本文给大家分享Docker动态添加端口不需要重新建立镜像的方法,感兴趣的朋友一起看看吧
    2019-07-07
  • Docker报错denied:requested access to the resource is denied解决

    Docker报错denied:requested access to the r

    这篇文章主要为大家介绍了Docker报错denied:requested access to the resource is denied解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Docker部署Minio集群的实现步骤

    Docker部署Minio集群的实现步骤

    本文介绍 Docker Compose 部署 Minio 集群的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-05-05
  • MacBookPro下docker的安装与使用教程

    MacBookPro下docker的安装与使用教程

    Windows与Linux下关于docker的安装使用方法有很多,今天小编这里给大家分享的是MacOS下docker的安装与简单使用案例,非常简单,给有需要的小伙伴参考下
    2017-03-03

最新评论