一、容器生命周期管理
1. 创建并运行容器
docker run [选项] 镜像名 [命令]
常用选项:
-d
:后台运行(detached)-it
:交互式终端(如-it ubuntu bash
)--name
:指定容器名称-p 主机端口:容器端口
:端口映射(如-p 80:8080
)-v 主机路径:容器路径
:挂载数据卷-e 环境变量
:设置环境变量(如-e MYSQL_ROOT_PASSWORD=123
)--restart=always
:容器崩溃自动重启
docker restart 容器名/ID # 重启容器
使用场景:
快速启动服务(如 Nginx、MySQL)
运行一次性任务(如
docker run alpine echo "Hello"
)
2. 启动/停止/重启容器
docker start 容器名/ID # 启动已停止的容器
docker stop 容器名/ID # 优雅停止
docker kill 容器名/ID # 强制终止
3. 删除容器
docker rm 容器名/ID # 删除已停止的容器
docker rm -f 容器名/ID # 强制删除(包括运行中的容器)
docker container prune # 删除所有已停止的容器
二、镜像管理
1. 拉取/推送镜像
docker pull 镜像名:标签 # 拉取镜像(如 `docker pull nginx:latest`)
docker push 镜像名:标签 # 推送镜像到仓库(需先登录)
2. 构建镜像
docker build -t 镜像名:标签 Dockerfile路径
使用场景:
自定义镜像(如基于
Dockerfile
构建应用)
3. 删除镜像
docker rmi 镜像名/ID # 删除镜像
docker image prune -a # 删除所有未被使用的镜像
三、查看信息
1. 查看容器状态
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止的)
docker stats # 实时监控容器资源占用(CPU/内存)
2. 查看镜像
docker images # 列出本地镜像
docker history 镜像名 # 查看镜像构建历史
3. 查看日志
docker logs 容器名/ID # 查看容器日志
docker logs -f 容器名/ID # 实时跟踪日志(类似 `tail -f`)
四、数据管理
1. 数据卷(Volumes)
docker volume create 卷名 # 创建数据卷
docker volume ls # 列出所有卷
docker volume inspect 卷名 # 查看卷详情
使用场景:
持久化数据库数据(如 MySQL)
共享数据 between containers
2. 挂载主机目录
docker run -v /主机路径:/容器路径 镜像名
示例:
docker run -v /home/user/data:/app/data nginx
五、网络管理
1. 查看网络
docker network ls # 列出所有网络
docker network inspect 网络名 # 查看网络详情
2. 创建自定义网络
docker network create 网络名
使用场景:
容器间通信(如微服务架构)
3. 连接容器到网络
docker network connect 网络名 容器名
六、批量操作
1. 停止所有容器
docker stop $(docker ps -aq)
2. 删除所有容器
docker rm -f $(docker ps -aq)
3. 清理无用资源
docker system prune -a # 删除所有未使用的镜像、容器、网络
七、使用场景速查表
场景 | 命令示例 |
---|---|
运行 Web 服务 | docker run -d -p 80:80 --name nginx nginx |
调试容器 | docker exec -it 容器名 bash |
备份数据库数据 | docker run --volumes-from mysql -v /backup:/backup alpine tar cvf /backup/mysql.tar /var/lib/mysql |
构建自定义镜像 | docker build -t my-app:1.0 . |
容器互联 | docker run --name app --network my-net -d my-app |
查看容器资源占用 | docker stats |
八、注意事项
权限问题:某些操作需
sudo
或用户加入docker
组。生产环境安全:
避免使用
-privileged
。限制容器资源(
--memory
、--cpus
)。
数据持久化:重要数据务必挂载卷或绑定主机目录。
掌握这些命令后,可以覆盖 90% 的日常 Docker 使用场景!