通過Dockerfile建立nginx服務的Centos映象
通過Dockerfile生成映象
在宿主機上準備的檔案清單:
Dockerfile
#啟動ssh和apache服務的角本
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、測試