一.docker构建镜像的方法:   commit、dockerfile

  1、使用commit来构建镜像:

    commit是基于原有镜像基础上构建的镜像,使用此方法构建镜像的目的:保存镜像里的一些配置信息和修改的信息。相当于一个镜像的快照。

  2、使用dockerfile来构建镜像:

    dockerfile是快速构建所需(自定义)镜像。

二.构建nginx镜像:当网上仓库下载的镜像没有你用的插件等,且交付运行下合某应用没有下载等等等功能极简命令模式,是时候自己弄一个镜像玩玩了

这里centos的可能最新,先来一波解释 ,下面直接代码无解释

mkdir mynginx

cd mynginx/

wget http://nginx.org/download/nginx-1.16.0.tar.gz    #创建目录--下载应用--编辑

vi Dockerfile

FROM centos
#FROM:指定基础镜像(FROM是必备的指令,并且必须为第一条指令)

RUN yum -y install gcc make openssl-devel pcre pcre-devel zlib-devel tar zlib
#RUN: 用来执行命令行命令。其基本格式:
      #shell格式: RUN  <命令>  ,输入在bash环境中的命令即可,一个dockerfile允许使用RUN不得超过127层,所以,使用一次RUN, 使用 ‘ \ ’ 换行,使用‘ && ’执行下一条命令。一般使用此种格式;
      #exec格式: RUN  <"可执行文件", "参数1", "参数2">,此种方式像是函数调用中的格式;
#这句yum安装依赖等

ADD nginx-1.16.0.tar.gz /usr/src/
#ADD: 更高级的复制文件,在COPY的基础上增加了一些功能,如果复制的是压缩包的话,会直接解压,而不需要在使用RUN解压;

RUN cd /usr/src/nginx-1.16.0 \
    && mkdir /usr/local/nginx \
    && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module \
    && make && make install \
    && ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \
    && sed -i '1i\daemon off;' /usr/local/nginx/conf/nginx.conf \ 
    && nginx
#这个run大体意思就是选择路径编译安装创建快捷方式
#&& sed -i '1i\daemon off;' /usr/local/nginx/conf/nginx.conf \  
#这一句是禁止后台运行,nginx默认后台运行,docker不支持后台运行,

RUN rm -rf /usr/src/nginx-1.16.0
 
EXPOSE 80
#暴露80端口

CMD ["nginx"]
#启动nginx

 再附加几个常用的

 ENV: 设置环境变量。(都可以使用这里使用的变量)其基本格式:

      格式1:ENV <key> <value>

      格式2:ENV <key1>=<value1> <key2>=<value>...

 VOLUME: 定义匿名卷。 其基本格式:

      格式1: VOLUME ["<路径1>", "<路径2>"...]

      格式2: VOLUME <路径>

 

FROM centos

RUN yum -y install gcc make openssl-devel pcre pcre-devel zlib-devel tar zlib
ADD nginx-1.16.0.tar.gz /usr/src/
RUN cd /usr/src/nginx-1.16.0 \
    && mkdir /usr/local/nginx \
    && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module \
    && make && make install \
    && ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \
    && sed -i '1i\daemon off;' /usr/local/nginx/conf/nginx.conf \
    && nginx -V
 
RUN rm -rf /usr/src/nginx-1.16.0
 
EXPOSE 80
EXPOSE 443

CMD ["nginx"]

 

docker build -t nginx:v3 .
#构建 nginx是名字,v3版本号可以随便v100都行
docker run -d -p 80:80 --name nginx nginx:v3

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐