Docker 和 Docker Compose 是现代化应用开发与部署中不可或缺的工具,它们极大地简化了环境配置、应用打包和多容器编排。本文将介绍它们的安装方法、常用命令,并提供一个使用 Docker Compose部署 Nginx Proxy Manager 的实例。
安装 Docker 和 Docker Compose
推荐使用官方的安装方式以获取最新、最稳定的版本。
安装 Docker Engine
官方提供了方便的脚本来安装最新稳定版的 Docker Engine,这通常包含了 Docker CLI、containerd 等核心组件,并且现在默认也包含了 Docker Compose V2 (作为 docker compose CLI 插件)。
使用官方脚本 (推荐,适用于测试和开发环境):
1234curl -fsSL [https://get.docker.com](https://get.docker.com) -o get-docker.shsudo sh get-docker.sh# 添加当前用户到 docker 组,避免每次都 sudo (需要重新登录或 newgrp docker 生效)sudo usermod -aG docker $USER 这个脚本会自动检测你的 Linux 发行版并安装最新版本。对于生产环境,建议遵循 Docker 官方文档中针对特定发行版(如 Ubuntu, CentOS 等)的详细手动安装步骤:Install Docker Engine。
避免使用旧的包管理器版本: 直接使用 apt install docker.io 或 yum install docker 安装的版本可能相对陈旧,建议使用上述官方脚本或官方文档的步骤。
安装 Docker Compose
如上所述,通过 get.docker.com 脚本安装的 Docker Engine 通常已经包含了 Compose V2,你可以通过 docker compose version 来验证。推荐使用集成的 docker compose 命令(注意中间没有连字符 -)。
如果需要独立的 docker-compose (兼容旧脚本或特定需求):虽然不推荐,但如果你确实需要独立的 docker-compose 二进制文件(它也支持 V2 语法),可以通过以下方式安装最新版本:
12345678# 自动获取最新版本号并下载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 版本,强烈不建议 使用此方法。
推荐一个一键安装脚本 (第三方):如果你偏好使用脚本,可以尝试作者提供的脚本(请注意使用第三方脚本的潜在风险,建议审查脚本内容):
12345# 克隆仓库git clone [https://github.com/ZefanHu/docker-install-script](https://github.com/ZefanHu/docker-install-script)cd docker-install-script# 执行脚本sudo ./docker-install-script.shDocker 常用命令
以下是一些管理 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 mynginxdocker start CONTAINER [CONTAINER...]: 启动一个或多个已停止的容器。示例: docker start mynginxdocker 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:latestdocker 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 部署。
确保 Docker 和 Docker Compose 已安装。
创建 NPM 配置目录:
123mkdir -p ~/npm-data && cd ~/npm-data # 使用 -p 确保父目录不存在时也会创建# 将数据放在用户目录下,避免权限问题,可按需修改路径创建 docker-compose.yml 文件:在 ~/npm-data 目录下创建一个名为 docker-compose.yml 的文件,并填入以下内容(选择一个版本):
官方最新版:
12345678910111213141516171819202122version: '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_networknetworks: npm_network: driver: bridge中文版 (chishin):
12345678910111213141516171819version: '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_networknetworks: npm_network: driver: bridge启动服务:在 ~/npm-data 目录下执行:
1docker compose up -d(如果使用独立版,则为 docker-compose up -d)
访问 NPM 管理界面:启动成功后,在浏览器中访问服务器的 http://<你的服务器IP>:81。
默认登录凭据:
Email: admin@example.comPassword: changeme
首次登录后,系统会强制要求你修改默认用户信息和密码。
通过这些命令和示例,希望能帮助你更好地理解和使用 Docker 与 Docker Compose 来管理你的应用容器。
觉得内容不错?我要