当前位置: 首页 > article >正文

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

一、前言

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

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

image

二、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. 拉取镜像

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

    示例

    docker pull nginx:1.21.6    # 拉取指定版本Nginx
    
  2. 构建镜像

    docker build -t [自定义镜像名]:[标签] [Dockerfile路径]
    

    参数

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

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

    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. 启动容器

    docker run [参数] [镜像名]
    

    常用参数

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

    示例

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

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

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

2.3 容器交互与调试

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

  1. 进入容器终端

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

    参数

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

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

    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. 查看网络

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

    docker network create [网络名]
    

    示例

    docker network create my-net  # 创建桥接网络
    
  3. 容器加入网络

    docker run --net=[网络名] [其他参数] [镜像名]
    

    示例

    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. 创建数据卷

    docker volume create [卷名]   # 创建命名卷
    
  2. 挂载数据卷

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

    示例(Nginx配置持久化):

    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. 启动服务

    docker-compose up -d    # 后台启动所有服务
    
  2. 停止服务

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

    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. 查看磁盘占用

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

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

2.8 安全与权限管理

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

  1. 以非root用户运行容器

    docker run -u [用户名或UID] [镜像名]
    

    示例

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

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

三、示例—Docker命令管理Nginx

3.1 拉取 Nginx 镜像

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

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

    docker pull nginx
    

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

image

3.2 运行 Nginx 容器

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

1.运行以下命令:

docker run --name mynginx -p 8080:80 -d nginx

解析命令参数:

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

image

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

docker ps

image

3.3 Nginx跳转到指定域名

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

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

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

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主机创建目录:

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

image

步骤 2:启动/重建容器

# 停止并删除旧容器(如果存在)
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配置语法:

    docker exec my-nginx nginx -t
    

    应输出:

    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    image

  2. 测试代理效果:

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

image

image

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或名称]

image

image

image

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

3.5 保存自有镜像

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

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

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

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

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

docker ps

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

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

docker commit [容器ID或名称] [镜像名称:标签]

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

docker commit mynginx mycustomnginx:latest

docker commit mynginx mycustomnginx:v1.0

image

步骤 4: 验证新镜像

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

docker images

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

image

image

步骤 5: 使用新镜像

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

docker run --name newnginx -p 8080:80 -d mycustomnginx:latest

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

image

image

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

image

结束语

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

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

image


http://www.kler.cn/a/589681.html

相关文章:

  • 爬虫逆向:逆向中用到汇编语言详细总结
  • Pygame实现记忆拼图游戏7
  • 接口请求限制自定义注解
  • 机器学习核心概念解读
  • Webpack构建流程详解优化前端性能\Dev-Server与Proxy\网络攻击\HMR
  • 深入解析 Spring Boot 中的 FailureAnalyzer
  • C++菱形继承内存模型
  • ONENET数据可视化命令框下发命令使用
  • 内网环境安装dlv,本地远程调试go
  • 自动化实施的常用元件有哪几种?
  • hadoop-配置安装jdk
  • Linux目录结构以及文件操作
  • IDEA的相关配置
  • 孤儿进程与僵尸进程:Linux进程管理中的“隐形杀手”与“无主孤儿”
  • 蓝桥杯 之 数学规律求解
  • React:React主流组件库对比
  • 【数据库】Data Model(数据模型)数据模型分析
  • AGI大模型(8):提示词的安全与防护
  • Redis 持久化机制:AOF 与 RDB 详解
  • 使用Ollama本地部署DeepSeek