Docker 常用命令全面教程
一、Docker 基础概念
在开始命令之前,先了解几个核心概念:
- 镜像(Image):Docker 的静态模板,包含运行环境和应用程序
- 容器(Container):镜像的运行实例
- 仓库(Repository):存放镜像的地方,如 Docker Hub
二、镜像操作命令
1. 镜像搜索与拉取
# 搜索镜像 (Docker Hub)
docker search nginx
# 拉取镜像 (不指定tag默认拉取latest)
docker pull nginx
docker pull nginx:1.21.6
2. 镜像管理
# 列出本地镜像
docker images
# 查看镜像详情
docker inspect nginx:latest
# 删除镜像
docker rmi nginx:1.21.6
# 强制删除镜像 (即使有容器使用)
docker rmi -f nginx:1.21.6
3. 镜像构建
# 构建镜像 (在当前目录查找Dockerfile)
docker build -t myapp:1.0 .
# 指定Dockerfile路径构建
docker build -t myapp:1.0 -f /path/to/Dockerfile .
# 构建时不使用缓存
docker build --no-cache -t myapp:1.0 .
三、容器操作命令
1. 容器启动
# 启动容器并命名
docker run --name mynginx nginx
# 后台运行容器 (-d)
docker run -it --name mynginx nginx
# 映射端口 (-p 主机端口:容器端口)
docker run -it -p 8080:80 --name mynginx nginx
# 映射目录/卷 (-v 主机目录:容器目录)
docker run -it -v /host/path:/container/path --name mynginx nginx
# 设置环境变量 (-e)
docker run -it -e "ENV_VAR=value" --name mynginx nginx
# 交互式运行容器 (-it)
docker run -it --name myalpine alpine sh
# 容器退出后自动删除 (--rm)
docker run --rm -it alpine sh
2. 容器管理
# 列出运行中的容器
docker ps
# 列出所有容器 (包括停止的)
docker ps -a
# 启动/停止/重启容器
docker start mynginx
docker stop mynginx
docker restart mynginx
# 删除容器
docker rm mynginx
# 强制删除运行中的容器
docker rm -f mynginx
# 查看容器日志
docker logs mynginx
# 实时查看日志 (-f)
docker logs -f mynginx
# 查看容器详情
docker inspect mynginx
# 查看容器内进程
docker top mynginx
# 查看容器资源使用情况
docker stats mynginx
# 进入运行中的容器 (-it)
docker exec -it mynginx bash
3. 容器与主机文件交互
# 从容器复制文件到主机
docker cp mynginx:/path/to/file /host/path
# 从主机复制文件到容器
docker cp /host/path mynginx:/container/path
四、数据卷操作
# 创建数据卷
docker volume create myvolume
# 列出数据卷
docker volume ls
# 查看数据卷详情
docker volume inspect myvolume
# 删除数据卷
docker volume rm myvolume
# 清理无用数据卷
docker volume prune
五、网络操作
# 列出网络
docker network ls
# 创建网络
docker network create mynetwork
# 查看网络详情
docker network inspect mynetwork
# 连接容器到网络
docker network connect mynetwork mynginx
# 断开容器与网络的连接
docker network disconnect mynetwork mynginx
# 删除网络
docker network rm mynetwork
六、镜像打包与加载
# 将容器保存为镜像
docker commit mynginx mynginx:snapshot
# 将镜像保存为tar文件
docker save -o nginx.tar nginx:latest
# 从tar文件加载镜像
docker load -i nginx.tar
# 导出容器文件系统 (不包含历史、元数据)
docker export -o nginx-container.tar mynginx
# 导入容器文件系统为镜像
docker import nginx-container.tar mynginx:imported
七、Docker Compose 常用命令
# 启动服务 (后台运行)
docker-compose up -d
# 停止服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看服务日志
docker-compose logs
# 构建服务镜像
docker-compose build
# 重新创建并启动所有容器
docker-compose up --force-recreate
八、系统清理
# 删除所有停止的容器
docker container prune
# 删除所有未被使用的镜像、容器、网络和卷
docker system prune
# 强制删除所有未被使用的资源
docker system prune -a --volumes
九、实用示例
1. 运行 MySQL 容器
docker run -d \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-e MYSQL_DATABASE=myapp \
-e MYSQL_USER=user \
-e MYSQL_PASSWORD=password \
-p 3306:3306 \
-v mysql_data:/var/lib/mysql \
mysql:8.0
2. 运行 Redis 容器
docker run -d \
--name redis-server \
-p 6379:6379 \
-v redis_data:/data \
redis:6.2 \
redis-server --save 60 1 --loglevel warning