容器基础操作
Docker 容器的创建、启动、停止、删除等基础操作
📋 目录
创建容器
docker create
创建容器但不启动。
# 创建容器
docker create --name my-container nginx:latest
# 创建容器并设置环境变量
docker create --name my-container \
-e ENV_VAR=value \
nginx:latest
# 创建容器并映射端口
docker create --name my-container \
-p 8080:80 \
nginx:latestdocker run
创建并运行容器。
# 运行容器(前台)
docker run nginx:latest
# 运行容器(后台)
docker run -d nginx:latest
# 运行容器(指定名称)
docker run -d --name my-nginx nginx:latest
# 运行容器(交互式)
docker run -it ubuntu:20.04 /bin/bash
# 运行容器(端口映射)
docker run -d -p 8080:80 nginx:latest
# 运行容器(自动删除)
docker run --rm ubuntu:20.04 echo "Hello"启动与停止容器
docker start
启动已停止的容器。
# 启动容器
docker start my-container
# 启动容器并附加到输出
docker start -a my-container
# 启动多个容器
docker start container1 container2
# 启动所有已停止的容器
docker start $(docker ps -a -q)docker stop
停止运行中的容器。
# 停止容器
docker stop my-container
# 停止容器(立即停止)
docker stop -t 0 my-container
# 停止多个容器
docker stop container1 container2
# 停止所有运行中的容器
docker stop $(docker ps -q)docker kill
强制停止容器。
# 强制停止容器
docker kill my-container
# 发送特定信号
docker kill -s SIGTERM my-container重启容器
docker restart
重启容器。
# 重启容器
docker restart my-container
# 重启多个容器
docker restart container1 container2
# 重启所有容器
docker restart $(docker ps -q)删除容器
docker rm / docker container rm
删除容器。
# 删除已停止的容器
docker rm my-container
# 强制删除运行中的容器
docker rm -f my-container
# 删除多个容器
docker rm container1 container2
# 删除所有已停止的容器
docker container prune
# 删除所有容器(包括运行中的)
docker rm -f $(docker ps -aq)批量删除
# 删除所有已停止的容器
docker container prune -f
# 删除指定状态的容器
docker rm $(docker ps -a -f "status=exited" -q)查看容器状态
docker ps / docker container ls
列出容器。
# 列出运行中的容器
docker ps
# 列出所有容器(包括已停止的)
docker ps -a
# 只显示容器 ID
docker ps -q
# 显示最近创建的容器
docker ps -l
# 按格式输出
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
# 过滤容器
docker ps -f "name=nginx"
docker ps -f "status=running"
docker ps -f "ancestor=nginx:latest"docker inspect
查看容器详细信息。
# 查看容器信息
docker inspect my-container
# 查看特定信息
docker inspect -f '{{.NetworkSettings.IPAddress}}' my-container
docker inspect -f '{{.Config.Env}}' my-container
docker inspect -f '{{.State.Status}}' my-container
docker inspect -f '{{.Mounts}}' my-containerdocker stats
实时查看容器资源使用情况。
# 查看所有容器的资源使用
docker stats
# 查看指定容器
docker stats my-container
# 只显示一次(不持续更新)
docker stats --no-stream
# 按格式输出
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"进入容器内部
docker exec
在运行中的容器内执行命令。
# 执行命令
docker exec my-container ls /app
# 交互式执行(进入容器)
docker exec -it my-container /bin/bash
# 以 root 用户执行
docker exec -u root my-container command
# 在后台执行
docker exec -d my-container commanddocker attach
附加到容器的标准输入、输出和错误流。
# 附加到容器
docker attach my-container
# 退出而不停止容器
# 使用 Ctrl+P, Ctrl+Q注意:docker attach 会附加到主进程,如果主进程退出,容器也会停止。建议使用 docker exec。
容器生命周期
状态转换
创建 (Created) → 运行 (Running) → 停止 (Stopped) → 删除 (Removed)
↓
暂停 (Paused) → 恢复 (Running)
容器状态
- Created:容器已创建但未启动
- Running:容器正在运行
- Paused:容器已暂停
- Restarting:容器正在重启
- Removing:容器正在删除
- Exited:容器已退出
- Dead:容器已死亡
查看容器状态
# 查看容器状态
docker ps -a --format "table {{.Names}}\t{{.Status}}"
# 查看容器退出码
docker inspect -f '{{.State.ExitCode}}' my-container容器日志
docker logs
查看容器日志。
# 查看日志
docker logs my-container
# 实时查看日志(类似 tail -f)
docker logs -f my-container
# 查看最后 N 行
docker logs --tail 100 my-container
# 查看带时间戳的日志
docker logs -t my-container
# 查看指定时间范围的日志
docker logs --since "2023-01-01T00:00:00" my-container
docker logs --until "2023-01-01T23:59:59" my-container
# 查看最近 10 分钟的日志
docker logs --since 10m my-container容器文件操作
docker cp
在容器和本地文件系统之间复制文件。
# 从容器复制到本地
docker cp my-container:/path/to/file /local/path
# 从本地复制到容器
docker cp /local/path my-container:/path/to/file
# 复制目录
docker cp my-container:/app ./app实用技巧
批量操作
# 启动所有已停止的容器
docker start $(docker ps -a -q)
# 停止所有运行中的容器
docker stop $(docker ps -q)
# 删除所有已停止的容器
docker rm $(docker ps -a -f "status=exited" -q)
# 删除所有容器
docker rm -f $(docker ps -aq)容器清理
# 删除所有已停止的容器
docker container prune
# 删除所有未使用的容器、网络、镜像
docker system prune
# 删除所有未使用的资源(包括未使用的镜像)
docker system prune -a