Docker常用命令
Docker的常用命令整理,按功能分类说明:
容器生命周期管理
启动容器
1
2
3
4docker run -d --name my_container nginx:latest # 后台运行容器
docker run -it --name my_alpine alpine:latest /bin/sh # 交互式运行并进入Shell
docker run -p 8080:80 nginx # 映射主机8080端口到容器80端口
docker run -v /host/path:/container/path nginx # 挂载主机目录到容器停止/重启容器
1
2
3docker stop my_container # 优雅停止容器
docker restart my_container # 重启容器
docker kill my_container # 强制停止容器删除容器
1
2
3docker rm my_container # 删除已停止的容器
docker rm -f my_container # 强制删除运行中的容器
docker container prune # 删除所有已停止的容器
镜像管理
拉取/推送镜像
1
2docker pull ubuntu:20.04 # 拉取指定版本镜像
docker push myusername/myimage:tag # 推送镜像到仓库构建镜像
1
2docker build -t myimage:1.0 . # 根据当前目录Dockerfile构建镜像
docker build -t myimage --build-arg ENV=prod . # 带构建参数删除镜像
1
2
3docker rmi myimage:1.0 # 删除指定镜像
docker image prune # 删除未被使用的镜像
docker image prune -a # 删除所有未被容器引用的镜像
查看信息
列出容器与镜像
1
2
3docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止的)
docker images # 列出本地所有镜像查看容器详情
1
2
3
4docker inspect my_container # 显示容器详细信息(JSON格式)
docker logs my_container # 查看容器日志
docker logs -f my_container # 实时跟踪日志(类似tail -f)
docker stats # 实时监控容器资源使用(CPU/内存)
进入容器操作
- 执行命令
1
2docker exec -it my_container /bin/bash # 进入容器的交互式Shell
docker exec my_container ls /app # 在容器内执行命令并退出
网络管理
查看与创建网络
1
2
3docker network ls # 列出所有网络
docker network create my_net # 创建自定义网络
docker network inspect my_net # 查看网络详情容器连接网络
1
2docker run --network=my_net --name app1 myimage # 启动时指定网络
docker network connect my_net existing_container # 将已有容器加入网络
数据卷管理
- 创建与管理数据卷
1
2
3
4docker volume create my_vol # 创建数据卷
docker volume ls # 列出所有数据卷
docker volume inspect my_vol # 查看数据卷详情
docker run -v my_vol:/container/path nginx # 挂载数据卷到容器
组合命令(Docker Compose)
- 常用操作
1
2
3
4docker-compose up -d # 后台启动所有服务
docker-compose down # 停止并删除所有容器/网络
docker-compose logs -f # 查看所有服务的实时日志
docker-compose build # 重新构建所有服务的镜像
实用技巧
批量操作
1
2
3docker stop $(docker ps -aq) # 停止所有容器
docker rm $(docker ps -aq) # 删除所有容器
docker rmi $(docker images -q) # 删除所有镜像(谨慎使用!)快速清理资源
1
2docker system prune # 删除未使用的镜像、网络、容器(需确认)
docker system prune -a # 删除所有未被使用的资源(包括悬空镜像)导出/导入镜像
1
2docker save -o myimage.tar myimage:1.0 # 导出镜像为tar文件
docker load -i myimage.tar # 导入镜像
配置示例
Dockerfile 基础模板
1
2
3
4
5
6
7FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]docker-compose.yml 示例
1
2
3
4
5
6
7
8
9
10
11
12version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw