
第二步,拉取镜像,简单运行镜像,进入容器查看需要外挂的文件。
| # 拉取版本号为1.20.1的nginx镜像 |
| docker pull nginx:1.20.1 |
| # 以拉取的镜像运行一个配置了80:80的容器,容器名字为 nginx |
| docker run --name nginx -p 80:80 nginx:1.20.1 |
| # 进入名字为nginx的容器查看容器目录, |
| docker exec -it nginx /bin/bash |
| ls |

先根据别的容器使用经验,先去/usr/share/nginx下面看下。找到nginx默认的html路径。确定该路径需要外挂

/usr/share/nginx下面没有找到配置文件,回根路径,在/etc里面找到nginx配置路径,同时发现了module文件夹。

在使用https://cn.bing.com搜索一下别人的外挂文件经验确定下来,需要外挂的有两个文件夹。
第三步,退出容器,复制指定文件至宿主机目录
| # 退出容器 |
| exit |
| docker cp nginx:/etc/nginx /data |
| docker cp nginx:/usr/share/nginx/html /data/nginx |
| # 进入宿主机外挂文件夹下看下文件,发现modules指向无效引用。还好我宿主机**/usr/lib/nginx/modules**下没有东西 |
| cd /data/nginx && ll |

| # 复制**modules**文件夹至宿主机 |
| # 这里报错 cannot overwrite non-directory "/data/nginx/modules" with directory "/data/nginx",需要先删除宿主机现在的modules引用才行 |
| rm -r /data/nginx/modules |
| # 复制实际文件夹出来 |
| docker cp nginx:/usr/lib/nginx/modules /data/nginx |
第四步:关闭容器并删除容器,指定外挂文件夹启动容器
| # 关闭容器名(或者容器id)为nginx的容器 |
| docker stop nginx |
| # 删除容器 |
| docker rm nginx |
| # 指定外挂文件夹启动容器 |
| docker run --name nginx \ |
| -p 80:80 \ |
| -v /data/nginx/html:/usr/share/nginx/html \ |
| -v /data/nginx/modules:/usr/lib/nginx/modules \ |
| -v /data/nginx:/etc/nginx \ |
| nginx:1.20.1 |
看到启动成功,使用curl测试一下


扩展
初始启动指令只配置了一个端口映射,而nginx作为一个代理软件,后续肯定回新增端口代理的。所以需要为容器新增端口映射
docker 新增容器端口映射
配置文件代理,顺便验证stream流模块是否正常
| user nginx; |
| worker_processes auto; |
| |
| error_log /var/log/nginx/error.log notice; |
| pid /var/run/nginx.pid; |
| |
| |
| events { |
| worker_connections 1024; |
| } |
| stream { |
| server { |
| listen 8090; |
| proxy_pass 127.0.0.1:8080; |
| } |
| } |
| |
| http { |
| include /etc/nginx/mime.types; |
| default_type application/octet-stream; |
| |
| log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
| '$status $body_bytes_sent "$http_referer" ' |
| '"$http_user_agent" "$http_x_forwarded_for"'; |
| |
| access_log /var/log/nginx/access.log main; |
| |
| sendfile on; |
| #tcp_nopush on; |
| |
| keepalive_timeout 65; |
| |
| #gzip on; |
| |
| include /etc/nginx/conf.d/*.conf; |
| |
| server { |
| listen 8080; |
| server_name localhost; |
| location / { |
| root /usr/share/nginx/html; |
| autoindex on; |
| } |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律