关于Docker的使用

alanx 发布于 2025-07-15 315 次阅读


提示:以下所有<>都不要带

一.容器管理操作

功能指令常用参数
创建容器docker create <镜像>--name 指定名称
-it 交互式终端
启动容器docker start <容器ID/名>-a 附加输出
-i 交互式
运行容器docker run <镜像>-d 后台运行
-p 端口映射
--rm 退出后自动删除
停止容器docker stop <容器ID/名>-t 超时时间(默认10秒)
强制停止docker kill <容器ID/名>-s 发送特定信号(如SIGKILL)
重启容器docker restart <容器ID/名>
暂停/恢复docker pause/unpause <容器ID/名>

二.容器信息

功能指令常用参数
查看运行中容器docker ps-q 只显示ID
--format 自定义格式
查看所有容器docker ps -a
查看容器详情docker inspect <容器ID/名>-f 过滤字段(如{{.NetworkSettings.IPAddress}}
查看日志docker logs <容器ID/名>-f 实时跟踪
--tail N 显示最后N行
资源监控docker stats--no-stream 单次输出

三.容器与终端交互

功能指令说明
进入容器终端docker exec -it <容器ID/名> <命令>常用命令:/bin/bash/bin/sh
复制文件到容器docker cp <本地路径> <容器ID/名>:<容器路径>
从容器复制文件docker cp <容器ID/名>:<容器路径> <本地路径>
重命名容器docker rename <旧名> <新名>

四.容器镜像管理

功能指令
拉取镜像docker pull <image>
列出镜像docker images
删除镜像docker rmi <image>
构建镜像docker build -t <标签> .

五.容器网络

功能指令常用参数
创建网络docker network create <网络名>--driver 驱动类型(如bridge
连接容器到网络docker network connect <网络名> <容器ID/名>--ip 指定IP地址
断开网络docker network disconnect <网络名> <容器ID/名>
查看端口映射docker port <容器ID/名>

六.容器数据管理

功能指令说明
创建卷docker volume create <卷名>
挂载卷到容器docker run -v <卷名>:<容器路径> <镜像>--mount 语法
绑定目录挂载docker run -v <主机路径>:<容器路径> <镜像>
匿名卷声明docker run -v <容器路径> <镜像>自动创建匿名卷

七.容器资源限制

功能参数示例说明
CPU限制--cpus=1.5最多使用1.5核
内存限制--memory=512m硬限制内存
内存+Swap--memory-swap=1g总内存+Swap限制
IO权重--blkio-weight=500相对权重(10-1000)

八.容器维护

功能指令说明
导出容器为镜像docker commit <容器ID/名> <新镜像名>保存当前状态
导出文件系统docker export <容器ID/名> > file.tar不包含元数据
更新配置docker update --memory=1g <容器ID/名>动态调整资源

九.容器清理操作

功能指令说明
删除容器docker rm <容器ID/名>-f 强制删除运行中的容器
删除所有停止的容器docker container prune-f 跳过确认
清理无用资源docker system prune含镜像、网络、缓存

十.一些常用操作

1.运行临时测试容器:

docker run --rm -it alpine sh

  1. --rm:容器退出后自动删除(适合临时测试,不留垃圾)
  2. -it:以交互模式运行(-i 保持输入,-t 分配伪终端)
  3. alpine:使用轻量级 Alpine Linux 镜像
  4. sh:启动容器后执行的命令(这里是 Alpine 的默认 Shell)

2.后台运行MySQL并持久化数据:

docker run -d --name mysql \

-v mysql_data:/var/lib/mysql \# 将名为 mysql_data 的卷挂载到容器内的 MySQL 数据目录

-e MYSQL_ROOT_PASSWORD=123456 \# 设置 MySQL root 密码(生产环境建议用更复杂的密码)

-p 3306:3306 \# 将主机的 3306 端口映射到容器的 3306 端口

mysql:latest# 使用官方 MySQL 最新镜像

3.调试网络问题:

docker run --network host --rm nicolaka/netshoot

  1. --network host:容器直接使用主机网络(可调试主机网络问题)
  2. nicolaka/netshoot:专用于网络调试的工具镜像(包含 ping、curl、tcpdump 等)
  3. 典型用途:测试容器内是否能访问外部服务、检查端口冲突等

4.批量删除所有容器:

docker rm -f $(docker ps -aq)

  1. docker ps -aq:列出所有容器(包括停止的)的 ID(-q 只返回 ID)
  2. docker rm -f:强制删除容器(-f 可删除运行中的容器)
  3. 注意:此操作不可逆!建议先执行 docker stop $(docker ps -aq) 安全停止容器

此作者没有提供个人介绍。
最后更新于 2025-07-18