docker学习之路-nginx镜像(翻译)
本篇来自https://hub.docker.com/_/nginx/?tab=description
它是docker hub上nginx的官方网站,上面有关于nginx的使用描述等。从这里你可以找到关于docker的nginx镜像,使用
docker pull nginx
来拉取最新版本的nginx docker镜像。
想要在docker下安装nginx,但是按照网上的文章没有成功启用,翻译一下官方的信息,记录一下吧。
快速参考
在哪里寻求帮助:
the Docker Community Forums, the Docker Community Slack, or Stack Overflow受支持的架构: (more info)
amd64
,arm32v6
,arm32v7
,arm64v8
,i386
,ppc64le
,s390x
已发布的镜像制品清单:
repo-info repo'srepos/nginx/
directory (history)
(image metadata, transfer size, etc)镜像的升级历史:
official-images PRs with labellibrary/nginx
official-images repo'slibrary/nginx
file (history)该说明的来源:
docs repo'snginx/
directory (history)受支持的Docker版本:
the latest release (down to 1.6 on a best-effort basis)
nginx是什么
Nginx(发音为“engine-x”)是一个用于HTTP、HTTPS、SMTP、POP3和IMAP协议的开源反向代理服务器,以及负载平衡器、HTTP缓存和web服务器(源服务器)。nginx项目从高度关注高并发性、高性能和低内存使用开始。它是在类似于BSD的第二条款许可下获得许可的,并且它运行在Linux、BSD变体、Mac OS X、Solaris、AIX、HP-UX以及其他*nix版本上。它还为Microsoft Windows提供了概念端口的证明。
如何使用该镜像
托管一些静态的内容
$ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
或者,一个简单的Dockerfile可以用来生成一个包含必要内容的新图像(这是一个比上面绑定挂载干净得多的解决方案):
FROM nginx
COPY static-html-directory /usr/share/nginx/html
将此文件放在与内容目录相同的目录中(“static-html-directory”),运行docker build -t some-content-nginx .,然后启动容器(注意build语句最后面有一个点):
$ docker run --name some-nginx -d some-content-nginx
暴露外部端口
$ docker run --name some-nginx -d -p : some-content-nginx
然后就可以在浏览器中敲击http://localhost:8080
或者 http://host-ip:8080来进行访问。
复杂的配置
$ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx
有关nginx配置语法信息,请参阅the official documentation官方指南(特别是Beginner's Guide开始指引)。
如果你希望调整默认配置,请使用如下内容从运行中的nginx容器中复制它:
#运行一个nginx镜像
$ docker run --name tmp-nginx-container -d nginx
#将容器的/etc/nginx/nginx.conf文件复制到宿主的/host/path/nginx.conf文件中
$ docker cp tmp-nginx-container:/etc/nginx/nginx.conf /host/path/nginx.conf
#删除这个容器(强制)
$ docker rm -f tmp-nginx-container
这也可以用一个简单的Dockerfile (in /host/path/)更干净地完成:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
如果你在Dockerfile中添加了一个自定义的CMD,一定要在CMD中包含-g 'daemon off;';为了使nginx停留在前台,因此Docker可以正确地跟踪过程(否则容器将在启动后立即停止)!
然后使用docker build -t custom-nginx .
来构造镜像,然后像下面这样来运行镜像:
$ docker run --name my-custom-nginx-container -d custom-nginx
在nginx配置中使用环境变量
开箱即用,nginx不支持大多数配置块中的环境变量。但是,如果需要在nginx启动之前动态生成nginx配置,可以使用envsubst作为解决方案。
下面是一个使用docker-composition.yml的例子(有关envsubst命令的说明:https://linux.die.net/man/1/envsubst):
web:
image: nginx
volumes:
- ./mysite.template:/etc/nginx/conf.d/mysite.template
ports:
- "8080:80"
environment:
- NGINX_HOST=foobar.com
- NGINX_PORT=
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
mysite.template模板文件可以包含如下变量引用:
listen ${NGINX_PORT};
只读模式运行nginx
要以只读模式运行nginx,需要将Docker卷挂载到nginx写入信息的每个位置。默认的nginx配置要求对/var/cache和/var/run进行写访问。这可以通过将nginx运行为f轻松实现
$ docker run -d -p : --read-only -v $(pwd)/nginx-cache:/var/cache/nginx -v $(pwd)/nginx-pid:/var/run nginx
如果你有一个更高级的配置,需要nginx写入其他位置,那么只需向这些位置添加更多的卷挂载即可。
调试模式运行nginx
自1.9.8版以来的映像附带了nginx-debug二进制文件,当使用较高的日志级别时,它会生成详细的输出。可以用简单的CMD替换:
$ docker run --name my-nginx -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx nginx-debug -g 'daemon off;'
相似的配置在docker-compose.yml中看起来是这样的:
web:
image: nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
command: [nginx-debug, '-g', 'daemon off;']
使用Amplify监控nginx
Amplify是一个免费的监控工具,可以用来监控基于nginx的微服务架构。Amplify由nginx软件背后的公司开发和维护。
使用Amplify可以跨容器收集和聚合指标,并呈现关键性能数据的一组一致的可视化,比如每秒的活动连接或请求。快速检查性能也很容易
为了使用Amplify,应该在容器中安装一个小型的基于python的代理软件(Amplify agent)。
镜像变体
nginx镜像有许多变体,每个设计用于一个特定的用例。
nginx:<version>
这是事实上的镜像。如果你不确定你的需求是什么,你可能想要使用这个。它被设计用来作为一个丢弃容器(挂载源代码并启动容器来启动应用程序),以及构建其他镜像的基础。
nginx:<version>-alpine
此镜像基于流行的Alpine Linux项目,可在Alpine官方图像中找到。Alpine Linux比大多数发行版基础映像(~5MB)小得多,因此通常会生成更瘦的映像。
当希望最终图像大小尽可能小时,强烈建议使用这种变体。需要注意的主要问题是,它确实使用了musl libc而不是glibc和friends,因此某些软件可能会遇到问题,这取决于它们对libc的需求的深度。然而,大多数软件都没有这个问题,所以这个变体通常是一个非常安全的选择。有关可能出现的问题的更多讨论,以及使用基于alpine镜像的一些利弊比较,请参阅this Hacker News comment thread查看关于这方面的更多的讨论。
为了最小化图像大小,通常不会在基于阿尔卑斯的图像中包含其他相关工具(如git或bash)。使用此映像作为基础,在自己的Dockerfile中添加所需的内容(如果不熟悉如何安装包,请参阅alpine映像描述中的示例)。
docker学习之路-nginx镜像(翻译)的更多相关文章
- Docker学习(二): 镜像的使用与构建
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- docker实战之通过nginx镜像来部署静态页
本章我们主要讲解如何通过docker构建一个nginx容器,这里我们以部署一个静态html为素材来进行演示. 首先我们通过[docker search nginx]命令来查找Docker Hub上的n ...
- docker 学习之路 将docker容器变为镜像并上传
环境 ubunt 16.4 去hub.docker.com上注册一个账号,并在账号中注册一个公有public或者私有仓库private 步骤如下 如上图 点击该处进入创建docker库页面 除了名字之 ...
- Docker学习之搭建nginx环境
前言 很久没写随笔了,今天我们来学习一下如何在docker搭建nginx环境吧! 一:下载镜像,使用docker pull拉取最新的nginx镜像 命令:docker pull nginx 查看镜像: ...
- docker安装并修改Nginx镜像
1.安装nginx镜像,命令:docker pull nginx 2.创建nginx容器,并启动,命令:docker run --name webserver -d -p 192.168.51.227 ...
- docker学习8-搭建nginx环境
前言 使用 docker 搭建 nginx 环境 下载镜像 使用docker pull 拉取最新的 nginx 镜像 [root@yoyo ~]# docker pull nginx Using de ...
- docker学习之路
环境 : ubuntu 16.4 下载docker 首先使用命令行下载 docker wget -qO- https://get.docker.com/ | sh 启动 下载完成之后进行一个启动,但是 ...
- docker学习笔记3:镜像操作(查找和下载)
一.查看本地镜像 只有下载后,镜像才会保存在本地(docker环境所在的主机),通过如下命令可以查看本地已经存在的镜像. 命令:dokcer images 上面命令列出本地所有已经存在的镜像,显示的信 ...
- Docker学习笔记之从镜像仓库获得镜像
0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...
随机推荐
- maven仓库报错 sqljdbc4、ojdbc6、tomcat-jdbc-8.5.14
报错:Cannot resolve com.microsoft.sqlserver:sqljdbc4:4.0 和 Missing artifact com.microsoft.sqlserver: ...
- sql字符转义
/** * sql 内的like % 代表一个或多个字符, _代表一个字符,这都是需要转义的 * @param s * @return */ public static String escapeSp ...
- 一天撸完《 Learning Jupyter 5 2nd Edition》
因为工作需要了解这个应用的大概功能. 网上找不到下载的,CSDN没积分. 最后,在道客上找到了这个PDF.花了一天时间浏览了一下, 只留意了python功能,其它语言略去. widget和jupyte ...
- LOJ 3159: 「NOI2019」弹跳
题目传送门:LOJ #3159. 题意简述: 二维平面上有 \(n\) 个整点,给定每个整点的坐标 \((x_i,y_i)\). 有 \(m\) 种边,第 \(i\) 种边从 \(p_i\) 号点连向 ...
- jquery 统计统计子标签的个数
本文实例讲述了jQuery获得子元素个数的方法.分享给大家供大家参考.具体分析如下://获取id=div1下的子元素的个数$('#div1').children().length;//获取id=div ...
- 项目1:ATM+购物商城项目
项目1:ATM+购物商城 1.项目介绍 项目需求: # 项目需求如下:'''- 额度 15000或自定义- 实现购物商城,买东西加入购物车,调用信用卡接口结账- 可以提现,手续费5%- 支持多账 ...
- btcWallet系列之一-grpc模块
btcwallet对外服务 btcwallet除了像btcd对外提供rpc服务以外,还提供了grpc服务,同时grpc采用的是protobuf来实现. 这方便与不同语言进行交互,降低客户端代码编写量. ...
- 梅尔倒谱系数特征(Mel-frequency cepstral coefficients,MFCC)
引言 感知实验表明,人耳对于声音信号的感知聚焦于某一特定频率区域内,而非在整个频谱包络中. MFCC特征是应用非常广泛的语音特征. 语音的MFCC特征是基于人耳感知实验得到,将人耳当成特定的滤波器,只 ...
- STL——list用法总结
头文件 #include<list> 声明一个int型的list:list<int> a: 1.list的构造函数 list<int>a{1,2,3} list&l ...
- 4.28(TG模拟赛)总结
1.挖地雷 题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N≤20),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径.当地窖及其连接的数据给出之后,某人可以从任 ...