dockerfile構建Nginx鏡像
一、前期工作准備(前提是安裝好docker)
1.1、創建目錄,用於存放dockerfile
[root@node2 ~]# mkdir /app
[root@node2 ~]# cd /app/
#用於以后存放web服務器的目錄
[root@node2 app]# mkdir web/nginx -p && cd web/nginx
1.2、構建Dockerfile文件
#構建之前我們先pull個鏡像下來,等會基於這個鏡像做nginx鏡像
[root@node2 ~]# docker pull centos:7.6.1810
#構建的時候,不知道怎么寫,或者命令不記得可以參考hub.docker.com上別人寫好的
---
ADD命令和COPY命令都可以往容器加東西,但是ADD會自動解壓.tar.gz安裝包,COPY原封不動拷貝過去
Dockerfile 是分步執行的當你build前面5步,后面再添加新的命令,前面的會有記錄,不會重新執行!
---
1.3、build:
[root@node2 nginx]# vim Dockerfile
# Base images 基礎鏡像
FROM centos:7.6.1810
#作者名稱
LABEL maintainer="tzh <362777279@qq.com>"
#執行下面命令,安裝基礎環境
RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel vim
#添加nginx到容器里
ADD nginx-1.10.1.tar.gz /usr/local/src/
#編譯安裝
RUN cd /usr/local/src/nginx-1.10.1 && ./configure --prefix=/app/nginx --user=nginx --group=nginx --with-http_s
tub_status_module && make && make install
#全局變量設置
ENV aaa 123456
#做軟鏈接
RUN ln -s /app/nginx/sbin/* /usr/local/sbin/
RUN useradd nginx
#暴露端口
EXPOSE 80 443 22
#運行這個鏡像,默認執行的命令,有多個CMD時,只有最后一個有效,前面的會被覆蓋
CMD ["nginx", "-g", "daemon off;"]
------當前目錄,以及文件------
[root@node2 nginx]# pwd
/app/web/nginx
[root@node2 nginx]# ls
Dockerfile nginx-1.10.1.tar.gz
[root@node2 nginx]# docker build -t nginx:v2 .
*
*
*
Successfully built b044c844052b
Successfully tagged nginx:v2
[root@node2 nginx]# vim Dockerfile
FROM centos:7.6.1810
#顯示這個就成功了
#可以進去看看
[root@node2 nginx]# docker run --rm -it nginx:v3 bash
#啟動容器看看是否成功命令:CMD ["nginx", "-g", "daemon off;"]
#能進去說明可以了
[root@node2 nginx]# docker run -it nginx:v4 bash