Docker 及 Docker Compose 的一些常用命令与实践

Docker 及 Docker Compose 的一些常用命令与实践

所谓诚其意者 毋自欺也

Docker 和 Docker Compose 是现代化应用开发与部署中不可或缺的工具,它们极大地简化了环境配置、应用打包和多容器编排。本文将介绍它们的安装方法、常用命令,并提供一个使用 Docker Compose部署 Nginx Proxy Manager 的实例。

安装 Docker 和 Docker Compose

推荐使用官方的安装方式以获取最新、最稳定的版本。

安装 Docker Engine

官方提供了方便的脚本来安装最新稳定版的 Docker Engine,这通常包含了 Docker CLI、containerd 等核心组件,并且现在**默认也包含了 Docker Compose V2 (作为 docker compose CLI 插件)**。

  • **使用官方脚本 (推荐,适用于测试和开发环境)**:

    1
    2
    3
    4
    curl -fsSL [https://get.docker.com](https://get.docker.com) -o get-docker.sh
    sudo sh get-docker.sh
    # 添加当前用户到 docker 组,避免每次都 sudo (需要重新登录或 newgrp docker 生效)
    sudo usermod -aG docker $USER

    这个脚本会自动检测你的 Linux 发行版并安装最新版本。对于生产环境,建议遵循 Docker 官方文档中针对特定发行版(如 Ubuntu, CentOS 等)的详细手动安装步骤:Install Docker Engine

  • 避免使用旧的包管理器版本: 直接使用 apt install docker.ioyum install docker 安装的版本可能相对陈旧,建议使用上述官方脚本或官方文档的步骤。

安装 Docker Compose

如上所述,通过 get.docker.com 脚本安装的 Docker Engine 通常已经包含了 Compose V2,你可以通过 docker compose version 来验证。推荐使用集成的 docker compose 命令(注意中间没有连字符 -)。

  • **如果需要独立的 docker-compose (兼容旧脚本或特定需求)**:
    虽然不推荐,但如果你确实需要独立的 docker-compose 二进制文件(它也支持 V2 语法),可以通过以下方式安装最新版本:

    1
    2
    3
    4
    5
    6
    7
    8
    # 自动获取最新版本号并下载
    LATEST_COMPOSE_VERSION=$(curl -s [https://api.github.com/repos/docker/compose/releases/latest](https://api.github.com/repos/docker/compose/releases/latest) | grep 'tag_name' | cut -d\" -f4)
    # 下载对应系统架构的二进制文件
    sudo curl -L "[https://github.com/docker/compose/releases/download/$](https://github.com/docker/compose/releases/download/$){LATEST_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    # 添加执行权限
    sudo chmod +x /usr/local/bin/docker-compose
    # 验证安装
    docker-compose --version

    注意: apt install docker-compose 通常安装的是非常旧的 v1 版本,强烈不建议 使用此方法。

  • **推荐一个一键安装脚本 (第三方)**:
    如果你偏好使用脚本,可以尝试作者提供的脚本(请注意使用第三方脚本的潜在风险,建议审查脚本内容):

    1
    2
    3
    4
    5
    # 克隆仓库
    git clone [https://github.com/ZefanHu/docker-install-script](https://github.com/ZefanHu/docker-install-script)
    cd docker-install-script
    # 执行脚本
    sudo ./docker-install-script.sh

Docker 常用命令

以下是一些管理 Docker 容器和镜像的基础命令:

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]: 创建并运行一个新的容器。
    • 示例: docker run -d -p 8080:80 --name mynginx nginx (后台运行 Nginx,将主机 8080 映射到容器 80)
    • 常用选项: -d (后台运行), -p hostPort:containerPort (端口映射), --name containerName (命名容器), -v hostPath:containerPath (挂载卷), -e KEY=VALUE (设置环境变量), --rm (容器停止后自动删除)
  • docker ps [OPTIONS]: 列出正在运行的容器。
    • -a--all: 列出所有容器 (包括已停止的)。
    • -q--quiet: 只显示容器 ID。
  • docker stop CONTAINER [CONTAINER...]: 停止一个或多个运行中的容器 (发送 SIGTERM 信号,尝试优雅停止)。
    • 示例: docker stop mynginx
  • docker start CONTAINER [CONTAINER...]: 启动一个或多个已停止的容器。
    • 示例: docker start mynginx
  • docker restart CONTAINER [CONTAINER...]: 重启一个或多个容器。
  • docker rm CONTAINER [CONTAINER...]: 删除一个或多个已停止的容器。
    • -f--force: 强制删除运行中的容器 (发送 SIGKILL)。
  • docker logs [OPTIONS] CONTAINER: 查看容器的日志。
    • -f--follow: 持续跟踪日志输出。
    • --tail N: 显示最后 N 行日志。
  • docker exec [OPTIONS] CONTAINER COMMAND [ARG...]: 在运行中的容器内执行命令。
    • 示例: docker exec -it mynginx bash (进入 mynginx 容器的交互式 Bash Shell)
    • -i: 交互式。
    • -t: 分配一个伪终端。
  • docker images [OPTIONS] [REPOSITORY[:TAG]]: 列出本地存储的镜像。
  • docker rmi IMAGE [IMAGE...]: 删除一个或多个本地镜像。
    • -f--force: 强制删除 (即使有容器基于它创建)。
  • docker pull NAME[:TAG|@DIGEST]: 从镜像仓库 (默认 Docker Hub) 拉取镜像。
    • 示例: docker pull ubuntu:latest
  • docker build [OPTIONS] PATH | URL | -: 使用 Dockerfile 构建镜像。
    • 示例: docker build -t myapp:1.0 . (在当前目录根据 Dockerfile 构建名为 myapp:1.0 的镜像)
    • -t name:tag: 指定镜像名称和标签。

Docker Compose 常用命令 (推荐使用 V2 插件语法)

Docker Compose 用于定义和运行多容器 Docker 应用。推荐使用 docker compose (无连字符) 命令。

  • docker compose up [OPTIONS] [SERVICE...]: 创建并启动 docker-compose.yml 文件定义的所有服务 (或指定服务)。
    • 示例: docker compose up -d (在后台启动所有服务)
    • -d: 后台运行。
    • --build: 在启动前构建镜像。
  • docker compose down [OPTIONS]: 停止并删除由 up 命令创建的容器、网络、卷。
    • -v--volumes: 同时删除定义在 volumes 中的数据卷。
    • --rmi all|local: 删除构建的镜像 (all: 所有, local: 仅无标签的)。
  • docker compose ps [OPTIONS] [SERVICE...]: 列出 Compose 项目中的容器状态。
  • docker compose logs [OPTIONS] [SERVICE...]: 查看服务的日志。
    • -f--follow: 持续跟踪日志。
    • --tail N: 显示最后 N 行日志。
  • docker compose build [OPTIONS] [SERVICE...]: 构建或重新构建服务使用的镜像。
  • docker compose pull [OPTIONS] [SERVICE...]: 拉取服务依赖的镜像。
  • docker compose exec [OPTIONS] SERVICE COMMAND [ARG...]: 在指定服务的一个运行容器内执行命令。
    • 示例: docker compose exec webserver nginx -v

注意: 如果你安装并使用的是独立的 docker-compose (带连字符),上述命令将连字符加回去即可,例如 docker-compose up -d

示例:使用 Docker Compose 安装 Nginx Proxy Manager

Nginx Proxy Manager (NPM) 是一个带有 Web 界面的 Nginx 反向代理管理工具,非常适合用 Docker Compose 部署。

  1. 确保 Docker 和 Docker Compose 已安装。

  2. 创建 NPM 配置目录:

    1
    2
    3
    mkdir -p ~/npm-data && cd ~/npm-data 
    # 使用 -p 确保父目录不存在时也会创建
    # 将数据放在用户目录下,避免权限问题,可按需修改路径
  3. 创建 docker-compose.yml 文件:
    ~/npm-data 目录下创建一个名为 docker-compose.yml 的文件,并填入以下内容(选择一个版本):

    • 官方最新版:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      version: '3.8' # 使用较新的 Compose 文件格式版本
      services:
      app:
      image: 'jc21/nginx-proxy-manager:latest'
      container_name: npm_app # 添加容器名方便管理
      restart: unless-stopped
      ports:
      # Public HTTP Port:
      - '80:80'
      # Public HTTPS Port:
      - '443:443'
      # Admin Interface Port:
      - '81:81'
      volumes:
      - ./data:/data # 持久化应用数据
      - ./letsencrypt:/etc/letsencrypt # 持久化 Let's Encrypt 证书
      networks: # 推荐为NPM创建一个独立的网络
      - npm_network

      networks:
      npm_network:
      driver: bridge
    • 中文版 (chishin):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      version: '3.8' # 同样建议使用较新版本
      services:
      app:
      image: 'chishin/nginx-proxy-manager-zh:latest' # 使用中文版镜像标签
      container_name: npm_app_zh
      restart: unless-stopped # 或者 always
      ports:
      - '80:80'
      - '81:81'
      - '443:443'
      volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      networks:
      - npm_network

      networks:
      npm_network:
      driver: bridge
  4. 启动服务:
    ~/npm-data 目录下执行:

    1
    docker compose up -d

    (如果使用独立版,则为 docker-compose up -d)

  5. 访问 NPM 管理界面:
    启动成功后,在浏览器中访问服务器的 http://<你的服务器IP>:81

  6. 默认登录凭据:

    • Email: admin@example.com
    • Password: changeme

    首次登录后,系统会强制要求你修改默认用户信息和密码。

通过这些命令和示例,希望能帮助你更好地理解和使用 Docker 与 Docker Compose 来管理你的应用容器。

  • Title: Docker 及 Docker Compose 的一些常用命令与实践
  • Author:
  • Created at : 2024-01-26 00:48:52
  • Updated at : 2025-04-29 19:22:00
  • Link: https://xblog.aptzone.cc/2024/01/26/docker以及docker-compose的一些常用命令/
  • License: All Rights Reserved © 凡
Comments