docker常规命令和高级用法
Docker 是一个强大的容器化平台,提供了丰富的命令和功能来管理容器、镜像、网络和存储等。以下是一些常用的 Docker 命令及其高级用法。
1. 容器管理
1.1 启动容器
-
基本用法:
docker run <image_name>
示例:
docker run ubuntu
-
高级用法:
- 后台运行容器并映射端口:
docker run -d -p 8080:80 nginx
- 挂载主机目录到容器:
docker run -v /host/path:/container/path ubuntu
- 设置环境变量:
docker run -e MY_ENV=value ubuntu
- 指定容器名称:
docker run --name my_container ubuntu
- 后台运行容器并映射端口:
1.2 查看容器
-
基本用法:
docker ps
-
高级用法:
- 查看所有容器(包括已停止的):
docker ps -a
- 查看容器的详细信息:
docker inspect <container_id>
- 查看容器的日志:
docker logs <container_id>
- 实时查看日志:
docker logs -f <container_id>
- 查看所有容器(包括已停止的):
1.3 停止和删除容器
-
基本用法:
docker stop <container_id> docker rm <container_id>
-
高级用法:
- 强制停止容器:
docker kill <container_id>
- 删除所有已停止的容器:
docker container prune
- 删除运行中的容器(强制删除):
docker rm -f <container_id>
- 强制停止容器:
1.4 进入容器
-
基本用法:
docker exec -it <container_id> /bin/bash
-
高级用法:
- 在容器内执行单条命令:
docker exec <container_id> ls /app
- 使用其他 Shell(如
sh
):docker exec -it <container_id> sh
- 在容器内执行单条命令:
2. 镜像管理
2.1 拉取镜像
-
基本用法:
docker pull <image_name>
-
高级用法:
- 拉取指定版本的镜像:
docker pull ubuntu:20.04
- 拉取指定版本的镜像:
2.2 查看镜像
-
基本用法:
docker images
-
高级用法:
- 查看镜像的详细信息:
docker inspect <image_id>
- 查看镜像的历史记录:
docker history <image_id>
- 查看镜像的详细信息:
2.3 删除镜像
-
基本用法:
docker rmi <image_id>
-
高级用法:
- 强制删除镜像(即使有容器在使用):
docker rmi -f <image_id>
- 删除所有未使用的镜像:
docker image prune -a
- 强制删除镜像(即使有容器在使用):
2.4 构建镜像
-
基本用法:
docker build -t <image_name> .
-
高级用法:
- 指定 Dockerfile 路径:
docker build -t <image_name> -f /path/to/Dockerfile .
- 构建时传递构建参数:
docker build --build-arg MY_ARG=value -t <image_name> .
- 指定 Dockerfile 路径:
3. 网络管理
3.1 查看网络
-
基本用法:
docker network ls
-
高级用法:
- 查看网络的详细信息:
docker network inspect <network_name>
- 查看网络的详细信息:
3.2 创建网络
-
基本用法:
docker network create <network_name>
-
高级用法:
- 创建自定义子网的网络:
docker network create --subnet=192.168.1.0/24 <network_name>
- 创建自定义子网的网络:
3.3 连接容器到网络
-
基本用法:
docker network connect <network_name> <container_id>
-
高级用法:
- 指定容器的 IP 地址:
docker network connect --ip 192.168.1.10 <network_name> <container_id>
- 指定容器的 IP 地址:
4. 数据卷管理
4.1 创建数据卷
-
基本用法:
docker volume create <volume_name>
-
高级用法:
- 查看数据卷的详细信息:
docker volume inspect <volume_name>
- 查看数据卷的详细信息:
4.2 挂载数据卷
-
基本用法:
docker run -v <volume_name>:/container/path ubuntu
-
高级用法:
- 挂载主机目录为只读:
docker run -v /host/path:/container/path:ro ubuntu
- 挂载主机目录为只读:
5. Docker Compose
5.1 启动服务
-
基本用法:
docker-compose up
-
高级用法:
- 后台启动服务:
docker-compose up -d
- 重新构建镜像并启动:
docker-compose up --build
- 后台启动服务:
5.2 停止服务
-
基本用法:
docker-compose down
-
高级用法:
- 停止并删除所有容器、网络和数据卷:
docker-compose down --volumes
- 停止并删除所有容器、网络和数据卷:
6. 高级用法
6.1 容器资源限制
- 限制容器的 CPU 和内存使用:
docker run --cpus="1.5" --memory="512m" ubuntu
6.2 容器健康检查
- 在 Dockerfile 中定义健康检查:
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD curl -f http://localhost/ || exit 1
6.3 多阶段构建
- 使用多阶段构建优化镜像大小:
FROM node:14 AS build WORKDIR /app COPY . . RUN npm install && npm run build FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html
6.4 容器日志驱动
- 使用 JSON 文件记录日志:
docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 ubuntu
6.5 容器安全
- 以非 root 用户运行容器:
docker run --user 1000:1000 ubuntu
总结
Docker 提供了丰富的命令和功能来管理容器、镜像、网络和数据卷等。通过掌握这些高级用法,可以更好地优化和管理 Docker 容器化环境。