在CentOS7.4下Docker安装nginx

时间:2022-08-27 21:48:06
在https://hub.docker.com官网搜索nginx镜像说明文档
在https://docs.docker-cn.com官网搜索nginx使用文档


手动安装nginx(使用putty工具连接虚拟机的CentOS7.4)
首先确保docker服务已启动,如没有,则输入systemctlstart docker启动服务。
输入docker pull nginx:1.13下载镜像。
输入docker images查看所有镜像。
输入mkdir -p /mynginx/logs /mynginx/conf.d创建两个目录,logs目录映射为nginx容器的日志目录,conf目录中的配置文件映射为nignx容器的配置文件目上录。
输入cd /mynginx进入此目录。
输入vim nginx.conf创建编辑主配置文件,
按i进入编辑模式,写入以下代码:

##############################Nginx主配置文件
#设置运行的用户
user root;

#设置nginx要开启的子进程数量,一般设置为和CPU数量相等值
work_processes 1;

#设置全局错误日志位置和级别
error_log /var/log/nignx/error.log error;

#设置进程id的存放位置
pid /var/run/nigx/pid;

events{
  #设置线程轮询的方案,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
  use epoll;

  #设置单个work_processes的最大的并发连接数
  worker_connections 1024;
}

http{
  #设置mime类型,类型由mime.type文件定义
  include mime.types;
  default_type  application/octet-stream;

  #设置一个名为main的日志格式
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

  #设置访问日志的位置,使用main的格式
  access_log  /var/log/nginx/access.log  main;

  #设置连接超时时间
  keepalive_timeout  65;

  #设置gzip功能为开启
  gzip on;
  gzip_disable "msie6";

  #设置请求缓冲
  client_header_buffer_size    128k;
  large_client_header_buffers  4 128k;

  #设置nginx是否使用sendfile函数(普通应用设on,而下载等磁盘重负载应用为设off)
  sendfile on;

  #设置当前配置文件包含另一个子配置文件
  include /etc/nginx/conf.d/*.conf;
}
按Esc退出编辑模式。
输入:wq保存退出。
输入cat nginx.conf再查看一下。
输入cd conf.d进入目录。
输入vim nginxchild.conf创建名为nginxchild.conf子配置文件。

按i进入编辑模式,输入以下代码:

#虚拟主机配置
server{
  listen 80;

  #反向代理
  location /{
    proxy_pass http://172.21.0.3;
    proxy_http_version 1.1;
   }
}
按Esc退出编辑模式。
输入:wq保存退出。
我自己之前在虚拟机上已部署了一个WebMVC容器,然后通过docker network ls查询所有docker网络和docker network inspect 某个网络名这两个命令得知了WebMVC程序的IP地址为172.21.0.3。

输入(注意\前有一个空格,\后没有空格)

docker run -d --name nginx01 \
--mount type=bind,src=/mynginx/nginx.conf,dst=/etc/nginx/nginx.conf:ro \
--mount type=bind,src=/mynginx/conf.d,dst=/etc/nginx/conf.d \
--mount type=bind,src=/mynginx/logs,dst=/var/log/nginx \
-p 80:80 nginx:1.13
(其它说明:默认容器对目录有可读写权限,可以通过指定ro,将权限改为只读,ro应该是read only)
启动一个nginx容器。
-p表示将服务器端口左80映射到容器内端口右80,
-d表示在后台运行,
--name表示启动后的容器名称,
第一个mount表示将本地自定义目录的自写义主配置文件映射为容器的主配置文件,
第二个mount表示将本地自定义的子配置文件目录映射为容器的子配置文件目录,
第三个mount表示将本地自定义的日志目录映射为容器的日志目录。


注意:如果nginx容器和webmvc容器不在同一docker网络中,可通过docker network connect 网络名称 容器名称,将容器加入到网络里来。加入后可通过docker network inspect 网络名称 来查看此网络有哪些容器在里面。
输入docker ps查看正在运行的所有容器。
输入ifconfig查询服务器IP。(注意别看错了)
在我的Win10中打开浏览器,输入IP就可看到WebMVC的页面了。