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

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

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

安装 Docker 和 Docker Compose

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

安装 Docker Engine

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

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

1234
curl -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.ioyum 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.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 部署。

确保 Docker 和 Docker Compose 已安装。

创建 NPM 配置目录:

123
mkdir -p ~/npm-data && cd ~/npm-data # 使用 -p 确保父目录不存在时也会创建# 将数据放在用户目录下,避免权限问题,可按需修改路径

创建 docker-compose.yml 文件:在 ~/npm-data 目录下创建一个名为 docker-compose.yml 的文件,并填入以下内容(选择一个版本):

官方最新版:

12345678910111213141516171819202122
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_networknetworks:  npm_network:    driver: bridge

中文版 (chishin):

12345678910111213141516171819
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_networknetworks:  npm_network:    driver: bridge

启动服务:在 ~/npm-data 目录下执行:

1
docker compose up -d

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

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

默认登录凭据:

Email: admin@example.comPassword: changeme
首次登录后,系统会强制要求你修改默认用户信息和密码。

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

觉得内容不错?我要

评论 暂无评论
此页面未开启评论