1. 程式人生 > 其它 >Dockerfile構建Nginx映象

Dockerfile構建Nginx映象

Dockerfile構建nginx映象

要求:dockerfile做nginx原始碼映象。並且啟動後容器後可以直接啟動。

首先拖入nginx的tar包到物理機路徑,與Dockerfile檔案放在同一目錄

編寫Dockerfile

[root@localhost ~]# vim Dockerfile 
FROM centos  # 呼叫docker中已下載的centos映象
MAINTAINER FeiYi  # 作者名為FeiYi
# 安裝環境所需包
RUN yum -y install net-tools iproute pcre-devel openssl-devel gcc gcc-c++ make zlib-devel elinks
ADD nginx-1.11.1.tar.gz /usr/src  # 解壓本地host中的nginx包到容器中的/usr/src目錄
ENV NGINX_DIR /usr/src/nginx-1.11.1 # 定義環境變數
WORKDIR $NGINX_DIR  # 進入容器中的解壓目錄
# 編譯安裝
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
# 回到根目錄
WORKDIR /
# 建立程式使用者
RUN useradd nginx
# 優化命令環境
RUN ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
# 監聽埠80
EXPOSE 80
# 後臺啟動nginx服務
CMD ["nginx", "-g", "daemon off;"]

使用Dockerfile構建映象

[root@localhost ~]# docker build -t chai/centos-nginx-start /root/
Successfully built c7efa3d71211
Successfully tagged chai/centos-nginx-start:latest

使用構建完成的映象例項化一個容器,驗證80埠是否啟用

因為我們最後使用CMD去啟動nginx,所以docker run後直接加/bin/bash會替代nginx啟動的執行。所以使用以下方法進入容器

[root@localhost ~]# docker run -itd --name nginxtest chai/centos-nginx-start
da7fe6d1541751dd86078848bf46c532cca9efb40832271bbf02c0eb7a25a1f8
[root@localhost ~]# docker exec -it nginxtest /bin/bash
[root@da7fe6d15417 /]# netstat -anpt | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1/nginx: master pro 

檢視ip並訪問頁面

# ip為172.17.0.3
[root@localhost ~]# curl -I 172.17.0.3
HTTP/1.1 200 OK
Server: nginx/1.11.1
Date: Fri, 27 Mar 2020 07:08:49 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 27 Mar 2020 06:58:35 GMT
Connection: keep-alive
ETag: "5e7da41b-264"
Accept-Ranges: bytes