Docker介绍与常见指令

大家好,这里是程序员阿亮,今天做项目的时候对着宝塔终端搞了一下午,使用到docker的时候,发现很多docker指令有点忘记了....所以今天讲一下docker吧!


前言

Docker 是目前最流行的容器化技术之一,它通过轻量级的虚拟化方式,帮助开发者快速构建、部署和运行应用程序。无论你是刚接触 Docker 的新手,还是希望系统梳理常用命令的老手,本文将为你详细介绍 Docker 中最常见、最实用的指令,助你高效使用 Docker。

一、镜像(Image)相关命令

1. docker pull:从仓库拉取镜像

作用:下载指定镜像到本地

语法:

cpp 复制代码
docker pull <image_name>:<tag>

示例:

cpp 复制代码
# 拉取最新版 Nginx 镜像
docker pull nginx:latest

# 拉取指定版本的 Redis(如 7.0)
docker pull redis:7.0

# 不加tag默认lastest

2. docker images:列出本地所有镜像

作用 :查看已下载的镜像列表。
示例

cpp 复制代码
$ 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:删除本地镜像

作用 :移除不再需要的镜像。
示例

cpp 复制代码
# 删除 Redis 7.0 镜像(通过名称)
docker rmi redis:7.0

# 强制删除(即使被容器引用)
docker rmi -f 605c77e624dd

# 注意:若镜像正被容器使用,需先删除容器或加 -f 强制删除。

4. docker build:基于 Dockerfile 构建镜像

作用 :从源码构建自定义镜像。
示例

假设当前目录下有 Dockerfile

cpp 复制代码
FROM alpine
RUN echo "Hello from custom image!" > /hello.txt
CMD cat /hello.txt

执行构建:

cpp 复制代码
# 构建并打标签为 my-hello:v1
docker build -t my-hello:v1 .

构建成功:

cpp 复制代码
docker run my-hello:v1
# 输出:Hello from custom image!

二、容器(Container)相关命令

1. docker run:创建并启动容器

作用 :从镜像运行一个新容器。
常用选项说明

  • -d:后台运行
  • -p:端口映射(宿主机:容器)
  • --name:指定容器名
  • -v:挂载数据卷
  • -e:设置环境变量
  • --rm:退出后自动删除

示例

cpp 复制代码
# 启动一个名为 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:查看运行中的容器

作用 :列出当前正在运行的容器。
示例

cpp 复制代码
$ 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

如果要查看已经关闭的容器:

cpp 复制代码
docker ps -a

3. docker stop / start / restart:控制容器生命周期

示例

cpp 复制代码
# 停止名为 web 的容器
docker stop web

# 再次启动
docker start web

# 重启(常用于配置更新后)
docker restart web

4. docker exec:进入运行中的容器执行命令

作用 :在容器内执行交互式命令(如调试)。
示例

cpp 复制代码
# 进入 Nginx 容器的 shell
docker exec -it web /bin/bash

# 在容器内直接执行单条命令(不进入交互)
docker exec web cat /etc/nginx/nginx.conf

# -it 表示分配伪终端并保持 STDIN 打开。

5. docker logs:查看容器日志

作用 :排查应用输出或错误信息。
示例

cpp 复制代码
# 查看 Nginx 访问日志
docker logs web

# 实时跟踪日志(类似 tail -f)
docker logs -f web

6. docker rm:删除容器

作用 :清理不再需要的容器。
示例

cpp 复制代码
# 删除已停止的容器
docker rm web

# 强制删除正在运行的容器(先 stop 再 rm)
docker rm -f web

# 删除所有已停止的容器
docker container prune

三、网络(Network)相关命令

1. docker network ls:列出所有网络

示例

cpp 复制代码
$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
abc123def456   bridge    bridge    local
xyz789uvw012   host      host      local
...

默认有 bridgehostnone 三种网络。

2. docker network create:创建自定义网络

作用 :让多个容器在同一网络下通过服务名通信。
示例

cpp 复制代码
# 创建名为 mynet 的桥接网络
docker network create mynet

3. docker run --network:将容器加入指定网络

示例

cpp 复制代码
# 启动两个容器到同一网络
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:创建命名卷

作用 :持久化容器数据(如数据库文件)。
示例

cpp 复制代码
# 创建名为 mysql_data 的卷
docker volume create mysql_data

2. docker volume ls:列出所有卷

示例

cpp 复制代码
$ docker volume ls
DRIVER    VOLUME NAME
local     mysql_data

3. docker run -v:挂载卷到容器

示例

cpp 复制代码
# 将 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:查看卷详情

示例

cpp 复制代码
$ 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:清理未使用的卷

示例

cpp 复制代码
# 删除所有未被容器引用的卷(谨慎操作!)
docker volume prune

五、系统与清理命令

1. docker info:查看 Docker 系统信息

示例

cpp 复制代码
docker info
# 输出包括:容器数量、镜像数量、存储驱动、CPU/内存等

2. docker stats:实时监控容器资源使用

示例

cpp 复制代码
$ 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:一键清理无用资源

作用 :删除所有停止的容器、未被引用的网络、构建缓存等。
示例

cpp 复制代码
# 清理常规无用资源
docker system prune

# 彻底清理(包括未被任何容器使用的镜像)
docker system prune -a

总结

以上命令覆盖了 Docker 日常使用的 90% 场景。建议你在本地环境动手实践每一个示例------比如先跑一个 Nginx,再连接 Redis,最后用自定义网络让它们通信。只有通过实际操作,才能真正掌握容器化开发的精髓。

相关推荐
雨季6662 小时前
构建 OpenHarmony 智能场景自动化配置面板:Flutter 实现可视化规则编排
运维·flutter·自动化
信创天地2 小时前
从 “替代” 到 “超越”:信创系统架构师如何筑牢自主可控技术底座
运维·安全·系统架构·开源·dubbo·risc-v
qq_229058012 小时前
Docker常用命令
linux·服务器·docker
春日见2 小时前
Docker如何基于脚本拉取镜像,配置环境,尝试编译
运维·驱动开发·算法·docker·容器
是个西兰花2 小时前
进程间通信:匿名管道
linux·运维·服务器
小北方城市网2 小时前
Spring Cloud Gateway 生产级微内核架构设计与可插拔过滤器开发
java·大数据·linux·运维·spring boot·redis·分布式
wacpguo2 小时前
Ubuntu 24.04 安装 Docker
linux·ubuntu·docker
wan9zhixin2 小时前
解密六氟化硫气体检测仪在运维现场的多元应用场景
运维
Lenyiin3 小时前
Linux 进程控制
linux·运维·服务器