博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker安装nginx
阅读量:6906 次
发布时间:2019-06-27

本文共 2306 字,大约阅读时间需要 7 分钟。

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容器iddocker 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 "

Hello Docker

" > /usr/share/nginx/html/index.html//让nginx 作为守护进程后台运行nginx &//在浏览器再次访问:http://localhost:8080/ 显示Hello Docker即成功

浏览器访问:

若出现访问localhost:8080 端口,第一次出现了Nginx 的欢迎界面,而第二次就出现了404 提示。

则问题原因:

Docker 执行 docker run 之后,先在当前操作系统的基础上,虚拟化了一个精简版的linux(仅仅包含系统运行的最精简功能),然后加载我们的Nginx镜像。 当Nginx镜像加载到我们的虚拟Linux环境中时,相当于在系统里执行了一个脚本,而这个脚本就是Nginx。由于默认的Nginx 是不作为守护进程运行的。所以当Docker内监听到80端口的请求后,完成之后,就退出了Nginx的进程。 该容器内只有一个进程,并且是非守护的,执行完请求进程就销毁了。那么这个容器也就没有存在的必要了,所以Docker 中这个服务也就停掉了。 这也就是我们执行 docker top 看不到当前运行的容器的原因。作为暂时解决Nginx 只执行一次就退出的问题,我们可以进入交互式终端,执行 nginx & 让nginx 作为守护进程后台运行。

3。Nginx镜像与本机映射

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

cd /homemkdir -p  learn/log  learn/etc  learn/html

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

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

Step3:关闭掉nginx_web容器并删除

docker stop 65bc23f952dbdocker 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,无任何内容:解决方案

问题原因

之前运行的时候,一般都采用交互式:-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

 

转载于:https://www.cnblogs.com/kaixinyufeng/p/9693623.html

你可能感兴趣的文章
【译】Effective TensorFlow Chapter8——控制流操作:条件和循环
查看>>
骗子或许比你更了解网络攻防
查看>>
从贝叶斯定理到概率分布:综述概率论基本定义
查看>>
Satoshis Vision大会:‘乱局’之中的Bitcoin Cash
查看>>
前端中的 IoC 理念
查看>>
Android开源框架源码鉴赏:VirtualAPK
查看>>
在 V8 引擎中设置原型(prototypes)
查看>>
源码|并发一枝花之ReentrantLock与AQS(2):lockInterruptibly
查看>>
Lumen 使用 throttle 限制接口访问频率
查看>>
怎样给文件命名才能显得更加专业
查看>>
python多线程
查看>>
原来云数据库也是有思想的...
查看>>
GitHub 项目徽章的添加和设置
查看>>
写给前端新人:前端开发必会的知识点
查看>>
欢乐的票圈重构之旅——RecyclerView的头尾布局增加
查看>>
makefile-4--变量的定义与使用
查看>>
浅析Vue源码(七)——render到VNode的生成
查看>>
谈谈Shiro的原理及在SSM和SpringBoot两种环境下的使用姿势(下篇)
查看>>
Xcode 创建自定义模板
查看>>
webpack入门学习手记(四)
查看>>