Docker挂载资料卷部署Nginx

简介

上一篇总结了下docker内mysql的资料卷设置方式,走b/s方向怎么能忘记nginx呢?今天来补上这一篇。

Nginx资料卷

nginx的作用有很多,比如正向代理、反向代理、负载均衡、透明代理等,一般情况下使用较多的是反向代理和负载均衡。这些操作只需要修改配置文件就可以完成,所以我们只需要将配置文件同步在本地即可。nginx配置文件的路径是 etc/nginx/nginx.conf ,首先创建对应目录和文件:

nginx1目录下的nginx.conf也要创建,内容空着就行。接下来查看镜像是否正常:

如果还没有下载镜像,使用以下命令拉取镜像(默认最新版):

docker pull nginx

接下来运行容器:

docker run -itd -p 80:80 --name nginx001 -v /docker/nginx1/nginx.conf:/etc/nginx/nginx.conf nginx

解释一下:

  • -itd:开启交互模式,模拟终端,后台运行
  • -p 80:80:对应端口映射到宿主机
  • --name nginx001:自定义容器名称
  • -v /docker/nginx1/nginx.conf:/etc/nginx/nginx.conf:将宿主机的对应文件映射到nginx的配置文件

nginx:运行的镜像名称

运行以上命令以后,会返回随机字符串代表容器创建成功:

查看运行中的容器:

没有看到nginx001,肯定是运行的时候出错了,我们来看一下错误信息:

大概意思是配置文件中没有找到events节点。因为我们创建的文件内容是空的,所以启动容器的时候直接把对应目录下的nginx.conf给映射到nginx001里面的nginx.conf了,空配置的nginx当然无法运行。

现在vi刚才本地创建好的nginx.conf,开始配置:

之前我在docker上部署了一个简易的 .net core 程序,占用本地端口 1500 ,现在我把程序通过nginx反向代理到一个指定域名,并通过80端口访问。配置文件写好以后,重启容器nginx001:

现在nginx001就成功启动了,我们访问一下刚才指定的域名:

nginx的配置已经生效。

最后我们来尝试一下docker重启会不会导致配置初始化,重启docker:

启动两个容器:

访问页面:

数据库并没有因为docker重启而被初始化,证明资料卷已经生效。以后再也不怕docker宕机而数据丢失了。

补充

nginx配置文件中的 proxy_pass 属性,非docker环境配置的时候,localhost或127.0.0.1是可以正常生效的,但是在docker下nginx容器配置localhost或127.0.0.1时,有一个小坑导致无法完成实际的反向代理。因为容器运行时,docker会给它分配单独的ip和端口,然后把docker占用的ip映射到容器ip(比如docker下mysql启动后,使用localhost可以登陆客户端)。但nginx启动时,会先读取配置文件,配置正确的话才会运行,所以容器运行成功后,docker才把本地ip映射进去。如果配置文件写的是localhost或127.0.0.1,那么只有直接访问容器的ip才会触发反向代理。所以如果在服务器使用docker配置nginx,直接输入服务器ip即可完成配置。

到此这篇关于Docker挂载资料卷部署Nginx的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Docker部署nginx实现过程图文详解

    1.下载nginx [root@localhost my.Shells]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/redis latest 1e70071f4af4 6 weeks ago 106.7 MB [root@localhost my.Shells]# docker pull nginx //下载nginx Using default tag: latest Trying to pull reposit

  • docker部署nginx并且挂载文件夹和文件操作

    这段时间在研究docker,在部署nginx时遇到了坑,最主要的问题是在挂载文件和文件夹的时候不知道怎么挂载,经过反复实验以及查看网上的教程,先总结如下: 1首先pull下载nginx镜像包 docker pull nginx 2(关键)查看nginx镜像里面配置文件.日志等文件的具体位置,只有找到镜像配置文件的路径,后面挂载文件和文件夹才能覆盖这些路径 以终端的方式打开镜像容器 [root@docker2 nginx]# docker run -i -t nginx /bin/bash roo

  • CentOS7 Docker Nginx部署及运行详解

    网上找了一些资料部署,出现不一样的问题,现在总结一下自己的部署流程. 1.资源准备 Dockerfile文件 # "ported" by Adam Miller <maxamillion@fedoraproject.org> from # https://github.com/fedora-cloud/Fedora-Dockerfiles # # Originally written for Fedora-Dockerfiles by # scollier <scol

  • Docker Nginx容器制作部署实现方法

    快速开始 1.查找 Docker Hub 上的 nginx 镜像 docker search nginx 2.拉取官方的Nginx镜像 docker pull nginx 3.在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像 docker images nginx REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 4bb46517cac3 4 weeks ago 133MB 4.以下命令使用 NGINX 容器内的默认的配置来启动

  • Docker容器简单部署nginx过程解析

    1.容器中部署nginx服务 centos:7镜像运行一个容器,并且,在这个容器内部署Nginx服务. [root@Docker ~]# docker pull centos:7 //下载镜像 [root@Docker ~]# docker run -itd --name webapp --restart=always centos:7 //运行一个容器名为:webapp [root@Docker ~]# docker cp nginx-1.16.0.tar.gz webapp:/root //

  • Docker新手实践及部署NGINX的步骤详解

    docker是什么 官方文档入口 在知乎上看到关于docker的思想讲的挺好的:如何通俗解释Docker是什么?.这里直接引用了. Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响.那么我就不需要专门运送水果的船和专门运送化学品的船了.只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走. docker就是类似的理念.现在都流行云计算了,云计算就好比大货轮.docker

  • 基于Docker、Nginx和Jenkins实现前端自动化部署

    目录 前期准备 部署目标 Dcoker环境的搭建 连接云服务器 安装Docker环境 Docker安装Docker Compose Docker安装Nginx和Jenkins服务 安装Nginx和Jenkins Nginx和Jenkins目录编写 docker-compose.yml文件配置 nginx.conf文件配置 安装Jenkins插件 关联Jenkins和GitLab 生成密钥 新建项目 源码管理 构建触发器 结束语 前期准备 基于CentOS 7系统云服务器一台. 基于Vue-CLI

  • Docker部署Nginx并配置反向代理

    准备工作 在docker内部署任何应用,都需要先下载对应的镜像:下载镜像之前,需要先搜索镜像来确认该镜像是否存在: docker search nginx 从列表可以看到,docker已经有了nginx的镜像,名称是“nginx”,接下来下载镜像: docker pull nginx 下载完成后,查看一下本地镜像: 如果在列表中看到nginx,镜像下载就已经成功了. 容器设置 在docker中,真正运行的是容器,镜像在我理解中是一种环境.我们在指定的镜像中运行某个容器,然后编辑和配置这个容器,从

  • Docker挂载资料卷部署Nginx

    简介 上一篇总结了下docker内mysql的资料卷设置方式,走b/s方向怎么能忘记nginx呢?今天来补上这一篇. Nginx资料卷 nginx的作用有很多,比如正向代理.反向代理.负载均衡.透明代理等,一般情况下使用较多的是反向代理和负载均衡.这些操作只需要修改配置文件就可以完成,所以我们只需要将配置文件同步在本地即可.nginx配置文件的路径是 etc/nginx/nginx.conf ,首先创建对应目录和文件: nginx1目录下的nginx.conf也要创建,内容空着就行.接下来查看镜

  • Docker挂载资料卷保存MySQL数据

    简介 docker是运行在虚拟环境中的,这样会有一个问题,那就是储存在docker内的数据会随着docker的重启.宕机而丢失,从而造成不可估量的损失. 所以docker提供了-v指令,可以将容器内的目录以及文件映射到外部文件系统,容器启动时会读取外部文件系统,从而保证数据的完整性. mysql作为最流行的数据库之一,使用范围十分广泛,如果部署在docker却无法持久化怎么办呢?今天就来说一下mysql资料卷. MySql资料卷 mysql需要保存的只有两种文件:数据和配置文件.mysql的默认

  • 详解Docker数据管理(数据卷&数据卷容器)

    生产环境中使用Docker的过程中,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 1.数据卷(Data Volumes):容器内数据直接映射到本地主机环境:如何在容器内创建数据卷,并且把本地的目录或文件挂载到容器内的数据卷中. 2.数据卷容器(Data Volume Containers):使用特定容器维护数据卷.如何使用数据卷容器在容器和主机.容器和容器之间共享数据,并实现数据的备份和恢复. 数据卷 数据卷是一个可

  • Docker部署nginx并修改配置文件的实现方法

    docker 部署个nginx,简直太简单了好吧 直接一行命令搞定: docker run \ --name nginx-health-web-pc \ -d -p 6800:80 \ -v /usr/docker/nginx/html:/usr/share/nginx/html \ nginx 运行启动不亦乐乎~~~~~这时候忽然前端过来说:"你的nginx里得加一个配置",顺带还告诉你:"某某某以前就是这样配的", 此时好胜的你当然不能拒绝,但是真正配置起来还是

  • Docker 安装 PHP并与Nginx的部署实例讲解

    安装 PHP 镜像 查找 Docker Hub 上的 php 镜像: 此外,我们还可以用 docker search php 命令来查看可用版本: 这里我们拉取官方的镜像,标签为7.3.24-fpm-stretch docker pull php:7.3.24-fpm-stretch 等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为7.3.24-fpm-stretch的镜像. Nginx + PHP 部署 Nginx 部署可以查看本人博客中:Docker 安装

  • docker容器源码部署httpd用存储卷部署网站(推荐)

    目录 docker容器源码部署httpd,用存储卷部署网站 创建一个httpd镜像 部署nfs 挂载 创建容器并映射 访问测试 docker容器源码部署httpd,用存储卷部署网站 创建一个httpd镜像 // 创建一个httpd容器 [root@localhost ~]# docker run -tid --name httpd centos 2d693e16f4f3734b127cbae90d189c1b4e78619a54ceec912a82d96cf4f1c345 [root@local

  • Docker上部署Nginx的方法步骤

    目录 1.从 docker 下载 Nginx 镜像 2.创建挂载目录 3.为了保证文件的正确性,建议先进入容器把对应的文件给复制出来 4.接下来修改下 default.conf 文件就好了 5.接下来就可以启动容器了 6.不停止 nginx 更新配置文件 1.从 docker 下载 Nginx 镜像 docker pull nginx 2.创建挂载目录 之后的文件就放这里面,对 docker 里 Nginx 对应的目录进行映射,就不用改文件进到容器里了 mkdir -p /data/nginx/

随机推荐