Docker安装最新稳定版Nginx(分析版本选择问题和分享踩坑过程) |
您所在的位置:网站首页 › win7docker › Docker安装最新稳定版Nginx(分析版本选择问题和分享踩坑过程) |
一、前言
Nginx官方安装包下载地址: http://nginx.org/en/download.html Docker Hub官方网址: https://hub.docker.com/ 如果需要了解Centos7下Docker的安装部署,可参考教程【最新Docker在Centos7下安装部署(参考官方教程文档)】。 拉取Nginx Docker版镜像的最简单的命令是:docker pull nginx ,麻烦一点写法是 docker pull nginx:1.22.1 ,后面带一个版本号,拉取指定版本的镜像。如果看一些博文,教程里面就是这么写的,难道有错?没错,这样写是可以的,但是,那些博主可不会告知你们,如何区分版本,Docker Hub中Nginx是有很多版本类型的,他们也未必研究过Docker中Nginx各版本的区别,只是照搬官方的写法而已! 本教程除了详细指导在Docker中安装最新稳定版Nginx过程,还分析一些版本选择问题,网上基本很少或没有相关博文讨论过Docker中Nginx版本的选择问题。最后还有踩坑过程也分享出来。如果各位读者有更好的见解,可以关注 @大白有点菜 或在评论中交流,互相学习进步。 本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢! 二、版本选择问题分析1、先来分析Docker中Nginx各版本选择问题。读者如果觉得这部分没意思,可跳过,直接看后面的安装步骤。【 跳转到安装部署部分】 (1)浏览Docker Hub网址,即Docker的仓库,搜索关键字 nginx 查找Nginx的版本(和官方Nginx的版本是同步的)。 (3)怎么这么多版本啊,有纯数字的,有纯英文单词的,有几个单词拼接一起的,也有数字拼单词的,看得眼花缭乱,如何选择?先关注两个关键词语:mainline 和 stable 。 mainline:主线版,即开发版,学习环境可以使用,生产环境建议不要使用stable:稳定版,学习环境和生产环境都可使用(4)切换到“Tags”标签,看看Nginx的具体版本,按最新版本排序。 【百度百科解释 Alpine Linux】 猜测是正确的吗?查阅资料可知,perl模块是默认安装在Centos系统上的,如下,版本为 v5.16.3 。 (1)在Docker Hub官网对应的Nginx页面,有个描述是关于 nginx:-perl 、 nginx:-alpine-perl 、 nginx:-alpine 的,截图如下,顺便附上谷歌翻译后的截图: 2)查看下载的镜像。 docker images
查看容器运行情况: docker ps进入到容器中(/bin/bash): docker exec -it 732 /bin/bash查看 perl 模块版本: perl -v命令 exit 退出容器: exit
查看容器运行情况: docker ps进入到容器中(/bin/bash): docker exec -it 840 /bin/bash查看 perl 模块版本: perl -v命令 exit 退出容器: exit
查看容器运行情况: docker ps进入到容器中(/bin/sh),此处和 stable、stable-perl 进入容器的方式不一样: docker exec -it 907 /bin/sh查看 perl 模块版本: perl -v命令 exit 退出容器: exit
查看容器运行情况: docker ps进入到容器中(/bin/sh),此处和 stable、stable-perl 进入容器的方式不一样: docker exec -it 0ec /bin/sh查看 perl 模块版本: perl -v命令 exit 退出容器: exit
总结如下: (1)笔者专业技能有限,无法看出 stable 版 和 stable-perl 版有什么区别,官方说好的 stable 版从 v1.12.0 开始,在默认镜像中移除了 perl 模块,怎么 stable 版的还存在?是笔者误读了官方的说法吗? (2)stable-alpine 版确实移除了 perl 模块。 (3)stable-alpine-perl 版存在 perl 模块,且版本很新。 (4)stable-alpine 版和 stable-alpine-perl 版都可以运行在Centos7上,常不常用,笔者阅历有限,无法给出专业说法。 4、版本选择(求稳不求新)。 无论是生产环境,还是工作、学习环境,都尽量使用稳定版去开发!Java开发中使用很多中间件,不求新(最新版),只求稳(稳定版),不然容易出现问题,排查困难。 当然,旧版本也是存在问题的,有些bug会很致命,尽量跨小版本升级,主要是修复bug。跨大版本升级可能导致各种问题,不建议这么做。什么是大小版本?例如,MySQL5.7有很多版本MySQL5.7.x,属于跨小版本;从MySQL5升级到MySQL8,就是跨大版本。 可以去Nginx官网查看最新的稳定版本(Stable version),使用 docker pull nginx:1.22.1 命令拉取最新稳定版镜像,也可以使用 docker pull nginx:stable 拉取,不用考虑输入版本号。 (1)Docker Hub上,Nginx的版本名称这么多,难道都是不同的版本?其实不是,官方页面展示出一些规律,同一个镜像ID的,都放在同一行,就像 1.23.2, mainline, 1, 1.23, latest ,看起来名称都不一样,其实镜像就是同一个的。不信?那就验证呗!
前面的版本选择问题分析好无聊啊,还是直接安装部署更过瘾。 1、创建三个目录,用作容器的卷(Volume),这步骤不能少。什么是卷?后面会说明。 mkdir -p /mydata/nginx/conf mkdir -p /mydata/nginx/log mkdir -p /mydata/nginx/html
(1)创建一个简单的容器运行,映射端口为 8099 ,看看有没有报错或者网络问题。 docker run --name nginx -p 8099:80 -d nginx:stable
3、前面操作中,运行一个配置有卷(Volume)的容器为什么会访问不到页面呢,而运行简单的容器却可以访问呢? (1)什么是卷(Volume)?命令 docker -v 中的“-v”就是这个卷,“-v”只是“--volume”的简写。 Docker官方文档解释卷的含义:https://docs.docker.com/storage/volumes/ 来几张原文截图,并附上谷歌翻译后的截图: (1)创建一个更简单的容器,不用映射端口,因为后面还要删除该容器,只是临时有用。 docker run --name nginx -d nginx:stable
(3)从容器中复制 /usr/share/nginx/html 目录所有文件到 /mydata/nginx 目录下,复制配置文件 /etc/nginx/nginx.conf 到 /mydata/nginx/conf 目录下,复制 /etc/nginx/conf.d 目录所有文件到 /mydata/nginx/conf 目录下。 docker cp nginx:/usr/share/nginx/html /mydata/nginx docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf (4)删除那个简单的容器。先停止,后删除。想要优雅地删除容器,可参考教程【如何优雅地删除Docker镜像和容器(超详细)】。
(1)启动容器 docker start nginx或 docker start 容器ID(2)停止容器 docker stop nginx或 docker stop 容器ID(3)删除容器 docker rm nginx或 docker rm 容器ID(4)重新启动容器 docker restart nginx或 docker restart 容器ID(5)查看容器运行状态 查看所有容器的运行状态,包括运行的和停止的: docker ps -a查看所有运行中的容器的状态,不包括停止的: docker ps
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |