利用Dockerfile构建一个nginx容器 金沙官网线

 2.ENTRYPOINT

    配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖,每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。

  

Step 13 : CMD nginx

6.RUN

RUN yum install -y gcc gcc-c++

Dockerfile 语法

---> Using cache

5.FROM 

  这个命令用于声明作者,并应该放在FROM的后面。   

    MAINTAINER authors_name 

金沙官网线上 1金沙官网线上 2

8.WORKDIR

  WORKDIR命令用于设置CMD指明的命令的运行目录。

 

下面就构建一个简单的dockerfile

   1.需要一个基础镜像

      docker pull centos

   2.在某一个目录下面创建一个专门存放此demo的目录,也就是Dockerfile所在的context:

      

[root@docker ~]# mkdir docker_demo
[root@docker ~]# cd docker_demo/
[root@docker docker_demo]# touch Dockerfile
[root@docker docker_demo]# pwd
/root/docker_demo
[root@docker docker_demo]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 1 04:34 Dockerfile

 

下载nginx源码包到docker_demo这个目录下:

[root@docker docker_demo]# ll
total 960
-rw-r--r--. 1 root root      0 Nov  1 04:34 Dockerfile
-rw-r--r--. 1 root root 981687 Oct 17 09:20 nginx-1.12.2.tar.gz

以下是编写好的Dockerfile v1版:

[root@docker docker_demo]# cat Dockerfile
# base image
FROM centos
# MAINTAINER
MAINTAINER json_hc@163.com
# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
# running required command
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx
# change dir to /usr/local/src/nginx-1.12.2
WORKDIR /usr/local/src/nginx-1.12.2
# execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

ENV PATH /usr/local/nginx/sbin:$PATH

EXPOSE 80

[root@docker docker_demo]# docker build -t centos_nginx:v2 .
Sending build context to Docker daemon 985.6kB
Step 1/10 : FROM centos
---> 196e0ce0c9fb
Step 2/10 : MAINTAINER json_hc@163.com
---> Using cache
---> cde1d7830106
Step 3/10 : ADD nginx-1.12.2.tar.gz /usr/local/src
---> Using cache
---> 1e4d16340af0
Step 4/10 : RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
---> Using cache
---> 405835ad9b0b
Step 5/10 : RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
---> Using cache
---> 4002738cf7a6
Step 6/10 : RUN useradd -M -s /sbin/nologin nginx
---> Using cache
---> 02961c5c564d
Step 7/10 : WORKDIR /usr/local/src/nginx-1.12.2
---> Using cache
---> f1da71a93c5e
Step 8/10 : RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
---> Using cache
---> cd2ad4c45004
Step 9/10 : ENV PATH /usr/local/nginx/sbin:$PATH
---> Running in 07ba2f7129bc
---> 9588fa1058aa
Removing intermediate container 07ba2f7129bc
Step 10/10 : EXPOSE 80
---> Running in 473cd847154a
---> 2031faf8894a
Removing intermediate container 473cd847154a
Successfully built 2031faf8894a
Successfully tagged centos_nginx:v2

 

$ docker images

$ docker run -d -p81:80 centos_nginx nginx -g "daemon off;"

$ docker ps -l

最后通过浏览器访问就可以了

   

---> 2caeaffce308

7.USER

  USER命令用于设置运行容器的UID。

 

3.下载nginx和pcre到本地目录下

  1.ADD

     ADD命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中

  1. ADD /my_app_folder /my_app_folder 

 

---> 3ab469fa6de1

4.EXPOSE 

   EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互。 

EXPOSE 80

---> Using cache

3.ENV 

   ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。  

      ENV PATH /usr/local/nginx/sbin:$PATH

---> c223ad0c0e56

8.查看容器 docker ps -l

Step 7 : WORKDIR /usr/local/src/nginx-1.9.3

---> Using cache

---> 50fad5999287

Step 5 : RUN yum install -y wget gcc_c++ make openssl-devel

CMD  ["nginx"]

金沙官网线上 3金沙官网线上 4

#RUN 在镜像中执行命令

docker images

#MAINTAINER 维护人

#WORKDIR 镜像中切换到目录

---> 535006fabee5

---> 2c8bfa5d7162

6.查看镜像 docker images

WORKDIR /usr/local/src/nginx-1.9.3

RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf

#Base images

金沙官网线上 5金沙官网线上 6

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install

---> Using cache

---> 399e3d091604

Step 4 : ADD nginx-1.9.3.tar.gz /usr/local/src

[root@HA2 src]# docker build -t nginx-docker:v1 .

Step 8 : RUN yum install -y gcc gcc-c++

4.编辑Dockerfile文件

---> Using cache

MAINTAINER kehaojian

Step 11 : ENV PATH /usr/local/nginx/sbin:$PATH

---> Using cache

Step 9 : RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install

2.查询镜像

1.从远程仓库中pull centos镜像

本文由金沙官网线上发布于操作系统,转载请注明出处:利用Dockerfile构建一个nginx容器 金沙官网线

您可能还会对下面的文章感兴趣: