千家信息网

Docker创建一个Nginx服务器的方法步骤

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,运行环境: MACDocker 版本: Docker version 17.12.0-ce, build c97c6d6一、启动Nginx 服务器启动Nginx 服务器,并进入模拟终端docker r
千家信息网最后更新 2026年11月01日Docker创建一个Nginx服务器的方法步骤

运行环境: MAC

Docker 版本: Docker version 17.12.0-ce, build c97c6d6

一、启动Nginx 服务器

启动Nginx 服务器,并进入模拟终端

docker run -p 8080:80 --name nginx_web -it nginx /bin/bash

二、了解Nginx 镜像的配置文件位置

日志文件位置:/var/log/nginx

配置文件位置: /etc/nginx

资源存放的位置: /usr/share/nginx/html

上面的配置路径是我电脑上的虚拟linux中地址,请各位读者,也自己去看下自己的配置位置

三、修改Nginx 的默认首页,测试是否可以运行

重要提示: 对于不想折腾的同学,可以直接从第四步来运行

/usr/share/nginx/htmlecho "

Hello Docker

" > index.html

到这里有的朋友,可能会发现,我访问localhost:8080 端口,第一次出现了Nginx 的欢迎界面,而第二次就出现了404 提示。

关于这个问题,本文不展开详序,如果不明白的,可以参考:
1.docker运行nginx为什么要使用 daemon off
2.docker容器运行后退出,怎么才能一直运行?
3.Docker run 命令的使用方法

Docker 执行 docker run 之后,先在当前操作系统的基础上,虚拟化了一个精简版的linux(仅仅包含系统运行的最精简功能),然后加载我们的Nginx镜像。当Nginx镜像加载到我们的虚拟Linux环境中时,相当于在系统里执行了一个脚本,而这个脚本就是Nginx。

由于默认的Nginx 是不作为守护进程运行的。所以当Docker内监听到80端口的请求后,完成之后,就退出了Nginx的进程。该容器内只有一个进程,并且是非守护的,执行完请求进程就销毁了。那么这个容器也就没有存在的必要了,所以Docker 中这个服务也就停掉了。这也就是我们执行 docker top 看不到当前运行的容器的原因。

作为暂时解决Nginx 只执行一次就退出的问题,我们可以进入交互式终端,执行 nginx & 让nginx 作为守护进程后台运行。

查看我们正在运行的容器

roverliang$ docker psCONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES

如果什么内容都没有,说明当前没有正在运行的容器。

查看已经运行结束的容器

roverliang$ docker ps -aCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS           PORTS         NAMES5bff285f60b3    nginx        "/bin/bash"       9 minutes ago    Exited (0) 6 minutes ago              nginx_web

重新启动我们刚刚启动过的容器

docker start nginx_web

进入到我们的容器内部

docker attach nginx_webecho "

Hello Docker

" > /usr/share/nginx/html/index.htmlnginx &

然后 使用快捷键 control + Q 退出当前的容器

之后我们在浏览器再次访问:http://localhost:8080/

折腾了这么久,终于看到我们期望的的内容了。

Hello Docker

四、将前面Nginx Demo 变成一个可以玩的 Demo

先创建我们本机需要映射的文件夹

 mkdir -p docker_study/log docker_study/etc docker_study/html

注意: 在自己的家目录创建

复制我们docker中nginx 的配置文件

docker cp 65bc23f952db:/etc/nginx/ /Users/roverliang/docker_study/etc/

关闭掉我们的容器

docker stop nginx_web

删除掉我们的练习的demo,我们重新来构建一个可以用的。

docker rm nginx_web

将Nginx 镜像和我们本机的目录进行映射,方便我们修改文件

docker run \-p 8080:80 \--name nginx_web \-v /Users/roverliang/docker_study/log/:/var/log/nginx \-v /Users/roverliang/docker_study/etc/nginx.conf:/etc/nginx/nginx.conf \-v /Users/roverliang/docker_study/html/:/usr/share/nginx/html \-it \-d \nginx \/bin/bash \

运行到这里,我们可能还是会发现访问http://localhost:8080/ 没有内容。但是不要急,解决问题的过程,就是学习新东西的过程,继续网上查资料,参考如下:

Docker运行nginx

摘抄文中让我豁然开朗的一段:

我之前运行的时候,一般都采用交互式:-i 保证容器的stdin开启-t 为容器生成一个tty终端,在命令的最后加一个/bin/bash来保证可以交互。但是实际上,nginx并没有运行,导致我以为容器的端口绑定不是持久化的。

接下来我们需要关掉,并删除我们的容器,再按照如下的命令重启一个:

docker run \-p 8080:80 \--name nginx_web \-v /Users/roverliang/docker_study/log/:/var/log/nginx \-v /Users/roverliang/docker_study/etc/nginx.conf:/etc/nginx/nginx.conf \-v /Users/roverliang/docker_study/html/:/usr/share/nginx/html \-d \nginx 

五、修改Nginx 配置,解析一个网站

修改我们刚刚复制过来的nginx 配置

cd /Users/roverliang/docker_study/etcvim nginx.conf

在Http 模块中添加如下配置:

 server  {      listen 80;     server_name www.test_nginx.com;    index index.html;    root /usr/share/nginx/html;  }  

然后回到宿主机,绑定host 127.0.0.1 www.test_nginx.com

大功告成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

运行 容器 配置 文件 位置 进程 内容 镜像 服务 命令 就是 端口 系统 终端 问题 服务器 交互式 正在 环境 目录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 互联网科技工作委员会毛军 厦门中拓互联网络科技有限公司 互联网科技社 关于新基建和互联网科技 互联网科技集团 电子科技大学互联网 互联网科技公司有哪些 甘肃拓世互联网科技有限公司 四个字互联网科技公司取名 互联网企业和科技型企业 南平创想时代互联网科技有限公司 昊天互联网科技有限公司 允成互联网科技有限公司融资 高科技互联网套路 山东星卡互联网科技有限公司官网 西安有哪些互联网高科技企业 科技互联网行业投资研究 数字科技和互联网金融哪个好 互联网科技大佬云集 博彦科技互联网金融 美国互联网科技巨头监管 互联网络科技有限公司 互联网科技创新服务 受益于互联网科技的高速发展 成都互联网科技公司工作好不好 链环科技传统企业怎么转型互联网 元气玛特互联网科技公司是外包吗 美国互联网科技公司 保山互联网科技靠谱吗
0