0%

Docker常见命令

Docker 常见命令大全:从镜像管理到容器操作

Docker 命令是使用 Docker 的基础,涵盖镜像检索、容器管理、数据卷操作等核心功能。本文系统整理 Docker 常用命令,按功能分类并说明其用法和场景,帮助快速掌握 Docker 操作。

基础命令

1. 查看 Docker 版本

1
2
3
docker -v  # 简洁版本信息
#
docker version # 详细版本信息(包括客户端和服务端)

2. 帮助命令

1
2
docker --help  # 查看所有命令帮助
docker [command] --help # 查看特定命令帮助(如docker run --help)

3. 启动 / 停止 Docker 服务

1
2
3
4
5
6
7
8
9
10
11
# 启动Docker(Linux)
sudo systemctl start docker

# 停止Docker(Linux)
sudo systemctl stop docker

# 重启Docker(Linux)
sudo systemctl restart docker

# 查看Docker状态(Linux)
sudo systemctl status docker

镜像命令

镜像是 Docker 的核心组件,以下命令用于镜像的检索、下载、管理等操作。

1. 检索镜像

从 Docker Hub 搜索镜像:

1
2
3
docker search <镜像名[:版本]>
# 示例:搜索nginx镜像
docker search nginx

输出字段说明:

  • NAME:镜像仓库名称
  • DESCRIPTION:镜像描述
  • STARS:收藏数(反映受欢迎程度)
  • OFFICIAL:是否为官方镜像([OK]表示官方)
  • AUTOMATED:是否自动构建

2. 下载镜像

从注册中心拉取镜像到本地:

1
2
3
4
5
docker pull <镜像名[:tag]>
# 示例1:拉取最新版nginx(tag为latest)
docker pull nginx
# 示例2:拉取指定版本nginx(如1.23)
docker pull nginx:1.23
  • 不指定tag时,默认拉取latest版本(最新版)。

3. 查看本地镜像列表

1
2
3
4
docker images
# 可选参数:
# -a:显示所有镜像(包括中间层)
# -q:仅显示镜像ID

输出字段说明:

  • REPOSITORY:镜像仓库名称
  • TAG:镜像标签(版本标识)
  • IMAGE ID:镜像唯一 ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

4. 删除镜像

1
2
3
4
5
6
7
8
# 通过镜像名+tag删除
docker rmi <镜像名:tag>
# 或通过镜像ID删除
docker rmi <镜像ID>
# 强制删除(即使镜像被容器引用)
docker rmi -f <镜像ID>
# 批量删除所有镜像
docker rmi $(docker images -q)

5. 镜像详细信息

查看镜像的元数据(如构建历史、环境变量、配置等):

1
2
3
docker inspect <镜像名:tag 或 镜像ID>
# 示例:查看nginx镜像详情
docker inspect nginx:latest

6. 镜像导出与导入

导出镜像(保存为本地文件)
1
2
3
docker save <镜像名:tag> > <导出路径/文件名.tar>
# 示例:导出nginx镜像到当前目录
docker save nginx:latest > nginx.tar
导入镜像(从本地文件加载)
1
2
3
docker load < <镜像文件.tar>
# 示例:导入nginx镜像
docker load < nginx.tar

7. 为镜像设置标签

给本地镜像添加新标签(常用于版本管理或推送至私有仓库):

1
2
3
docker tag <源镜像名:tag> <目标镜像名:新tag>
# 示例:将本地nginx镜像标记为私有仓库版本
docker tag nginx:latest registry.example.com/nginx:v1.0

8. 构建镜像(从 Dockerfile)

通过 Dockerfile 构建自定义镜像:

1
2
3
docker build -t <镜像名:tag> <Dockerfile所在目录>
# 示例:在当前目录构建名为myapp:v1的镜像
docker build -t myapp:v1 .
  • -t:指定镜像名称和标签
  • 最后一个.表示 Dockerfile 在当前目录

容器命令

容器是镜像的运行实例,以下命令用于容器的创建、启动、管理等操作。

1. 创建容器(不启动)

1
2
3
docker create --name <容器名> <镜像名:tag>
# 示例:创建一个名为mynginx的nginx容器(未启动)
docker create --name mynginx nginx:latest

2. 创建并启动容器

最常用的命令,一次性完成容器创建和启动:

1
2
3
4
5
6
docker run [参数] <镜像名:tag> [容器内命令]
# 示例1:启动一个后台运行的nginx容器,映射宿主机8080端口到容器80端口
docker run -d --name mynginx -p 8080:80 nginx:latest

# 示例2:启动一个交互式centos容器(进入bash终端)
docker run -it --name mycentos centos:7 /bin/bash

核心参数说明:

  • -d:后台运行容器(守护进程模式)
  • -it:交互式运行(-i保持标准输入打开,-t分配伪终端)
  • --name:指定容器名称(不指定则自动生成)
  • -p:端口映射(格式:宿主机端口:容器端口
  • -P:随机映射容器暴露的端口到宿主机
  • --rm:容器停止后自动删除

3. 查看容器列表

1
2
3
4
5
6
docker ps
# 可选参数:
# -a:显示所有容器(包括已停止的)
# -l:显示最近创建的容器
# -n <数字>:显示最近n个容器
# -q:仅显示容器ID

输出字段说明:

  • CONTAINER ID:容器唯一 ID
  • IMAGE:容器基于的镜像
  • COMMAND:容器启动时执行的命令
  • CREATED:容器创建时间
  • STATUS:容器状态(Up运行中,Exited已停止)
  • PORTS:端口映射信息
  • NAMES:容器名称

4. 进入运行中的容器

1
2
3
4
5
6
7
# 方式1:attach(不推荐,退出会导致容器停止)
docker attach <容器ID 或 容器名>

# 方式2:exec(推荐,在容器内执行命令,支持交互式终端)
docker exec -it <容器ID 或 容器名> <命令>
# 示例:进入mynginx容器的bash终端
docker exec -it mynginx /bin/bash

5. 启动 / 停止 / 重启容器

1
2
3
4
5
6
7
8
9
10
11
# 启动已停止的容器
docker start <容器ID 或 容器名>

# 停止运行中的容器(优雅关闭)
docker stop <容器ID 或 容器名>

# 强制停止容器(立即终止)
docker kill <容器ID 或 容器名>

# 重启容器
docker restart <容器ID 或 容器名>

6. 删除容器

1
2
3
4
5
6
# 删除已停止的容器
docker rm <容器ID 或 容器名>
# 强制删除运行中的容器
docker rm -f <容器ID 或 容器名>
# 批量删除所有已停止容器
docker rm $(docker ps -a -q)

7. 查看容器日志

1
2
3
docker logs [参数] <容器ID 或 容器名>
# 示例:实时查看mynginx容器的日志
docker logs -f mynginx

常用参数:

  • -f:实时跟踪日志输出
  • -t:显示日志时间戳
  • --tail <数字>:仅显示最后 n 行日志(如--tail 100

8. 查看容器进程

查看容器内运行的进程:

1
2
3
docker top <容器ID 或 容器名>
# 示例:查看mynginx容器的进程
docker top mynginx

9. 容器与宿主机文件传输

1
2
3
4
5
6
7
8
9
# 从宿主机复制文件到容器
docker cp <宿主机文件路径> <容器ID 或 容器名>:<容器内路径>
# 示例:将本地file.txt复制到mynginx的/usr/share/nginx/html目录
docker cp file.txt mynginx:/usr/share/nginx/html/

# 从容器复制文件到宿主机
docker cp <容器ID 或 容器名>:<容器内文件路径> <宿主机路径>
# 示例:将mynginx的nginx.conf复制到本地当前目录
docker cp mynginx:/etc/nginx/nginx.conf .

10. 容器导出与导入

导出容器(保存为镜像文件)
1
2
3
docker export <容器ID 或 容器名> > <导出路径/文件名.tar>
# 示例:导出mynginx容器
docker export mynginx > mynginx_container.tar
导入容器(生成镜像)
1
2
3
docker import <容器文件.tar> <镜像名:tag>
# 示例:从容器文件创建镜像
docker import mynginx_container.tar mynginx:from-container
  • docker save/load的区别:export导出的是容器运行时状态,save导出的是完整镜像(包括历史层)。

11. 修改容器配置

动态更新容器的资源限制、重启策略等:

1
2
3
4
5
6
docker update [参数] <容器ID 或 容器名>
# 示例1:限制容器最多使用1核CPU
docker update --cpus 1 mynginx

# 示例2:设置容器退出后自动重启
docker update --restart always mynginx

常用参数:

  • --restart:重启策略(always总是重启,on-failure失败时重启)
  • -m:内存限制(如-m 1g限制 1GB 内存)
  • --cpus:CPU 核心数限制

数据卷命令

数据卷用于容器与宿主机之间的数据持久化和共享。

1. 查看数据卷列表

1
docker volume ls

2. 创建数据卷

1
2
3
docker volume create <数据卷名>
# 示例:创建名为myvolume的数据卷
docker volume create myvolume

3. 查看数据卷详情

1
2
3
docker volume inspect <数据卷名>
# 示例:查看myvolume的详细信息(包括存储路径)
docker volume inspect myvolume

4. 删除数据卷

1
2
3
4
5
docker volume rm <数据卷名>
# 强制删除正在使用的数据卷
docker volume rm -f <数据卷名>
# 清理未使用的数据卷
docker volume prune

网络命令(基础)

1. 查看网络列表

1
docker network ls

2. 创建网络

1
2
3
docker network create <网络名>
# 示例:创建名为mynet的桥接网络
docker network create mynet

3. 连接容器到网络

1
2
3
docker network connect <网络名> <容器名>
# 示例:将mynginx容器连接到mynet网络
docker network connect mynet mynginx

常用场景示例

1. 运行一个 Nginx 服务

1
2
# 后台运行,映射80端口,容器名mynginx
docker run -d --name mynginx -p 80:80 nginx:latest

2. 运行一个 MySQL 服务(带数据持久化)

1
2
3
4
5
6
# 数据卷持久化数据,设置root密码,映射3306端口
docker run -d --name mymysql \
-p 3306:3306 \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0

3. 查看容器资源使用情况

1
2
3
docker stats
# 查看指定容器的资源使用
docker stats <容器名>

总结

Docker 命令按功能可分为镜像管理、容器操作、数据卷管理等类别,掌握这些命令是使用 Docker 的基础。实际应用中,常用命令包括docker run(启动容器)、docker ps(查看容器)、docker pull(拉取镜像)等。结合 Dockerfile 和编排工具(如 Docker Compose),可实现更复杂的应用部署和管理

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10