docker镜像创建

构建docker镜像有两种方法:

  • 使用docker commit命令创建
  • 使用docker build和dockerfile创建

    一般来说我们创建的镜像都是基于一个现有的镜像,在此基础上对现有的镜像进行二次开发,达到我们想要的镜像。如果真的想从零构建一个全新的镜像,可以参考https://docs.docker.com/engine/userguide/eng-image/baseimages/。这里推荐使用dockerfile来创建新的镜像。
    首先说说docker commit创建镜像:
docker commit创建镜像是向一个现有的镜像中提交变更,就想修改代码一样,最后再将变更后的镜像提交成一个新的镜像。完成变更后使用docker commit命令就可以提交新的镜像:
docker commit详解:
       格式:

   docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]
Options:
  -a, --author string   指定作者信息
  -c, --change list      将dockerfile指令应用到创建的镜像
  -m, --message string   提交消息
  -p, --pause     提交过程中暂停容器

如果想从刚创建的镜像运行一个容器,可以使用docker run命令:

 # docker run -t -i [REPOSITORY[:TAG] /bin/bash

dockerfile创建镜像
dockerfile 使用基本的基于DSL语法的指令来构建一个Docker镜像,之后使用docker build命令基于该Dockerfile中的指令构建一个新的镜像。使用dockerfile构建镜像时首先要创建一个名为dockerfile的文件,在此文件中使用DSL语法指令构建docker镜像。

dockerfile指令:

  • FROM 指定基础镜像
    格式:FROM registry:[tag]
               FROM registry@digest
    在dockerfile中FROM必须放在第一个非注释行。
  • MAINTAINER 指定作者信息
  • LABEL 指定元数据
  • COPY 将工作目录下的文件复制到所做得镜像中的文件系统中
        格式:COPY <src> <dest>
  • ADD 和COPY都具有复制的功能但ADD可以将复制过来的tar包进行解压,也可以从网络位置下载一个包,但是下载的tar包是不会解压的。
        格式:ADD <src> <dest>
  • WORKDIR 设置镜像的工作目录,相当于执行cd
  • VOLUME 指定数据卷的挂在点
  • EXPOSE 实现暴露容器的端口
        格式:EXPOSE PORT/[PROTOCOL]
  • ENV 设置环境变量
       格式:ENV var value
                 ENV var1=value1 var2=value2 …
  • RUN 基于镜像要构建容器是要执行的命令
  • CMD 定义容器启动以后要默认运行的程序,pid为1的程序
       格式:CMD <命令> 相当于执行的是/bin/sh -c 命令,也相当于执行exec来运行命令
                CMD ["<命令>", “<参数>”, “<参数>”]
                CMD ["<参数>", “<参数>”] <<< 需要借助于ENTRYPOINT指令
  • ENTRYPOINT 定义容器启动以后要默认运行的程序,pid为1的程序.
    注意:
    在运行RUN的时候所执行的命令无法覆盖ENTRYPOINT中的命令
    RUN 后面的命令会被以参数的方式追加到原本要执行的命令的末尾,而不是替换
    基于一个镜像,在创建容器的时候,通过传递不同的参数实现创建不同的容器

以上就是dockerfile中常用的一些指令,创建好dockerfile文件就开始构建镜像

cd filename  >>>进入镜像的工作目录
docker build -t="test/static_web"  . >>> -t指定新镜像的仓库和名称,  .  指当前目录也可以使用工作目录的绝对路径

这样我们就构建好了一个全新的镜像。以下是我自己的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

EXPOSE 80
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值