docker源码安装nginx容器

nginx源码下载地址

下载包

[root@node0 ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz

关闭防火墙selinux上下文

[root@node0 ~]# systemctl stop  firewalld.service 
[root@node0 ~]# setenforce 0
[root@node0 ~]# getenforce 
Permissive

创建安装目录

[root@node0 ~]# tree nginx-install/
nginx-install/
├── Dockerfile
└── nginx-1.14.2.tar.gz

编辑Dockerfile文件

[root@node0 ~]# vim nginx-install/Dockerfile 

FROM centos:latest  #调用centos最新镜像
LABEL MAINTAINER "FXX Fxx@123.com" #作者信息
ADD ./nginx-1.14.2.tar.gz /usr/local/src #将当前目录下源码包发送至镜像指定目录
ENV PATH /usr/local/nginx/sbin:$PATH #设置环境变量
RUN yum -y install bzip2 make openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel #安装依赖包
RUN useradd -s /sbin/nologin nginx #添加nginx用户
WORKDIR /usr/local/src/nginx-1.14.2 #指定工作目录
RUN /bin/bash  ./configure --prefix=/usr/local/nginx --user=nginx  --group=nginx #编译安装1
RUN make && make install #编译安装2
RUN ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx #设置软连接
EXPOSE 80 #暴露端口以便外部访问
CMD ["/usr/sbin/nginx", "-g" ,"daemon off;"] #启动服务

创建nginx镜像

docker build -t nginx/web:v1.2 nginx-install/ #读取Dockerfile指定标签nginx/web:v1.2 生成镜像

运行容器

[root@node0 ~]# docker run -itd -p 80:80 --name web nginx/web:v1.2 #后台运行容器web绑定宿主机80端口和容器80端口 调用镜像

进入查看端口

[root@node0 ~]# docker exec -it web /bin/bash #指定交互模式执行/bin/bash命令进入容器查看端口
[root@6c7909e28e3b nginx-1.14.2]# ss -antl
State              Recv-Q             Send-Q                          Local Address:Port                           Peer Address:Port             
LISTEN             0                  128                                   0.0.0.0:80                                  0.0.0.0:*        

外部访问验证

原文地址:https://www.cnblogs.com/fangxinxin/p/14483688.html