【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

时间:2022-10-14 19:34:55

首先,系统(3.8以上内核的linux)中安装好 Docker 这个运用程序。由于网络原因,我们下载一个Docker官方的镜像需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务提供了官方的镜像站点,从而加速官方镜像的下载速度。

[ 不会的可以参考我之前的文章:Docker <一> 架构简介与Linux上安装 https://my.oschina.net/u/3375733/blog/1582281]。

一、Docker pull 安装 Nginx

1、查看docker仓库中的 nginx 命令


# 使用 docker search 命令搜索存放在 Docker Hub 中的镜像
docker search nginx

以看到下图所示的信息:

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

2、为选定需要pull到系统中的官方 Nginx 镜像

# docker pull nginx -------- nginx 为选定需要pull到系统中的官方 nginx 镜像

docker pull nginx

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

整个pull过程需要花费一些时间,耐心等待。

若见下图证明pull成功。

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

二、查看并启动Docker 镜像

1、列出已下载的镜像

# 使用 docker images 命令即可列出已下载的镜像

docker images

执行命令后,可看到类似于如下的表格:

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

2、列出运行中的容器


# 使用 docker ps 命令即可列出运行中的容器
docker ps # 使用 docker ps -a 命令即可列出所有(包括已停止的)的容器
docker ps -a

执行命令后,可看到类似于如下的表格:

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

可以发现,目前没有运行的 nginx 容器。故,接下来我们新建并启动一个 nginx 容器。

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

三、启动容器,部署nginx并修改配置文件

1、启动跑个静态网页,测试下 nginx 容器

# 启动一个名为nginx81(名字自己根据需求起名字,一般见名知意即可) 的容器
docker run --name nginx81 -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html nginx # 默认容器对这个目录有可读写权限,可以通过指定ro,将权限改为只读(readonly)
# docker run --name my-nginx -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html:ro -d nginx

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

访问 http://Docker宿主机IP:指定的Docker宿主机端口 ,可以访问说明

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

2、部署nginx 项目并修改配置文件

一般情况下docker启动时进行配置,只要把配置文件的目录挂载出来就可以,但是nginx却是先加载一个主配置文件nginx.conf,在nginx.conf里再加载conf.d目录下的子配置文件(一般最少一个default.conf文件)。

# 普通的挂载方式
docker run --name mynginx2 --mount source=/var/www,target==/usr/share/nginx/html,readonly \
--mount source=/var/nginx/conf,target=/etc/nginx/conf,readonly -p 80:80 -d nginx

docker 启动 nginx 加载自定义配置:


# 1. 第一个“-v”,是项目位置,把项目放到挂载到的目录下即可
# 2. 第二个“-v”,是挂载的主配置文件"nginx.conf",注意"nginx.conf"文件内有一行
# "include /etc/nginx/conf.d/*.conf;" ,
# 这个include指向了子配置文件的路径,此处注意include后所跟的路径一定不能出错
# 3. 第三个“-v”,把docker内子配置文件的路径也挂载了出来,注意要与 “2.” 中include指向路径一致
# 4. nginx.conf是挂载了一个文件(docker是不推荐这样用的),conf.d挂载的是一个目录 docker run \
--name nginx81 \
-d -p 81:80 \
-v /usr/docker/nginx81/html:/usr/share/nginx/html \
-v /etc/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /etc/docker/nginx81/conf.d:/etc/nginx/conf.d \
nginx

准备挂载的 nginx.conf :


user nginx;
worker_processes 1; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;
}

准备挂载的 default.conf :

server {
listen 80;
server_name localhost; #charset koi8-r;
#access_log /var/log/nginx/host.access.log main; location / {
root /usr/share/nginx/html;
index index.html index.htm;
} location /api{
proxy_pass http://192.168.1.1:9999/api;
# access_log "logs/test.log";
} }

上述的依然不够灵活,可以直接进入容器操作:

1) 启动

# 启动一个名 nginx81 的 nginx 容器
docker run --name nginx81 -d -p 81:80 -v \
/usr/docker/nginx81/html/:/usr/share/nginx/html:ro -d nginx
# 添加日志记录启动
docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html/:/usr/share/nginx/html:ro \
-v /logs:/var/log/nginx -d nginx

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf

2)拷贝容器内的配置文件到本地,进行个性化配置等操作


docker cp nginx:/etc/nginx/nginx.conf /usr/docker/nginx81/nginx.conf

3)重新指定配置文件启动


docker run --name nginx81 -d -p 81:80 -v /usr/docker/nginx81/html:/usr/share/nginx/html:ro
-v $PWD/logs:/var/log/nginx -v /usr/docker/nginx81/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx

4)进入容器


sudo docker exec -it d3a86da6fad1 /bin/bash # 退出容器:Ctrl+P+Q

四、通过 Dockerfile 构建 Nginx

相关链接

· docker 官网 Nginx 安装文档: https://docs.docker.com/samples/library/nginx/#hosting-some-simple-static-content

· Nginx 官网文档:https://www.nginx.com/blog/deploying-nginx-nginx-plus-docker/

本文为博主原创文章,转载请注明出处!

https://my.oschina.net/u/3375733/blog/

【转载】Docker 安装 Nginx 并个性化挂载配置文件 nginx.conf的更多相关文章

  1. docker安装MySQL8,目录挂载、配置用户名密码、忽略表名大小写、连接数、特殊字符、时区

    原文:docker安装MySQL8,目录挂载.配置用户名密码.忽略表名大小写.连接数.特殊字符.时区 一.环境配置 1.系统:centos7.3 2.docker版本:Docker version 1 ...

  2. docker安装mysql5&period;7 数据挂载

    docker安装mysql5.7,并数据卷挂载到主机 # docker 中下载 mysql docker pull mysql:5.7 #启动 docker run --name mysql3306 ...

  3. docker安装Mysql8&period;0并挂载外部配置和数据

    环境 CentOS Linux release 7.7.1908 (Core) 拉取Mysql8.0 镜像 docker pull mysql:8.0.18 创建挂载目录 mkdir -p /home ...

  4. centos7下使用docker安装nginx

    需要环境docker,此处不做介绍. 1. docker拉取官方nginx镜像 docker pull nginx 2. 等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 ng ...

  5. Docker安装Mysql和Nginx

    1. 序言 将应用容器化更方便于管理,昨天辛辛苦苦安装在宿主机上的,今天狠心重置服务器,学下docker练练手. 2. Get start 2.1 安装Docker 公司的云用的是ubuntu,我自己 ...

  6. Nginx安装,目录结构与配置文件详解

    1.Nginx简介 Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设 ...

  7. docker安装软件

    镜像相关命令 1.搜索镜像 # docker search java 可使用 docker search命令搜索存放在 Docker Hub(这是docker官方提供的存放所有docker镜像软件的地 ...

  8. docker安装redis并允许外网访问

    拉取redis镜像 docker pull redis:3.2 本地新建redis配置文件 redis.conf ,写入以下内容 #允许外网访问bind 0.0.0.0 daemonize NO pr ...

  9. docker安装postgresql

    1.在linux执行以下代码: docker run -p : -v /home/docker/postgresql/data:/var/lib/postgresql/data -e POSTGRES ...

随机推荐

  1. 【代码笔记】iOS-利用图片序列创建动态图片效果

    一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...

  2. Solr&lpar;5&period;1&period;0&rpar; 与Tomcat 从0开始安装与配置

    1.什么是Solr? Solr是一个基于Lucene的Java搜索引擎服务器.Solr 提供了层面搜索.命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式).它易于安装和配置 ...

  3. 接口中的成员变量必须是static

    首先要弄清接口的含义. 接口就是提供一种统一的'协议’, 而接口中的属性也属于'协议’中的成员.它们是公共的,静态的,最终的常量.相当于全局常量. 在interface里面的变量都是public st ...

  4. ScalaPB(0): 找寻合适的内部系统微服务集成工具

    前一段时间我们探讨了SDP的一个基于集群的综合数据平台解决方案,由多种数据库组成,包括:JDBC, Cassandra 及MongoDB.其中Cassandra和MongoDB属于分布式数据库,可以在 ...

  5. 源码的excel导入导出

    获取所有数据,将数据进行有序切割,在进行遍历,将其导出. //设置header header("content-type:text/html;charset=utf-8"); // ...

  6. DNS搜索

    dig(Domain Information Groper) dig @dnsserver name querytype 如果你设置的dnsserver是一个域名,那么dig会首先通过默认的上连DNS ...

  7. &lbrack;NOSQL&rsqb; Redis介绍

    Redis概述 Redis是Salvatore Sanfilippo在2009年为其初创公司LLOOGG开发的,眼下仍是独立项目.但VMWare赞劣了项目(作者是其雇员).它採用C语言实现.因此性能非 ...

  8. 深度学习(一) BP神经网络

    怎样理解非线性变换和多层网络后的线性可分,神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换 线性可分: 一维情景:以分类为例,当要分类正数.负数.零,三类的时候,一维空间的直线可以找 ...

  9. Mxgraph使用总结一

    一.Mxgraph介绍: mxGraph 是一个 JS 绘图组件适用于需要在网页中设计/编辑 Workflow/BPM流程图.图表.网络图和普通图形的 Web 应用程序.mxgraph 下载包中包括j ...

  10. jmeter 多机负载压测与服务器性能监测

    环境: jmeter: apache-jmeter-3.3 jdk: 负载生成: 被测机: 一. 多机负载压测: 概述: 1.修改jmeter.properties配置文件 remote_hosts= ...