什么是DockerFile?

dockerfile相当于是一个文档,可以基于dockerfile构建docker镜像的文件。

dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。

构建步骤:

  • 编写一个dockerfile文件
  • dockerbuild构建成为一个镜像
  • dockerrun运行镜像
  • dockerpush 发布镜像(DockerHub、阿里云镜像仓库!)

DockerFile的构建过程

  • 每个保留关键字(指令)都是必须大写字母
  • 执行从上到下顺序执行
  • #标识注释
  • 每一个指令都会创建提交一个新的镜像层,并提交

DockerFile的指令

FROM          基础镜镜像,一切从这里开始构建 
MAINTAINER    镜像是谁写的,姓名+邮箱 
RUN           镜像构建的时候需要运行的命令 
ADD           步骤,tomcat镜像,这个tomcat压缩包!添加内容 
WORKDIR       镜像的工作目录 
VOLUME        挂载的目录 
EXPOSE        保留端口配置 
CMD           指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 
ENTRYPOINT    指定这个容器启动的时候要运行的命令。可以追加命令 
ONBUILD       当构建一个被继承DockerFile这个时候就会运行ONBUILD 的指令。触发指令。 
COPY          类似ADD,将我们文件拷贝到镜像中 
ENV           构建的时候设置环境变量

centos docker samba配置 spoolss_3d

构建自己的centos

DockerHub中99%镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来进行的构建。

centos docker samba配置 spoolss_centos_02


1、创建一个dockfile 文件

mkdir dockerfile

2、编写dockerfile文件mydockefile-centos

[root@iZwz9geewjuo2sogidqn50Z dockerfile]# cat mydockefile-centos
FROM centos
MAINTAINER li<1325510524@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo  $MYPATH
CMD echo "------end-------"
CMD /bin/bash

3、通过这个文件构建镜像

命令语法:

docker build -f dockerfile文件路径 -t 镜像名:[tag]

示例:

[root@iZwz9geewjuo2sogidqn50Z dockerfile]# docker build  -f  mydockefile-centos -t mycentos:0.1 .
Sending build context to Docker daemon  2.048kB
Step 1/10 : FROM centos
 ---> 5d0da3dc9764
Step 2/10 : MAINTAINER li<1325510524@qq.com>
 ---> Running in 9dc0190e27ad
Removing intermediate container 9dc0190e27ad
 ---> e7a0495b3e0c
Step 3/10 : ENV MYPATH /usr/local
 ---> Running in cfe662f57224
Removing intermediate container cfe662f57224
 ---> ebf49015fcf7
Step 4/10 : WORKDIR $MYPATH
 ---> Running in 29952bc96a95
Removing intermediate container 29952bc96a95
 ---> eb102496fe14
Step 5/10 : RUN yum -y install vim
 ---> Running in e79f7790e2f7
CentOS Linux 8 - AppStream                      1.5 MB/s | 8.4 MB     00:05
CentOS Linux 8 - BaseOS                         2.8 MB/s | 4.6 MB     00:01
CentOS Linux 8 - Extras                          10 kB/s |  10 kB     00:01
Dependencies resolved.
.
.
.
Successfully built 83d85b399f29
Successfully tagged mycentos:0.1

看到Successfully built 83d85b399f29 Successfully tagged mycentos:0.1就说明成功了!

4、测试运行

对比官方的镜像:

centos docker samba配置 spoolss_docker_03


自己构建的镜像:

centos docker samba配置 spoolss_3d_04


可以列出本地进行的变更历史:

centos docker samba配置 spoolss_centos_05