docker 安装 nginx

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 安装 nginx相关的知识,希望对你有一定的参考价值。

参考技术A docker 安装nginx是很简单的,主要是需要映射的目录有点多,映射出来是有好处的,以后我们维护就简单了,妈妈再也不担心我不小心删掉容器了

宿主机和容器的目录没有都会自动创建

宿主机目录为空,容器目录不为空,宿主机目录会覆盖容器目录

直接开干

搞定,你需要nginx的任何配置都可以在/usr/local/etc/nginx/ 目录下搞定,不要忘了修改配置后重启nginx生效

docker安装nginx

docker安装nginx

1。docker安装nginx简单实现

//1.下载nginx镜像
docker pull nginx

//2.查看Nginx镜像
docker images | grep nginx

//3.启动nginx容器
docker run --name nginx -d -p 80:80 nginx

//4.测试nginx是否安成功
curl 127.0.0.1
或
浏览器访问:127.0.0.1
显示welcome to nginx!则成功

命令行:

浏览器访问:

查看容器实例的进程信息

//查看容器实例的进程信息
docker top nginx

或

ps -ef | grep nginx

2。Nginx配置文件位置

学习博客

//1.启动Nginx 服务器,并进入模拟终端
docker run -p 8080:80 --name nginx_web -it  nginx /bin/bash

//2.nginx镜像相关文件位置说明
日志文件位置:/var/log/nginx
配置文件位置:
/etc/nginx
资源存放的位置:
/usr/share/nginx/html //3.进入nginx - docker容器 docker ps //查看nginx容器id docker exec -it nginx容器id bash //进入nginx容器 cd /etc/nginx //进入nginx目录 vim nginx.conf //查看nginx配置 //此时会报找不到vim命令。应用下述方法,安装vim
apt-get update //更新索引
apt-get install vim //在容器中安装vim

 

简单小示例:--修改nginx首页,查看是否能够成功运行

//查看我们正在运行的容器
docker ps

//查看已经运行结束的容器
docker ps -a

//重新启动我们刚刚启动过的容器
docker start nginx_web

//进入到我们的容器内部
docker attach nginx_web

//输入内容
echo "<h1>Hello Docker</h1>" > /usr/share/nginx/html/index.html

//让nginx 作为守护进程后台运行
nginx &

//在浏览器再次访问:http://localhost:8080/ 显示Hello Docker即成功

浏览器访问:

若出现访问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 作为守护进程后台运行。

3。Nginx镜像与本机映射

Step1:创建需要映射的文件夹

cd /home

mkdir -p  learn/log  learn/etc  learn/html

Step2:复制nginx容器的配置文件到目录learn/etc

docker cp 65bc23f952db:/etc/nginx/ /home/learn/etc/

Step3:关闭掉nginx_web容器并删除

docker stop 65bc23f952db

docker rm 65bc23f952db

Step4:重新构建nginx服务

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

浏览器访问localhost:8080,无任何内容:解决方案Docker运行nginx

问题原因

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

Step5:stop and rm 容器,重新启动一个Nginx容器

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

 

以上是关于docker 安装 nginx的主要内容,如果未能解决你的问题,请参考以下文章

Docker安装和配置Nginx服务

Docker 命令无法连接到 Docker 守护进程

在 phpmyadmin 上找不到 404 - nginx docker

Docker Nginx SSL证书认证启动教程

docker nginx、rabbitmq、redis部署

NGINX docker-compose - 在上游 nuxt:3000 中找不到主机