宿主CentOS7环境下docker中nginx的安装

    最近在docker中安装nginx时一直测试不成功,起初以为是firewalld的原因,但是端口也开放了,却还是连接不成功

最后找到了原因,是docker启动后nginx却没有启动,都是泪啊......。

1.查询需要的镜像

docker search nginx

2. 拉取标签为latest的Nginx镜像
docker pull nginx:latest
3. 创建Nginx容器
docker run -di --name=docker_nginx -p 80:80 nginx/bin/bash

(注意:该步骤命令有问题,详情见最后关于步骤2的原因分析
注意:
后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这样当你使用docker ps 查看启动的容器时,就会发现你刚刚创建的那个容器并不在已启动的容器队列中。这个/bin/bash就表示启动容器后启动bash,主要用在交互式进程中,守护式进程可以不用添加此项
4. 测试Nginx
浏览器地址栏输入: http://192.168.37.131
失败,未出现Welcome to nginx!
中间过程没有出现任何错误,这时可以从以下方面考虑:
(1)防火墙,可以参考https://www.cnblogs.com/damoblog/p/11082747.html
(2)docker容器中nginx是否启动,启动方法为:
a. 登录或者进入容器
docker exec -it container_name/container_id /bin/bash或者/bin/sh
默认情况下软件安装的目录为:/ect目录下
b. 启动docker中nginx服务,找到目录:/etc/init.d
root@123:/etc/init.d#./nginx start
查看服务是否启动成功,docker容器中ps命令行并没有,需要自己根据实际情况进行安装
ps -aux|grep nginx

c. 再次地址栏输入http://192.168.37.131,成功

最后:关于步骤2的原因分析:(怎么在运行容器的时候就启动nginx呢?)

其实在步骤2,创建容器命令使用错误,如

-i:以交互模式运行容器,通常与 -t 同时使用;

-t:分配一个伪终端;
-d:后台运行容器,并返回容器ID,即守护式容器。

因此步骤2应修改为:

docker run -d --name=docker_nginx -p 80:80 nginx:latest

即,使用docker镜像nginx:latest以后台模式启动一个容器(或者说创建一个守护式容器),并将容器命名为docker_nginx 。

这样就不用再单独的去启动nginx了。

docker中nginx相关配置文件位置:

注意:首先要进入容器,即容器启动后,通过docker exec -it docker_nginx /bin/bash 进入容器

nginx启动文件路径:

配置文件路径:

 

posted @ 2020-04-27 20:49  达摩院的BLOG  阅读(483)  评论(0编辑  收藏  举报