Docker介绍与最实用最常见指令
作者:Anastasiozzzz
大家好,这里是程序员阿亮,今天做项目的时候对着宝塔终端搞了一下午,使用到docker的时候,发现很多docker指令有点忘记了....所以今天讲一下docker吧!
前言
Docker 是目前最流行的容器化技术之一,它通过轻量级的虚拟化方式,帮助开发者快速构建、部署和运行应用程序。无论你是刚接触 Docker 的新手,还是希望系统梳理常用命令的老手,本文将为你详细介绍 Docker 中最常见、最实用的指令,助你高效使用 Docker。
一、镜像(Image)相关命令
1.docker pull:从仓库拉取镜像
作用:下载指定镜像到本地
语法:
docker pull <image_name>:<tag>
示例:
# 拉取最新版 Nginx 镜像 docker pull nginx:latest # 拉取指定版本的 Redis(如 7.0) docker pull redis:7.0 # 不加tag默认lastest
2.docker images:列出本地所有镜像
作用:查看已下载的镜像列表。
示例:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 605c77e624dd 2 weeks ago 141MB redis 7.0 7614ae9a5f8b 3 months ago 117MB
3.docker rmi:删除本地镜像
作用:移除不再需要的镜像。
示例:
# 删除 Redis 7.0 镜像(通过名称) docker rmi redis:7.0 # 强制删除(即使被容器引用) docker rmi -f 605c77e624dd # 注意:若镜像正被容器使用,需先删除容器或加 -f 强制删除。
4.docker build:基于 Dockerfile 构建镜像
作用:从源码构建自定义镜像。
示例:
假设当前目录下有 Dockerfile:
FROM alpine RUN echo "Hello from custom image!" > /hello.txt CMD cat /hello.txt
执行构建:
# 构建并打标签为 my-hello:v1 docker build -t my-hello:v1 .
构建成功:
docker run my-hello:v1 # 输出:Hello from custom image!
二、容器(Container)相关命令
1.docker run:创建并启动容器
作用:从镜像运行一个新容器。
常用选项说明:
-d:后台运行-p:端口映射(宿主机:容器)--name:指定容器名-v:挂载数据卷-e:设置环境变量--rm:退出后自动删除
示例:
# 启动一个名为 web 的 Nginx 容器,映射 8080 端口 docker run -d --name web -p 8080:80 nginx # 启动 Redis 并设置密码,退出后自动清理 docker run --rm --name myredis -e REDIS_PASSWORD=123456 redis:7.0 redis-server --requirepass 123456
2.docker ps:查看运行中的容器
作用:列出当前正在运行的容器。
示例:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1b2c3d4e5f6 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 mins 0.0.0.0:8080->80/tcp web
如果要查看已经关闭的容器:
docker ps -a
3.docker stop/start/restart:控制容器生命周期
示例:
# 停止名为 web 的容器 docker stop web # 再次启动 docker start web # 重启(常用于配置更新后) docker restart web
4.docker exec:进入运行中的容器执行命令
作用:在容器内执行交互式命令(如调试)。
示例:
# 进入 Nginx 容器的 shell docker exec -it web /bin/bash # 在容器内直接执行单条命令(不进入交互) docker exec web cat /etc/nginx/nginx.conf # -it 表示分配伪终端并保持 STDIN 打开。
5.docker logs:查看容器日志
作用:排查应用输出或错误信息。
示例:
# 查看 Nginx 访问日志 docker logs web # 实时跟踪日志(类似 tail -f) docker logs -f web
6.docker rm:删除容器
作用:清理不再需要的容器。
示例:
# 删除已停止的容器 docker rm web # 强制删除正在运行的容器(先 stop 再 rm) docker rm -f web # 删除所有已停止的容器 docker container prune
三、网络(Network)相关命令
1.docker network ls:列出所有网络
示例:
$ docker network ls NETWORK ID NAME DRIVER SCOPE abc123def456 bridge bridge local xyz789uvw012 host host local ...
默认有 bridge、host、none 三种网络。
2.docker network create:创建自定义网络
作用:让多个容器在同一网络下通过服务名通信。
示例:
# 创建名为 mynet 的桥接网络 docker network create mynet
3.docker run --network:将容器加入指定网络
示例:
# 启动两个容器到同一网络 docker run -d --name app1 --network=mynet alpine sleep 3600 docker run -d --name app2 --network=mynet alpine sleep 3600 # 在 app1 中 ping app2(验证连通性) docker exec app1 ping -c 2 app2
容器间可通过容器名直接解析 IP,无需记 IP 地址。
四、数据卷(Volume)相关命令
1.docker volume create:创建命名卷
作用:持久化容器数据(如数据库文件)。
示例:
# 创建名为 mysql_data 的卷 docker volume create mysql_data
2.docker volume ls:列出所有卷
示例:
$ docker volume ls DRIVER VOLUME NAME local mysql_data
3.docker run -v:挂载卷到容器
示例:
# 将 mysql_data 卷挂载到 MySQL 容器的 /var/lib/mysql docker run -d \ --name mysql-db \ -e MYSQL_ROOT_PASSWORD=123456 \ -v mysql_data:/var/lib/mysql \ mysql:8.0 # 即使容器删除,数据仍保留在卷中。
4.docker volume inspect:查看卷详情
示例:
$ docker volume inspect mysql_data
[
{
"CreatedAt": "2026-01-25T10:00:00Z",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/mysql_data/_data",
"Name": "mysql_data",
...
}
]5.docker volume prune:清理未使用的卷
示例:
# 删除所有未被容器引用的卷(谨慎操作!) docker volume prune
五、系统与清理命令
1.docker info:查看 Docker 系统信息
示例:
docker info # 输出包括:容器数量、镜像数量、存储驱动、CPU/内存等
2.docker stats:实时监控容器资源使用
示例:
$ docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O a1b2c3d4e5f6 web 0.10% 2.5MiB / 15.6GiB 0.02% 1.2kB / 0B 0B / 0B
按q退出
3.docker system prune:一键清理无用资源
作用:删除所有停止的容器、未被引用的网络、构建缓存等。
示例:
# 清理常规无用资源 docker system prune # 彻底清理(包括未被任何容器使用的镜像) docker system prune -a
总结
以上命令覆盖了 Docker 日常使用的 90% 场景。建议你在本地环境动手实践每一个示例——比如先跑一个 Nginx,再连接 Redis,最后用自定义网络让它们通信。只有通过实际操作,才能真正掌握容器化开发的精髓。
到此这篇关于Docker介绍与最实用最常见指令的文章就介绍到这了,更多相关Docker常见指令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
