从入门到实战详解Docker中的常用命令
前言
刚开始学 Docker 的时候,最容易遇到的一个问题就是:命令看着很多,但真正上手时总是记不住,或者一不小心就把镜像和容器的命令混了。
我这两天在整理自己练习 Docker 命令时用到的内容,顺手把它改成一篇适合分享的学习笔记。本文不讲太多抽象概念,重点放在平时最常用、最容易碰到的 Docker 命令上,同时补充一些实战里很常见的报错和使用场景。
如果你也是刚接触 Docker,这篇文章可以直接当成一份入门命令手册来看。
一、先搞清楚两个核心概念
在记命令之前,先把两个概念分清楚:
- 镜像(Image):可以理解成模板
- 容器(Container):可以理解成镜像运行起来后的实例
说得直白一点:
docker images是看“模板”docker run是用“模板”创建并启动“实例”docker ps是看“实例”现在有没有在运行
只要这层关系不乱,后面的命令就会顺很多。
二、Docker 使用前的准备命令
启动 Docker 服务
systemctl start docker
这个命令不是 Docker 子命令,而是 Linux 系统命令。它的作用是启动 Docker 服务。
如果 Docker 服务没有启动,你在执行 docker images、docker ps 这类命令时,往往会看到下面这个错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
这个报错的重点不是命令写错了,而是 Docker 后台服务没起来。所以遇到这个错误,优先检查 Docker 服务状态。
三、镜像相关的常用命令
镜像相关命令建议放在前面记,因为很多操作都要从镜像开始。
1. 查看本地镜像
docker images
作用:查看当前机器上已经下载好的镜像。
常见输出字段含义如下:
REPOSITORY:镜像名TAG:版本标签IMAGE ID:镜像 IDCREATED:创建时间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
作用:重新启动一个已经存在但当前处于停止状态的容器。
这里很多初学者容易把 run 和 start 混掉,实际上它们的区别很清楚:
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
因为 -o 是 docker 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,可以先把本文里的 run、ps、logs、exec、rm 这几条命令练熟,后面再补 save、load、inspect、stats 这些命令,效果会更好。
以上就是从入门到实战详解Docker中的常用命令的详细内容,更多关于Docker常用命令的资料请关注脚本之家其它相关文章!
相关文章
解决Docker删除镜像报错:Error response from daemon:con
删除Docker镜像时遇到冲突,因为镜像正在被一个运行中的容器使用,解决方法是先停止并删除该容器,然后再尝试删除镜像,此外,还可以选择强制删除镜像,但这可能会导致数据丢失2024-11-11
Docker报错denied:requested access to the r
这篇文章主要为大家介绍了Docker报错denied:requested access to the resource is denied解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-06-06


最新评论