1. 程式人生 > >通過Dockerfile建立nginx服務的Centos映象

通過Dockerfile建立nginx服務的Centos映象

通過Dockerfile生成映象

在宿主機上準備的檔案清單:

Dockerfile

#sshapache的角本

run.sh

以上檔案都放到/root/nginx_centos目錄下

mkdir -p /root/nginx_centos

cd/root/nginx_centos

一、準備run.sh檔案在/root/nginx_centos目錄新建run.sh

vim run.sh

#!/bin/bash

/usr/sbin/sshd &

/usr/local/nginx/sbin/nginx

二、準備Dockerfile在/root/nginx_centos目錄新建Dockerfile

cat Dockerfile

#新生成的映象是基於sshd:dockerfile映象
FROM sshd-centos
MAINTAINER by cmzsteven
WORKDIR /usr/local/src
#安裝wget
RUN yum install -y  wget
#下載並解壓原始碼包
RUN wget http://nginx.org/download/nginx-1.12.1.tar.gz
RUN tar zxvf nginx-1.12.1.tar.gz
WORKDIR nginx-1.12.1
#編譯安裝nginx
RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl*
RUN useradd -M -u 40 -s /sbin/nologin  nginx
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module --with-http_realip_module
RUN make
RUN make install
#啟動Nginx服務
RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
RUN /usr/local/nginx/sbin/nginx
#修改Nginx配置檔案,以非daemon方式啟動
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
#複製服務啟動指令碼並設定許可權
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
#設定生成容器時需要執行的指令碼
CMD ["/usr/local/sbin/run.sh"]
#開放22、80、443埠
EXPOSE 22
EXPOSE 80
EXPOSE 443


需要注意的是:在Dockerfile檔案中更換當前目錄不可以用“cd”命令,而要改用“WORKDIR”.三、根據Dockerfile生成映象

docker build -t nginx_dockerfile:centos .

檢視映象:

ocker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

nginx_dockerfile    centos              28d333149027        6 minutes ago       692MB

nginx               centos              bb2863c49d58        2 hours ago         586MB

sshd-centos         latest              0742cfe06535        3 hours ago         328MB

centos              latest              36540f359ca3        3 weeks ago         193MB

四、根據映象生成的容器並進行測試
1
、生成新的容器

docker run -d -p 2224:22 -p 8001:80 -p 4443:443 nginx_dockerfile:centos /usr/local/sbin/run.sh

將容器的22埠、80埠和443埠分別對映到到宿主機上的2224埠、8001埠和4443埠,並執行服務指令碼。2、測試