Docker 容器是镜像的运行实例。以下是常用的 Docker 容器命令及其示例:
1. 运行容器
docker run [选项] <镜像名> [命令]
常用选项:
-d
:后台运行(守护模式)-it
:交互式终端--name
:指定容器名称-p
:端口映射(主机端口:容器端口)-v
:卷挂载(主机目录:容器目录)--rm
:容器退出后自动删除-e
:设置环境变量
示例:
# 运行Nginx容器并映射端口
docker run -d -p 8080:80 --name my-nginx nginx# 运行交互式Ubuntu容器
docker run -it --name my-ubuntu ubuntu bash# 运行带有环境变量的容器
docker run -e MYSQL_ROOT_PASSWORD=123456 --name mysql -d mysql
2. 查看容器列表
docker ps [选项]
常用选项:
-a
:显示所有容器(包括停止的)-q
:只显示容器ID--filter
:过滤条件--format
:自定义输出格式
示例:
docker ps -a
docker ps --filter "status=running"
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
3. 启动/停止/重启容器
docker start <容器名或ID>
docker stop <容器名或ID>
docker restart <容器名或ID>
示例:
docker start my-nginx
docker stop my-nginx
docker restart my-nginx
4. 暂停/恢复容器
docker pause <容器名或ID>
docker unpause <容器名或ID>
5. 删除容器
docker rm [选项] <容器名或ID>
常用选项:
-f
:强制删除(运行中的容器)-v
:同时删除关联的卷
示例:
docker rm my-nginx
docker rm -f $(docker ps -aq) # 删除所有容器
6. 进入运行中的容器
docker exec [选项] <容器名或ID> <命令>
常用选项:
-it
:交互式终端
示例:
docker exec -it my-nginx bash
docker exec my-nginx ls /etc/nginx
7. 查看容器日志
docker logs [选项] <容器名或ID>
常用选项:
-f
:实时跟踪日志--tail N
:显示最后N行-t
:显示时间戳
示例:
docker logs my-nginx
docker logs -f --tail 100 my-nginx
8. 查看容器详情
docker inspect <容器名或ID>
示例:
docker inspect my-nginx | grep IPAddress
9. 查看容器进程
docker top <容器名或ID>
10. 查看容器资源使用情况
docker stats [容器名或ID]
示例:
docker stats
docker stats my-nginx
11. 容器与主机文件复制
# 从容器复制到主机
docker cp <容器名或ID>:<容器路径> <主机路径># 从主机复制到容器
docker cp <主机路径> <容器名或ID>:<容器路径>
示例:
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf
docker cp config.json my-nginx:/app/config.json
12. 提交容器变更为新镜像
docker commit [选项] <容器名或ID> [仓库名:标签]
示例:
docker commit my-nginx my-nginx:v2
13. 导出容器文件系统
docker export <容器名或ID> > container.tar
14. 容器网络相关
# 查看容器网络
docker network ls# 创建网络
docker network create my-network# 将容器连接到网络
docker network connect my-network my-nginx
实际使用示例
- 运行并管理Web应用容器:
docker run -d -p 5000:5000 --name webapp my-webapp:v1
docker logs -f webapp
docker exec -it webapp bash
- 数据库容器管理:
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /data/mysql:/var/lib/mysql mysql:5.7
docker exec -it mysql mysql -uroot -p123456
- 开发环境调试:
docker run -it --rm -v $(pwd):/app -p 3000:3000 node:14 bash
# 在容器内
cd /app
npm install
npm start
- 批量操作容器:
# 停止所有容器
docker stop $(docker ps -aq)# 删除所有已停止的容器
docker container prune# 更新所有容器
docker ps -q | xargs -I {} docker restart {}