Docker命令解析:加速你的容器化之旅(以Nginx为例)

一、前言

在现代软件开发和运维中,容器化技术已经成为不可或缺的一部分。Docker作为最流行的容器平台之一,通过其强大的命令行工具简化了应用的打包、部署和运行过程。本文不仅会详细介绍常用的Docker命令及其功能,还会以Nginx为例,展示如何使用这些命令来构建、运行和管理容器实例。

无论你是新手还是有一定经验的开发者,本文都将为你提供实用的知识和操作技巧,帮助你更高效地利用Docker的强大功能。让我们一起探索Docker命令的魅力吧!

​

‍

‍

二、Docker命令

Docker提供了一系列强大的命令行工具,用于管理容器、镜像、网络和卷等资源。

Docker 命令可以按照不同的功能进行分类,主要包括以下几类:镜像管理命令、容器管理命令、网络管理命令、数据管理命令、信息查看命令和系统管理命令。

‍

2.1 镜像管理

核心功能:镜像的获取、构建、查看与清理。

命令 说明 示例
​docker pull​ 拉取镜像 ​docker pull nginx:1.25​
​docker images​ 列出本地镜像 ​docker images -a​
​docker rmi​ 删除镜像 ​docker rmi nginx:old​
​docker build​ 构建镜像 ​docker build -t myapp:v1 .​
​docker tag​ 标记镜像 ​docker tag myapp:v1 myrepo/myapp:latest​
​docker push​ 推送镜像 ​docker push myrepo/myapp:latest​

‍

  1. 拉取镜像

    bash 复制代码
    docker pull [镜像名]:[标签]  # 默认拉取最新版(latest)

    示例:

    bash 复制代码
    docker pull nginx:1.21.6    # 拉取指定版本Nginx
  2. 构建镜像

    bash 复制代码
    docker build -t [自定义镜像名]:[标签] [Dockerfile路径]

    参数:

    • -t:指定镜像名称和标签
    • -f:指定自定义Dockerfile文件名
  3. 列出镜像

    bash 复制代码
    docker images       # 显示所有镜像
    docker image ls     # 同上(新语法)
  4. 删除镜像

    bash 复制代码
    docker rmi [镜像ID或名称]  # 删除单个镜像
    docker image prune        # 清理未被使用的镜像

‍

2.2 容器管理

核心功能:容器的启动、停止、删除及状态监控。

命令 说明 示例
​docker run​ 启动容器 ​docker run -d --name web nginx​
​docker start​ 启动已停止的容器 ​docker start web​
​docker stop​ 停止容器 ​docker stop web​
​docker restart​ 重启容器 ​docker restart web​
​docker rm​ 删除容器 ​docker rm -f web​
​docker ps​ 查看容器 ​docker ps -a​

常用参数:

  • -d:后台运行
  • --name:指定容器名称
  • -p:端口映射(主机端口:容器端口)
  • -v:挂载数据卷(主机目录:容器目录)
  • --network:指定网络

‍

  1. 启动容器

    bash 复制代码
    docker run [参数] [镜像名]

    常用参数:

    • -d:后台运行(守护模式)
    • --name:自定义容器名称
    • -p [宿主机端口]:[容器端口]:端口映射
    • -v [宿主机路径]:[容器路径]:数据卷挂载
    • --restart=always:容器自动重启

    示例:

    bash 复制代码
    docker run -d --name my-nginx -p 80:80 -v ./html:/usr/share/nginx/html nginx
  2. 停止/删除容器

    bash 复制代码
    docker stop [容器ID或名称]    # 停止容器
    docker start [容器ID或名称]   # 启动已停止的容器
    docker rm [容器ID或名称]      # 删除已停止的容器
    docker rm -f [容器ID或名称]   # 强制删除运行中的容器
  3. 查看容器状态

    bash 复制代码
    docker ps           # 查看运行中的容器
    docker ps -a        # 查看所有容器(包括已停止的)
    docker stats        # 实时监控容器资源占用(CPU/内存)

‍

2.3 容器交互与调试

核心功能:进入容器内部操作、日志查看与文件传输。

  1. 进入容器终端

    bash 复制代码
    docker exec -it [容器名] /bin/bash  # 启动交互式终端

    参数:

    • -i:保持标准输入打开
    • -t:分配伪终端
  2. 查看容器日志

    bash 复制代码
    docker logs [容器名]        # 查看全部日志
    docker logs -f [容器名]     # 实时追踪日志(类似tail -f)
    docker logs --tail 100 [容器名]  # 查看最后100行日志
  3. 文件复制

    bash 复制代码
    docker cp [宿主机文件路径] [容器名]:[容器路径]  # 复制到容器
    docker cp [容器名]:[容器文件路径] [宿主机路径]  # 复制到宿主机

‍

2.4 网络管理

核心功能:容器网络配置与连接管理。

命令 说明 示例
​docker network ls​ 列出网络 ​docker network ls​
​docker network create​ 创建网络 ​docker network create mynet​
​docker network connect​ 连接容器到网络 ​docker network connect mynet web​
​docker network inspect​ 查看网络详情 ​docker network inspect mynet​

‍

  1. 查看网络

    bash 复制代码
    docker network ls      # 列出所有网络
    docker network inspect [网络名]  # 查看网络详细信息
  2. 创建自定义网络

    bash 复制代码
    docker network create [网络名]

    示例:

    bash 复制代码
    docker network create my-net  # 创建桥接网络
  3. 容器加入网络

    bash 复制代码
    docker run --net=[网络名] [其他参数] [镜像名]

    示例:

    bash 复制代码
    docker run -d --net=my-net --name nginx1 nginx

‍

2.5 数据持久化

核心功能:通过数据卷实现容器数据的持久存储。

命令 说明 示例
​docker volume create​ 创建数据卷 ​docker volume create myvol​
​docker volume ls​ 列出数据卷 ​docker volume ls​
​docker volume inspect​ 查看数据卷详情 ​docker volume inspect myvol​
​docker volume rm​ 删除数据卷 ​docker volume rm myvol​

‍

  1. 创建数据卷

    bash 复制代码
    docker volume create [卷名]   # 创建命名卷
  2. 挂载数据卷

    bash 复制代码
    docker run -v [卷名]:[容器路径] [镜像名]       # 挂载命名卷
    docker run -v [宿主机路径]:[容器路径] [镜像名]  # 挂载主机目录

    示例(Nginx配置持久化):

    bash 复制代码
    docker run -d -p 80:80 -v nginx-config:/etc/nginx nginx

‍

2.6 容器编排(Docker Compose)

核心功能:通过YAML文件定义和管理多容器应用。

命令 说明 示例
​docker-compose up​ 启动服务 ​docker-compose up -d​
​docker-compose down​ 停止服务 ​docker-compose down​
​docker-compose logs​ 查看日志 ​docker-compose logs -f​
​docker-compose build​ 构建镜像 ​docker-compose build​

‍

  1. 启动服务

    bash 复制代码
    docker-compose up -d    # 后台启动所有服务
  2. 停止服务

    bash 复制代码
    docker-compose down     # 停止并删除容器、网络
  3. 配置文件示例 (docker-compose.yml​):

    yaml 复制代码
    version: '3'
    services:
      nginx:
        image: nginx:latest
        ports:
          - "80:80"
        volumes:
          - ./nginx.conf:/etc/nginx/nginx.conf
      backend:
        image: node:14
        command: npm start

‍

2.7 系统维护与清理

核心功能:资源监控与垃圾清理。

  1. 查看磁盘占用

    bash 复制代码
    docker system df  # 显示镜像、容器、卷的磁盘使用情况
  2. 清理无用资源

    bash 复制代码
    docker system prune       # 删除所有停止的容器、未被使用的镜像和卷
    docker system prune -a    # 额外清理未被任何容器引用的镜像

‍

2.8 安全与权限管理

核心功能:限制容器权限,提升安全性。

  1. 以非root用户运行容器

    bash 复制代码
    docker run -u [用户名或UID] [镜像名]

    示例:

    bash 复制代码
    docker run -u 1000 nginx  # 使用UID 1000运行
  2. 限制容器资源

    bash 复制代码
    docker run --memory=512m --cpus=1 [镜像名]  # 限制内存和CPU

‍

‍

三、示例---Docker命令管理Nginx

3.1 拉取 Nginx 镜像

  1. 打开 Windows PowerShell 或命令提示符(CMD),确保以管理员身份运行。

  2. 输入以下命令拉取 Nginx 镜像:

    复制代码
    docker pull nginx

    该命令将从 Docker Hub 下载最新的 Nginx 镜像。

​

‍

3.2 运行 Nginx 容器

成功拉取 Nginx 镜像后,可以启动一个 Nginx 容器:

1.运行以下命令:

bash 复制代码
docker run --name mynginx -p 8080:80 -d nginx

解析命令参数:

  • --name mynginx:为容器指定一个名称为 mynginx。
  • -p 8080:80:将主机的 8080 端口映射到容器的 80 端口。(将容器的 80 端口映射到主机的 8080 端口,这样我们就可以通过主机的 8080 端口访问 Nginx 服务)
  • -d:以后台模式运行容器。
  • nginx:指定要运行的镜像。

​

‍

2.成功启动后,您可以使用以下命令查看正在运行的容器:

bash 复制代码
docker ps

​

‍

3.3 Nginx跳转到指定域名

需求 :访问 http://localhost:8080​ 时反向代理到 https://www.xiaomiev.com​,保留URI路径,且浏览器地址栏保持 localhost:8080​ 不变。

以下是完整配置方案和分步说明:

配置文件 ​C:\nginx-proxy-config\default.conf​​

nginx 复制代码
server {
    listen 80;  # 容器内监听80端口
    server_name localhost;

    location / {
        # 代理到目标域名(HTTPS协议)
        proxy_pass https://www.xiaomiev.com;

        # 关键请求头设置
        proxy_set_header Host www.xiaomiev.com;  # 强制指定目标域名
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # SSL相关配置
        proxy_ssl_server_name on;          # 启用SNI
        proxy_ssl_protocols TLSv1.2 TLSv1.3;  # 指定TLS版本
        proxy_ssl_verify off;              # 关闭证书验证(测试环境用)
  
        # 重定向处理
        proxy_redirect ~^(https?://)www\.xiaomiev\.com(.*) $scheme://localhost:8080$2;
    }
}

‍

配置项 作用说明
​proxy_ssl_server_name​ 启用SNI(Server Name Indication),确保正确解析HTTPS域名证书
​proxy_ssl_verify off​ 测试环境专用,跳过SSL证书验证(生产环境应配置证书)
​proxy_redirect​ 重写响应头中的Location字段,防止目标站点的重定向导致浏览器跳转

‍

‍

步骤 1:创建配置文件

  1. 在Windows主机创建目录:

    powershell 复制代码
    mkdir C:\nginx-proxy-config
  2. 新建配置文件 C:\nginx-proxy-config\default.conf​,内容使用上述完整配置

‍

​

‍

步骤 2:启动/重建容器

powershell 复制代码
# 停止并删除旧容器(如果存在)
docker stop my-nginx 2> $null
docker rm my-nginx 2> $null

# 启动新容器
docker run -d --name my-nginx -p 8080:80 -v C:\nginx-proxy-config:/etc/nginx/conf.d nginx
  • 关键参数 :-v C:\nginx-proxy-config:/etc/nginx/conf.d​

    • 含义 :将主机的 C:\nginx-proxy-config 目录挂载到容器的 /etc/nginx/conf.d 目录
    • 效果 :容器启动时会自动加载该目录下的 所有 .conf 文件(包括 default.conf)

‍

步骤 3:验证配置

  1. 检查Nginx配置语法:

    powershell 复制代码
    docker exec my-nginx nginx -t

    应输出:

    复制代码
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    ​

  2. 测试代理效果:

    powershell 复制代码
    # 检查HTTP响应头
    curl -I http://localhost:8080
    
    # 预期输出包含:
    # HTTP/1.1 200 OK
    # Server: nginx
    # 实际内容来自www.xiaomiev.com

​

‍

​

‍

3.4 Nginx容器删除

步骤 1: 列出正在运行的容器

使用以下命令查看当前正在运行的容器:

复制代码
docker ps

步骤 2: 停止容器

找到您要删除的容器的名称或 ID,然后使用以下命令停止它(将 [容器ID或名称]​ 替换为实际的容器 ID 或名称):

复制代码
docker stop [容器ID或名称]

例如,如果容器名称是 mynginx​,可以执行:

复制代码
docker stop mynginx

步骤 3: 删除容器

容器停止后,可以使用以下命令删除它:

复制代码
docker rm [容器ID或名称]

例如:

复制代码
docker rm mynginx

‍

一步到位的命令

如果希望在停止和删除容器时一步到位,可以使用 -f​(强制)选项。这将强制停止并删除容器:

复制代码
docker rm -f [容器ID或名称]

​

‍

​

‍

​

‍

注意事项
  • 在删除容器之前,确保您已经备份了任何需要的数据。
  • 被删除的容器无法恢复,所以请谨慎操作。

‍

3.5 保存自有镜像

针对上述对容器中做的修改,修改保存。可以保存自有镜像方式实现

步骤 1: 确保容器的修改已完成

在保存镜像之前,确保您在 Nginx 容器中所做的所有修改(例如,配置文件、静态文件或其他内容的更新)已经完成。

步骤 2: 获取容器 ID 或名称

使用以下命令查看当前正在运行的容器,找到您想要保存的 Nginx 容器的 ID 或名称:

复制代码
docker ps

步骤 3: 提交容器为新镜像

使用 docker commit​ 命令将修改后的 Nginx 容器保存为新镜像。命令的基本语法如下:

复制代码
docker commit [容器ID或名称] [镜像名称:标签]

例如,如果您的容器名称是 mynginx​,您想将其保存为名为 mycustomnginx​ 的镜像,可以使用以下命令:

复制代码
docker commit mynginx mycustomnginx:latest

‍

bash 复制代码
docker commit mynginx mycustomnginx:v1.0

​

‍

步骤 4: 验证新镜像

提交完成后,您可以使用以下命令查看新的镜像是否成功创建:

复制代码
docker images

该命令会列出所有可用的镜像,您应该能在列表中找到 mycustomnginx​。

​

​

‍

步骤 5: 使用新镜像

完成镜像创建后,您可以使用以下命令来启动一个新的容器:

复制代码
docker run --name newnginx -p 8080:80 -d mycustomnginx:latest

这将使用新创建的镜像启动一个名为 newnginx​ 的容器,并将其端口 80 映射到主机的端口 8080。

‍

​

‍

​

‍

可以看到启动后,就是保存的自有镜像运行结果

​

‍

‍

结束语

Docker命令作为容器化技术的核心工具,不仅简化了应用的部署与管理,更重塑了开发与运维的高效协作范式。通过本文的镜像管理、容器操作、网络配置等命令解析,您已掌握从单服务部署到多容器联动的关键技能。无论是快速搭建Nginx服务,还是构建复杂微服务架构,Docker命令都能将环境差异和配置难题化繁为简。

建议在实践中结合场景需求,逐步探索Docker Compose、Swarm等进阶工具,持续释放容器化技术的潜力。唯有将命令转化为解决实际问题的能力,方能在云原生浪潮中游刃有余。

​

‍

相关推荐
Zhou1411363 分钟前
Docker_03_DockerCompose多容器编排
运维·docker·容器
啊哈一半醒2 小时前
Docker 底层知识:从 Namespace 到 UnionFS
运维·docker·容器
吴声子夜歌3 小时前
Nginx应用与运维——Nginx核心配置指令(一)
运维·nginx
fruge4 小时前
飞牛OS部署Flare导航页:Docker Compose、YAML书签配置与cpolar公网访问
运维·docker·容器
Zhou1411364 小时前
Docker_02_Dockerfile与存储网络
网络·docker·容器
谢亮_vipxieliang9 小时前
一套 Compose 搭起完整开发环境:MySQL + Redis + Nginx
redis·mysql·nginx·docker
xbzb10 小时前
Nginx 反向代理总 404?Location 匹配与 proxy_pass 尾斜杠避坑手册
linux·运维·nginx·虚拟主机
ShayneLee810 小时前
Nginx只开一个端口!能做什么?(一)
运维·nginx
江湖有缘10 小时前
Docker实战 | 使用Docker部署Bibliotheca阅读习惯管理工具
java·docker·容器
万联WANFLOW10 小时前
Docker Hub 镜像拉取慢、timeout 的排查方法
运维·docker·云原生·容器·eureka