首页 教程 开发工具 2024年最新 Docker 安装 Nginx 容器 (完整详细版) 2025年最新

2024年最新 Docker 安装 Nginx 容器 (完整详细版) 2025年最新

Docker 安装 Nginx 容器 (完整详细版)

本文详细介绍了Docker的安装步骤,包括如何从官方镜像仓库下载Nginx镜像,如何检查已下载的镜像。接着,讲解了创建Nginx配置文件的必要性,并提供了创建挂载目录的命令。然后,展示了如何创建并运行Nginx容器,包括端口映射、配置文件挂载和日志目录设置。最后,提到了如何重启容器以应用修改,并给出了结果检测的方法。

说明:

Docker如果想安装软件 , 必须先到 Docker 镜像仓库下载镜像。如果能从docker拉取nginx镜像的,可以直接拉取,拉取不了的,我这里提供国内可用的,截至2024年12月12日为nginx最新的镜像

docker官方的镜像拉取命令:

docker pull nginx

国内可用的:

docker pull registry.cn-shenzhen.aliyuncs.com/amgs/nginx:latest

检查当前所有Docker下载的镜像

docker images

创建Nginx配置文件

启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)
之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果

创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/conf/conf.d
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

容器中的nginx.conf文件和conf.d文件夹复制到宿主机

#生成容器
docker run --name nginx -p 9001:80 -d nginx
#将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.con
#将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
#将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

创建Nginx容器并运行
#直接执行docker rm nginx或者以容器id方式关闭容器
#找到nginx对应的容器id
docker ps -a
#关闭该容器
docker stop nginx
#删除该容器
docker rm nginx
#删除正在运行的nginx容器
docker rm -f nginx

Docker 创建Nginx容器

docker run \-p80:80 \--name nginx \-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \-v /home/nginx/log:/var/log/nginx \-v /home/nginx/html:/usr/share/nginx/html \-d nginx:latest

如果需要绑定ssl的需要把443的端口映射出来

docker run \-p80:80 \-p443:443\--name nginx \-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \-v /home/nginx/log:/var/log/nginx \-v /home/nginx/html:/usr/share/nginx/html \-d nginx:latest

我自己的实际情况映射了别的目录,如下
-v /home/files:/etc/nginx/html/htmlstatic

docker run -p443:443 -p80:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -v /home/files:/etc/nginx/html/htmlstatic -d nginx:latest

ssl的nginx的配置,给我自己项目中的应用示例:

[root@VM-4-20-centos conf.d]# cat default.conf_ssl_back server { listen 443 ssl; listen [::]:443 ssl; server_name www.test.com;#access_log /var/log/nginx/host.access.log main; ssl_certificate /home/www.test.com_nginx/www.test.com_bundle.pem;# 证书文件路径 ssl_certificate_key /home/www.test.com_nginx/www.test.com.key;# 私钥文件路径# 可选的 SSL 配置,增强安全性 ssl_protocols TLSv1.2 TLSv1.3;# 仅启用 TLS 1.2 和 1.3 ssl_prefer_server_ciphers on;# 使用服务器优先的密码套件 ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256';# 推荐的密码套件 location /htmlstatic {alias /etc/nginx/html/htmlstatic;# 设置别名,指向容器内的目录 autoindex on;# 开启目录浏览} location /jtoService { rewrite ^/jtoService/(.*)$ /$1break; proxy_pass http://127.0.0.1:8991;} location /app { rewrite ^/app/(.*)$ /$1break; proxy_pass http://127.0.0.1:8990;# 将请求转发到本机的1234端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} location /manage { proxy_pass http://127.0.0.1:8090;# 将请求转发到本机的1234端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} location / { root /usr/share/nginx/html; index index.html index.htm;}#error_page 404 /404.html; error_page 500502503504 /50x.html; location = /50x.html { root /usr/share/nginx/html;}}[root@VM-4-20-centos conf.d]#

其中需要把ssl证书放在docker nginx 容器里面 /home/www.test.com_nginx/ 目录下
例如,如果证书在宿主机的文件夹为www.test.com_nginx
需要把目录切换到www.test.com_nginx当前目录下

dockercp www.test.com_nginx/ nginx:/home

在这里引用了大佬的文章,只是在我自己使用上做了总结

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.18k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.24k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.16k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.09k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  491

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  316

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。