Docker命令大全:Docker最实用的命令集合 Docker命令大全:Docker最实用的命令集合

Docker命令大全:Docker最实用的命令集合


Docker 是一个领先的开源容器化平台,旨在帮助开发者将应用程序及其所有依赖项打包到一个轻量级、可移植的容器中,从而实现跨平台的一致运行环境。以下是全面且专业的 Docker 命令指南,涵盖镜像管理、容器操作、网络配置、存储卷管理、Docker Compose 使用以及其他高级命令。

1. Docker 镜像(Images)管理命令

1.1 拉取和构建镜像

  • 拉取镜像

    docker pull <image_name>[:<tag>]

    从 Docker Hub 或指定的镜像仓库拉取指定镜像及其标签。

  • 构建镜像

    docker build -f <Dockerfile_path> -t <image_name>:<tag> <context_path>

    使用 Dockerfile 从指定上下文路径构建镜像,并打上标签。

1.2 管理本地镜像

  • 列出本地镜像

    docker images [OPTIONS]

    显示本地所有镜像,支持过滤和格式化输出。

  • 删除镜像

    docker rmi <image_name>[:<tag>]

    删除指定镜像,支持强制删除和多镜像批量删除。

  • 标记镜像

    docker tag <source_image>:<tag> <repository>:<new_tag>

    为现有镜像添加新的标签,便于版本管理和推送到不同仓库。

  • 查看镜像详细信息

    docker inspect <image_name>[:<tag>]

    获取镜像的底层元数据,包括配置、层信息和历史记录。

  • 查看镜像历史

    docker history <image_name>[:<tag>]

    展示镜像构建过程中每一层的变更历史。

1.3 导出和导入镜像

  • 保存镜像为归档文件

    docker save -o <filename>.tar <image_name>[:<tag>]

    将镜像导出为 tar 文件,便于迁移和备份。

  • 从归档文件加载镜像

    docker load -i <filename>.tar

    从 tar 文件中加载镜像到本地 Docker 环境。

2. Docker 容器(Containers)操作命令

2.1 创建和运行容器

  • 运行容器

    docker run [OPTIONS] <image_name>[:<tag>] [COMMAND] [ARG...]

    创建并启动一个新容器,可结合多种选项如端口映射、环境变量等。

    示例:后台运行 Nginx 容器并映射端口

    docker run -d -p 80:80 --name my-nginx nginx
  • 交互式运行容器

    docker run -it --rm <image_name>[:<tag>] /bin/bash

    启动一个交互式容器,进入 Bash 终端,容器停止后自动删除。

2.2 管理容器生命周期

  • 列出运行中的容器

    docker ps [OPTIONS]
  • 列出所有容器(包括停止的)

    docker ps -a
  • 启动已停止的容器

    docker start <container_id|container_name>
  • 停止运行中的容器

    docker stop <container_id|container_name>
  • 重启容器

    docker restart <container_id|container_name>
  • 杀死容器

    docker kill <container_id|container_name>

2.3 进入和操作容器

  • 进入容器终端

    docker exec -it <container_id|container_name> /bin/bash

    在运行中的容器内启动交互式 Bash 终端。

  • 附加到容器的标准输入输出

    docker attach <container_id|container_name>
  • 查看容器日志

    docker logs [OPTIONS] <container_id|container_name>

    实时或历史查看容器的日志输出,支持跟随日志(-f)。

  • 查看容器资源使用情况

    docker stats [OPTIONS] [<container_id|container_name>...]

    实时监控容器的 CPU、内存、网络和磁盘使用情况。

2.4 删除容器

  • 删除容器

    docker rm [OPTIONS] <container_id|container_name>

    删除一个或多个容器,支持强制删除(-f)和批量删除。

  • 清理所有已停止的容器

    docker container prune

    交互式确认后删除所有停止的容器。

3. Docker 网络(Networking)管理命令

3.1 管理 Docker 网络

  • 列出所有网络

    docker network ls
  • 创建网络

    docker network create [OPTIONS] <network_name>

    创建自定义网络,支持多种驱动如 bridge、overlay、macvlan 等。

    示例:创建桥接网络

    docker network create -d bridge my-bridge-network
  • 查看网络详细信息

    docker network inspect <network_name>
  • 删除网络

    docker network rm <network_name>

3.2 连接和断开容器与网络

  • 将容器连接到网络

    docker network connect <network_name> <container_id|container_name>
  • 将容器从网络断开

    docker network disconnect <network_name> <container_id|container_name>

3.3 高级网络配置

  • 创建覆盖网络(Overlay Network)

    docker network create -d overlay --subnet=192.168.0.0/16 --gateway=192.168.0.1 my-overlay-network

    用于 Docker Swarm 或多主机容器通信。

  • 配置自定义子网和 IP 范围

    docker network create -d bridge \
      --subnet=192.170.0.0/16 \
      --ip-range=192.170.1.0/24 \
      --gateway=192.170.0.1 \
      my-custom-network

4. Docker 卷(Volumes)管理命令

4.1 管理数据卷

  • 列出所有卷

    docker volume ls
  • 创建卷

    docker volume create [OPTIONS] <volume_name>

    支持指定驱动和标签。

  • 查看卷详细信息

    docker volume inspect <volume_name>
  • 删除卷

    docker volume rm <volume_name>
  • 清理未使用的卷

    docker volume prune

4.2 挂载卷到容器

  • 在运行容器时挂载卷

    docker run -d -v <volume_name>:<container_path> <image_name>

    将指定卷挂载到容器内的路径。

  • 使用主机路径挂载

    docker run -d -v /host/path:/container/path <image_name>

    将主机目录或文件挂载到容器中,实现数据共享和持久化。

5. Docker Compose 命令

Docker Compose 是用于定义和管理多容器 Docker 应用的工具,通过 docker-compose.yml 文件描述服务、网络和卷等配置。

5.1 基本操作

  • 启动服务

    docker-compose up

    根据 docker-compose.yml 文件构建并启动所有定义的服务。

  • 后台启动服务

    docker-compose up -d

    以分离模式在后台启动服务。

  • 停止并删除服务

    docker-compose down

    停止所有服务并移除容器、网络、卷和镜像(根据选项)。

  • 构建或重建服务

    docker-compose build

5.2 查看和管理

  • 查看服务日志

    docker-compose logs [OPTIONS] [SERVICE...]

    实时或历史查看指定服务的日志。

  • 查看运行中的服务

    docker-compose ps
  • 扩展服务实例

    docker-compose scale <service>=<num>

    增加或减少特定服务的容器实例数量。

5.3 其他高级操作

  • 拉取服务镜像

    docker-compose pull
  • 推送服务镜像

    docker-compose push
  • 重启服务

    docker-compose restart [SERVICE...]

6. Docker 其他常用命令

6.1 系统信息和维护

  • 查看 Docker 版本

    docker version
  • 查看 Docker 系统信息

    docker info
  • 清理系统资源

    docker system prune [OPTIONS]

    删除未使用的容器、网络、镜像和构建缓存,释放磁盘空间。

6.2 容器和镜像管理

  • 查看容器文件系统变化

    docker diff <container_id|container_name>
  • 提交容器更改为新镜像

    docker commit [OPTIONS] <container_id|container_name> <new_image_name>:<tag>
  • 查看容器的端口映射

    docker port <container_id|container_name>
  • 查看容器内运行的进程

    docker top <container_id|container_name>

6.3 镜像仓库操作

  • 推送镜像到仓库

    docker push <repository>/<image_name>:<tag>
  • 登录到 Docker 仓库

    docker login [OPTIONS] [SERVER]
  • 登出 Docker 仓库

    docker logout [SERVER]

7. 高级命令和最佳实践

7.1 多阶段构建

利用多阶段构建优化镜像大小和构建效率。

# 第一阶段:构建
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# 第二阶段:运行
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/myapp
ENTRYPOINT ["myapp"]

7.2 Docker Swarm 管理

用于集群管理和服务编排。

  • 初始化 Swarm

    docker swarm init
  • 添加节点到 Swarm

    docker swarm join --token <token> <manager_ip>:2377
  • 查看 Swarm 节点

    docker node ls
  • 部署服务到 Swarm

    docker service create --name <service_name> --replicas <number> <image_name>

7.3 安全与权限管理

  • 限制容器资源

    docker run --memory="256m" --cpus="1.0" <image_name>
  • 运行容器以非 root 用户

    docker run -u <user_id>:<group_id> <image_name>
  • 使用 Docker Secrets 管理敏感信息

    docker secret create <secret_name> <file>

7.4 日志和监控

  • 配置日志驱动

    docker run --log-driver=syslog <image_name>
  • 集成监控工具(如 Prometheus)通过导出容器指标并配置监控系统进行实时监控和报警。

8. 实践示例

8.1 部署一个完整的 Web 应用

步骤:

  1. 编写 docker-compose.yml

    version: '3.8'
    
    services:
      web:
        image: nginx:latest
        ports:
          - "80:80"
        volumes:
          - ./html:/usr/share/nginx/html
        networks:
          - webnet
    
      db:
        image: mysql:5.7
        environment:
          MYSQL_ROOT_PASSWORD: example
        volumes:
          - db-data:/var/lib/mysql
        networks:
          - webnet
    
    networks:
      webnet:
    
    volumes:
      db-data:
  2. 启动服务

    docker-compose up -d
  3. 查看服务状态

    docker-compose ps
  4. 访问 Web 应用在浏览器中访问 http://localhost 查看 Nginx 欢迎页面。

  5. 停止并清理

    docker-compose down -v

8.2 使用自定义网络和卷

创建自定义网络

docker network create -d bridge my-bridge-network

运行数据库容器并连接到网络

docker run -d --name my-mysql --network my-bridge-network -e MYSQL_ROOT_PASSWORD=example mysql:5.7

运行应用容器并挂载卷

docker run -d --name my-app --network my-bridge-network -v app-data:/app/data my-app-image

查看网络连接

docker network inspect my-bridge-network

总结

上述命令涵盖了 Docker 容器化平台的核心功能,帮助开发者高效管理镜像、容器、网络和存储卷,并通过 Docker Compose 实现多容器应用的编排与部署。此外,介绍了高级命令和最佳实践,如多阶段构建、Swarm 集群管理、安全配置以及日志监控等,进一步提升容器化应用的性能、安全性和可维护性。通过深入掌握这些命令,开发者能够充分利用 Docker 的强大功能,优化开发和运维流程。