Dockerfile基础

1、dockerfile定义:

    dockerfile是用来构建docker镜像得构建文件,是由一系列命令和参数构成的脚本

2、构建docker镜像:

    工作目录(在宿主机上做一个目录,这个目录中只放置当前你打算用来做镜像的dockerfile文件)

    Dockerfile(dockerfile的文件名只能是dockerfile,不能叫其它名字)

3、dockerfile的文件格式

    dockerfile其实就是一个文本文件,只是内部通常会有两行组成

        #Comment   注释行

        INSTRUCTION arguments    指令参数

强调一下,在dockerfile中构建镜像,与我们在手动的启动一个容器镜像有所不同的是,你的dockerfile的每一条指令都会生成一个单一的专用的镜像层,比如你dockerfile中写了10条指令,我们指定一个基础镜像,而这个基础镜像底层又依赖另外一个镜像,最后把这个10条指令都运行完,来了一个指令会在镜像上面加一层,来十个指令会加10层,意味着每一个指令都会生成一个新的镜像层

4、构建容器的基本法则:

    我们应该把关系非常紧密的操作放在一个指令上,比如我们就想打算做一个php,那么我们应该把安装php和php相关的被依赖的包放到一个指令上写清楚

5、docker的指令说明:

    FROM:

        FROM指令是最重的一个且必须为dockerfile文件开篇的第一个非注释行,用于为映像文件构建过程指定基准镜像,后续的指令运行于此基准镜像所提供的运行环境

        实践中,基准镜像可以是任何可用镜像文件,默认情况下,docker build会在docker主机上查找指定的镜像文件,在其不存在时,则会从Docker Hub Registry上拉取所需的镜像文件

        如果找不到指定的镜像文件,docker build会返回一个错位信息

        语法:

            FROM<repository>[:<tag>]   或   FROM<resository>@<digest>

                <repository>:指定作为base image的名称;

                <tag>:base  image的标签,为可选项,省略时默认为latest;

    MAINTANIER(deprecated)

        用于让Dockerfile制作者提供本人的详细信息

        Dockerfile并不限制MAINTANIER指令可在出现的位置,但推荐将其放置于FROM指令之后

        语法:

            MAINTANIER  <authtor's detail>

                <authtor's detail>可是任意文本信息,但约定俗成地使用作者名称及邮件地址

                MAINTANIER “yumumu<yumumu@yumumu.com>”

    COPY

        用于从Docker主机复制文件至创建的新映像文件

        语法:

            COPY  <src>...<dest>  或  COPY  ["<src>",..."<dest>"]

                <src>:要复制的源文件或目录,支持使用通配符

                <dest>:目标路径,即正在创建的image的文件系统路径;建议为<dest>使用绝对路径,否则,COPY指定则以WORKDIR为其起始路径

                注意:在路径中有空白字符时,通常使用第二种格式

        文件复制准则:

            <src>必须是build上下文中的路径,不能是其父目录中的文件

            如果<src>是目录,则其内部文件或子目录会被递归复制,但<src>目录自身不会被复制

            如果指定了多个<src>,或在<src>中使用了通配符,则<dest>必须是一个目录,且必须以/结尾

            如果<dest>事先不存在,它将会被自动创建,这包括其父目录路径

Dockerfile实例:

[root@bogon ~]# mkdir build_workshop    //宿主机上创建目录
[root@bogon ~]# cd build_workshop/
[root@bogon build_workshop]# vi index.html  //写一个网页测试文件
<h1>Tiny Web Server based-on Busybox.<h1>

[root@bogon build_workshop]# vi Dockerfile   //编写dockerfile 
FROM  busybox:latest   //指定基准镜像

LABEL  maintainer="yumumu <572232220@qq.com>"    //提供制造者本人的详细信息

COPY index.html /data/web/html/   //要复制的源文件到目标的目录

[root@bogon build_workshop]# docker image build /root/build_workshop/ -t myimg:v1  //做镜像直接打标签
Sending build context to Docker daemon  15.87kB
Step 1/3 : FROM  busybox:latest
 ---> 018c9d7b792b
Step 2/3 : LABEL  maintainer="yumumu <572232220@qq.com>"
 ---> Running in 07e899bd8ef9
Removing intermediate container 07e899bd8ef9
 ---> 53e05937d996
Step 3/3 : COPY index.html /data/web/html/
 ---> 7e319004b923
Successfully built 7e319004b923
Successfully tagged myimg:v1


[root@bogon build_workshop]# docker image ls    //查看镜像是否构建成功
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myimg               v1                  7e319004b923        5 minutes ago       1.22MB
572232220/myimg     v0.1                6dae971ed21d        7 days ago          1.22MB
busybox             latest              018c9d7b792b        2 weeks ago         1.22MB


[root@bogon build_workshop]# docker run --name t1 --rm -it myimg:v1 /bin/sh  //运行容器验证
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data/
/data # ls
web
/data # cd web/html/
/data/web/html # ls
index.html
/data/web/html # cat index.html 
<h1>Tiny Web Server based-on Busybox.<h1>

         

 

 

 

   

   

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值