一、容器生命周期管理
-
创建并启动容器
bash
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 常用选项:
-d
:后台运行(detached mode)
-p
:端口映射(如-p 8080:80
)
-v
:挂载数据卷(如-v /host/path:/container/path
)
-e
:设置环境变量(如-e DB_USER=root
)
--name
:指定容器名称
--restart=always
:自动重启策略
示例:
bash
docker run -d -p 80:80 --name nginx nginx:alpine
- 常用选项:
-
查看容器
bash
docker ps [OPTIONS]
- 选项:
-a
:显示所有容器(包括已停止的)
-q
:只显示容器 ID
- 选项:
-
停止 / 启动容器
bash
docker stop CONTAINER_ID/NAME # 停止运行中的容器 docker start CONTAINER_ID/NAME # 启动已停止的容器 docker restart CONTAINER_ID/NAME # 重启容器
-
删除容器
bash
docker rm CONTAINER_ID/NAME # 删除已停止的容器 docker rm -f CONTAINER_ID/NAME # 强制删除运行中的容器
-
进入容器
bash
docker exec -it CONTAINER_ID/NAME /bin/bash # 交互式进入容器
二、镜像管理
-
拉取镜像
bash
docker pull IMAGE[:TAG] # 拉取指定镜像
-
查看本地镜像
bash
docker images [OPTIONS]
-
构建镜像
bash
docker build [OPTIONS] PATH
- 常用选项:
-t
:指定镜像标签(如-t myapp:v1
)
--no-cache
:不使用缓存构建
示例:
bash
docker build -t myapp:v1 . # 在当前目录构建镜像
- 常用选项:
-
推送镜像到仓库
bash
docker push IMAGE[:TAG] # 推送到Docker Hub
-
删除镜像
bash
docker rmi IMAGE_ID/NAME[:TAG] # 删除本地镜像
三、网络管理
-
查看网络
bash
docker network ls # 列出所有网络
-
创建自定义网络
bash
docker network create [OPTIONS] NETWORK_NAME
- 选项:
--driver
:指定网络驱动(默认 bridge)
- 选项:
-
连接容器到网络
bash
docker network connect NETWORK CONTAINER
四、数据卷管理
-
创建数据卷
bash
docker volume create VOLUME_NAME
-
查看数据卷
bash
docker volume ls # 列出所有数据卷
-
挂载数据卷到容器
bash
docker run -v VOLUME_NAME:/container/path IMAGE
五、日志与监控
-
查看容器日志
bash
docker logs [OPTIONS] CONTAINER
- 选项:
-f
:实时跟踪日志输出
--tail N
:显示最后 N 行日志
- 选项:
-
查看容器资源使用情况
bash
docker stats [CONTAINER...] # 实时监控CPU、内存等
六、其他常用命令
-
查看容器详细信息
bash
docker inspect CONTAINER_ID/NAME
-
导出 / 导入容器
bash
docker export CONTAINER_ID > container.tar # 导出容器为tar文件 docker import container.tar new_image:tag # 导入为新镜像
-
保存 / 加载镜像
bash
docker save IMAGE > image.tar # 保存镜像为tar文件 docker load < image.tar # 加载tar文件为镜像
-
清理无用资源
bash
docker system prune [OPTIONS] # 清理所有未使用的容器、网络、镜像
七、组合命令示例
-
快速部署 Nginx 并映射端口
bash
docker run -d -p 80:80 --name webserver nginx:alpine
-
构建并运行自定义应用
bash
# 编写Dockerfile echo "FROM python:3.9-slim\nCMD ['python', '-m', 'http.server', '8000']" > Dockerfile # 构建镜像 docker build -t my-python-app . # 运行容器 docker run -d -p 8000:8000 my-python-app
-
在自定义网络中连接多个容器
bash
# 创建网络 docker network create my-network # 运行MySQL容器 docker run -d --name mysql --network my-network -e MYSQL_ROOT_PASSWORD=pass mysql:8 # 运行应用容器并连接到同一网络 docker run -d --name app --network my-network my-app-image