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

Docker安装Nginx(最完整的安装方式)

首先介绍一下docker安装的nginx的文件目录解析

‌一、容器内的默认路径

  1. ‌核心配置文件‌

    • 主配置文件:/etc/nginx/nginx.conf 
    • 子配置文件:/etc/nginx/conf.d/(存放 *.conf 扩展配置)
  2. ‌静态资源目录‌

    • 默认HTML文件路径:/usr/share/nginx/html 
  3. ‌日志文件‌

    • 访问日志和错误日志:/var/log/nginx/ 
  4. ‌二进制文件位置‌

    • Nginx可执行文件:/usr/sbin/nginx 

二、如何查看路径

1‌.进入容器内部查看

# 查找容器ID
docker ps
# 进入容器Shell
docker exec -it <容器ID或名称> /bin/bash
# 查看Nginx相关路径
whereis nginx  # 显示二进制文件路径
ls /etc/nginx  # 查看配置文件目录 :ml-citation{ref="6,7" data="citationList"}

2‌.通过临时容器提取默认配置 

# 启动临时容器
docker run --name tmp-nginx -d nginx
# 拷贝默认配置到宿主机
docker cp tmp-nginx:/etc/nginx/nginx.conf /宿主机/目标目录 :ml-citation{ref="5" data="citationList"}

三、自定义挂载路径 

 ‌1.创建宿主机目录

mkdir -p /宿主机/目录/{conf,html,logs}

‌2.挂载运行容器 

docker run -d --name my-nginx \-v /宿主机/目录/conf:/etc/nginx \       # 映射配置目录-v /宿主机/目录/html:/usr/share/nginx/html \  # 映射静态资源-v /宿主机/目录/logs:/var/log/nginx \  # 映射日志目录-p 80:80 nginx :ml-citation{ref="4,5" data="citationList"}
  • 此时容器内路径会被宿主机目录覆盖,修改宿主机文件可直接生效。

四、注意事项

  1. 首次挂载空目录问题

    • 若宿主机挂载目录为空,Docker会直接将容器内对应目录内容复制到宿主机(仅首次挂载时)。
  2. 权限配置

    • 确保宿主机目录权限与容器内Nginx用户(默认nginx用户)匹配,避免读写失败。

Docker安装Nginx

一.拉取官方的Nginx镜像 

docker pull nginx

二.使用 Nginx 默认的配置来启动一个 Nginx 容器实例: 

docker run --rm --name
nginx-test -p 8080:80 -d nginx

 参数的含义如下:

--rm:容器终止运行后,自动删除容器文件

--name nginx-test:容器的名字叫做Nginx-test,名字自己定义

-p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口

-d:容器启动后,在后台运行

三.Nginx 服务部署,映射本地目录到Nginx容器

mkdir -p /opt/nginx/www /opt/nginx/conf

参数:

www: 目录将映射为 nginx 容器配置的虚拟目录。

conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

四.拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,ID可以查看 docker ps 命令输入中的第一列

五.部署命令

docker run --rm -d -p 8081:80 --name nginx-test-web \-v /opt/nginx/www:/usr/share/nginx/html \-v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \nginx

命令说明:

--rm:容器终止运行后,自动删除容器文件。

-p 8081:80: 将容器的 80 端口映射到主机的 8081 端口.

--name nginx-test-web:将容器命名为 Nginx-test-web

-v /home/Nginx/www:/usr/share/Nginx/html:将我们自己创建的 www 目录挂载到容器的

/usr/share/Nginx/html

-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf

载到容器的 /etc/nginx/nginx.conf


Docker常用命令及案例说明

Docker 基本命令概述

  • Docker 简介:Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中。
  • Docker 命令分类:包括镜像管理、容器管理、网络管理、数据卷管理等。

镜像管理命令

  • docker pull:从 Docker Hub 或其他镜像仓库拉取镜像。
  • docker images:列出本地所有的镜像。
  • docker rmi:删除本地的一个或多个镜像。
  • docker build:通过 Dockerfile 构建镜像。

容器管理命令

  • docker run:创建并启动一个新容器。
  • docker ps:列出正在运行的容器。
  • docker stop:停止一个或多个正在运行的容器。
  • docker start:启动一个或多个已停止的容器。
  • docker rm:删除一个或多个容器。
  • docker exec:在运行的容器中执行命令。

网络管理命令

  • docker network create:创建一个新的网络。
  • docker network ls:列出所有的网络。
  • docker network inspect:查看网络的详细信息。
  • docker network connect:将容器连接到指定网络。
  • docker network disconnect:将容器从指定网络断开。

数据卷管理命令

  • docker volume create:创建一个新的数据卷。
  • docker volume ls:列出所有的数据卷。
  • docker volume inspect:查看数据卷的详细信息。
  • docker volume rm:删除一个或多个数据卷。

Docker Compose 命令

  • docker-compose up:根据 docker-compose.yml 文件启动服务。
  • docker-compose down:停止并删除由 docker-compose up 创建的所有容器、网络、数据卷等。
  • docker-compose ps:列出由 docker-compose 管理的所有容器。
  • docker-compose logs:查看由 docker-compose 管理的容器的日志。

案例分析:使用 Docker 部署一个简单的 Web 应用

  • 案例背景:部署一个基于 Flask 的简单 Web 应用。
  • 步骤:
    • 编写 Dockerfile 文件,定义应用的环境和依赖。
    • 使用 docker build 命令构建镜像。
    • 使用 docker run 命令启动容器,并映射端口。
    • 使用 docker ps 命令查看容器状态。
    • 使用 docker logs 命令查看容器日志。
    • 使用 docker stopdocker rm 命令停止并删除容器。

案例分析:使用 Docker Compose 部署多容器应用

  • 案例背景:部署一个包含 Web 应用和数据库的多容器应用。
  • 步骤:
    • 编写 docker-compose.yml 文件,定义服务和网络。
    • 使用 docker-compose up 命令启动所有服务。
    • 使用 docker-compose ps 命令查看服务状态。
    • 使用 docker-compose logs 命令查看服务日志。
    • 使用 docker-compose down 命令停止并删除所有服务。

 Docker命令具体案例实现

基础环境准备
  • 安装Docker(Linux/Windows/macOS)。
  • 验证安装成功:
docker --version
  • 启动Docker服务并设置开机自启(Linux示例):
sudo systemctl start docker
sudo systemctl enable docker
镜像操作案例
  • 拉取官方Nginx镜像:
docker pull nginx:latest
  • 查看本地镜像列表:
docker images
  • 删除指定镜像:
docker rmi nginx:latest
容器生命周期管理案例
  • 运行一个交互式Ubuntu容器:
docker run -it ubuntu /bin/bash
  • 后台运行Nginx容器并映射端口:
docker run -d -p 8080:80 nginx
  • 查看运行中的容器:
docker ps
  • 停止并删除容器:
docker stop <CONTAINER_ID>
docker rm <CONTAINER_ID>
数据持久化案例
  • 挂载主机目录到容器:
docker run -v /host/path:/container/path -d nginx
  • 创建并使用数据卷:
docker volume create my_volume
docker run -v my_volume:/data -d alpine
网络配置案例
  • 创建自定义网络并运行容器:
docker network create my_network
docker run --network=my_network -d nginx
  • 查看容器网络详情:
docker inspect <CONTAINER_ID> | grep IPAddress
Dockerfile实战案例
  • 编写Dockerfile构建自定义镜像(以Python应用为例):
FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
  • 构建并运行镜像:
docker build -t my_python_app .
docker run -d -p 5000:5000 my_python_app
常用运维命令案例
  • 查看容器日志:
docker logs <CONTAINER_ID>
  • 进入运行中的容器:
docker exec -it <CONTAINER_ID> /bin/bash
  • 资源使用统计:
docker stats
总结
  • 回顾关键命令及其应用场景。
  • 推荐进一步学习Docker Compose和Swarm等进阶工具。

常见问题与解决方案

  • 镜像拉取失败:检查网络连接,确保镜像名称正确。
  • 容器启动失败:查看容器日志,检查端口冲突或配置错误。
  • 网络连接问题:检查网络配置,确保容器在同一网络中。
  • 数据卷丢失:确保数据卷正确挂载,避免误删数据卷。

总结

  • Docker 命令的灵活性和强大功能使得容器化应用的部署和管理变得更加高效。
  • 通过实际案例的分析,可以更好地理解和掌握 Docker 的使用方法。
  • 在实际应用中,结合 Docker Compose 可以更轻松地管理多容器应用。

相关文章:

  • 2025年5月网工基础知识
  • Linux iSCSI存储共享实验指南
  • SpringMVC(结合源码浅析工作流程)
  • 一条SQL语句的旅程:解析、优化与执行全过程研究
  • 【论文精读】2023 AAAI--FastRealVSR现实世界视频超分辨率(RealWorld VSR)
  • Flutter遇到的问题
  • 数据结构(5)线性表-栈
  • Flutter - 国际化
  • 【JVM 02-JVM内存结构之-程序计数器】
  • 线程池介绍,分类,实现(工作原理,核心组成,拒绝策略),固态线程池的实现+详细解释(支持超时取消机制和不同的拒绝策略)
  • OBS 玩转你直播录视频
  • 【SSL部署与优化​】​​OCSP Stapling配置指南:减少证书验证延迟​​
  • ten-vad:低延迟、轻量化且高性能的流式语音活动检测系统
  • HTTP协议接口三种测试方法之-postman
  • vue pinia 独立维护,仓库统一导出
  • leetcode hot100刷题日记——11.相交链表
  • Linux 之 Ubuntu Server 安装
  • 【Bluedroid】蓝牙HID Host disconnect流程源码解析
  • 【Hexo】3.主题
  • AI-02a5a8.神经网络-与学习相关的技巧-超参数的验证
  • 上海疫情最新情况2023年6月/seo全称英文怎么说
  • 水磨沟区做网站的/国际新闻最新
  • 网站横幅js代码/怎么开个人网站
  • 网页设计做音乐网站/b2b推广网站
  • 郑州高端网站公司/太原百度搜索排名优化
  • 网站建设现在好做吗/世界杯最新排名