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

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 可以更轻松地管理多容器应用。
http://www.xdnf.cn/news/8432.html

相关文章:

  • 摩尔线程S4000国产信创计算卡性能实战——Pytorch转译,多卡P2P通信与MUSA编程
  • 电子电路:什么是电磁耦合?
  • 【Python 基础与实战】从基础语法到项目应用的全流程解析
  • 虚拟机下ubuntu分区挂载实验
  • Structured Query Language(SQL)它到底是什么?
  • 重写muduo库
  • 深度学习中的分布偏移问题及其解决方法
  • 【Python 算法零基础 4.排序 ⑤ 归并排序】
  • Nature Cancer发表医学AI多模态模型,整合临床、基因、影像以及病理数据,探索跨模态信息融合方法
  • 问题六、SIMTOSIM部分遇到的问题及解决方法
  • hdc - Mac本环境配置
  • Terraform创建阿里云基础组件资源
  • 同一无线网络下的设备IP地址是否相同?
  • 前端[插件化]设计思想_Vue、React、Webpack、Vite、Element Plus、Ant Design
  • Pycharm和Flask的学习心得(4和5)
  • 如何获得 compile_commands.json
  • 博弈论(巴什、nim、......SG打表)
  • 从 0 到 1 打造高价值技术文档
  • VirtualHere USB Server国产替代软硬一体方案
  • ModbusRTU转profibusDP网关如何与万利达电动机保护器快速通讯
  • PyQt学习系列05-图形渲染与OpenGL集成
  • 五金铸件厂ERP是否好用呢
  • PostgreSQL 处理链接请求
  • Postgresql 数据库体系架构
  • OBS 玩转你直播录视频
  • Joplin+群晖NAS远程同步方案:私有云笔记的稳定存储与跨设备管理实践
  • 电路笔记(元器件):CAN 收发器 SN65HVD233 具有待机模式和环回功能的 3.3V CAN 收发器
  • Windows逆向工程提升之IMAGE_IMPORT_DESCRIPTOR
  • Python入门手册:Python基础语法
  • Android12 Rom定制去掉剪贴板复制成功的Toast