天天看点

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

​​ docker下安装nginx,启动ngixn,修改nginx配置等--超详细

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

1、获取nginx版本

  docker中nginx版本信息:​​https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_updated​​

  

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

2、拉取nginx

  docker pull nginx:1.16.1

  nginx后面的:1.16.1表示具体版本,如果不指定,则默认拉取最新的latest

  显示如下图,则表示安装成功

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

 3、启动nginx

  3.1查看nginx信息

    

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

   3.2 错误启动示范:docker run --name nginx -d nginx -p 80:80

    执行结果如下:

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

     可以看出,docker重新拉区了最新的latest版本的nginx

     

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

      通过docker ps查看发现并没有运行中的容器

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

    通过docker ps -a 查看发现已经创建的容器

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

     由上可见,如果直接-d nginx,会从仓库中拉取最新版本的nginx镜像,并创建容器,但这不是我们想要的,这时候我们需要把latest的nginx删除掉,删除前需要先把容器删除,否则会提示以下内容

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

     (注:操作镜像或者容器,可以只写id的保证不重复的前几位)

  3.3 删除nginx镜像和容器

docker下安装nginx,启动ngixn,修改nginx配置等--超详细
docker下安装nginx,启动ngixn,修改nginx配置等--超详细

   3.4 正确启动nginx

    docker run --name nginx -p 80:80 -d dfcfd8e9a5d3

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

    参数说明: 

      docker run : 启动容器

      --name nginx:指定容器启动后名称,注意是两个-

      -p 80:80:将容器的80端口(冒号后面)映射到宿主机的80端口(冒号前面)上,容器相当于一个简化版的服务器,所以需要映射才能被访问

      -d dfcfd8e9a5d3: 指定后台启动,并指定后台启动的镜像名称(建议指定,也有教程说可以不指定的,没有试验)

  3.5 修改配置文件

    3.5.1 直接修改配置

      进入容器:docker exec -it 3a bash

      

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

       nginx路径在/etc/nginx下

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

      编辑nginx.conf,提示 bash: vim: command not found ,因为nginx这个容器没有安装编辑器,所以先安装 apt-get  update 之后 apt-get install vim

      编辑nginx.conf,退出容器,然后重启系统,则可以查看结果。

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

     3.5.2 挂载文件

      在宿主机上新建文件夹 mkdir nginx,在文件夹下新建logs路径,mkdir logs ,将事先准备好的nginx.conf复制到nginx路径下,结果如下如所示:

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

       挂载文件

       docker run --name nginx2 -p 90:90 -v /mnt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/docker/nginx/logs:/var/log/nginx -d dfcfd8e9a5d3

      参数说明:

        --name nginx2: 启动容器的名称,用于关闭或者启动,docker stop nginx1/docker start nginx1

        -p 90:90 : 将容器的90端口映射到宿主机的90端口上

        -v /mnt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf :将宿主机上的/mnt/docker/nginx/nginx.conf覆盖容器里的/etc/nginx/nginx.conf,这样宿主机上的nginx就会以本地的nginx为配置文件

        -v /mnt/docker/nginx/logs:/var/log/nginx :将容器的日志目录/var/log/nginx修改为宿主机的/mnt/docker/nginx/logs,这样日志就会往宿主机的/mnt/docker/nginx/logs下输出access.log和error.log

  3.6 修改nginx访问宿主机文件

    将文件放到/mnt/docker/test中,将nginx.conf修改root路径为/mnt/docker/test,启动容器

    docker run --name nginx2 -p 90:90 -v /mnt/docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/docker/nginx/logs:/var/log/nginx -v /mnt/docker/test:/mnt/docker/test -d dfcfd8e9a5d3

    这样就相当于将本地的文件映射到了容器里,nginx访问容器上的路径时就访问到了宿主机上。

 4、配置proxy_pass

  先安装必要的工具 

    apt-get update

    apt-get install -y curl telnet

  查看容器ip

  docker inspect 38914185adb1(容器id)

docker下安装nginx,启动ngixn,修改nginx配置等--超详细

继续阅读