zoukankan      html  css  js  c++  java
  • 宿主CentOS7环境下docker中nginx的安装

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

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

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

    (注意:该步骤命令有问题,详情见步骤4)
    注意:
    后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这样当你使用docker ps 查看启动的容器时,就会发现你刚刚创建的那个容器并不在已启动的容器队列中。这个/bin/bash就表示启动容器后启动bash,主要用在交互式进程中,守护式进程可以不用添加此项
    3. 测试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

    4. 再次地址栏输入http://192.168.37.131,成功,但是怎么在运行容器的时候就启动nginx呢?

    原因分析:在步骤2,创建容器命令使用错误,如

    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -d: 后台运行容器,并返回容器ID,即守护式容器。

    因此步骤2应修改为:

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

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

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

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    基于分布式锁解决定时任务重复问题
    基于Redis的Setnx实现分布式锁
    基于数据库悲观锁的分布式锁
    使用锁解决电商中的超卖
  • 原文地址:https://www.cnblogs.com/damoblog/p/12789963.html
Copyright © 2011-2022 走看看