构建第一个镜像
镜像的定制实际上就是定制每一层所添加的配置,文件。我们可以把每一层修改,安装,构建,操作的命令都写入一个脚本,这个脚本就是Dockerfile。
Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容就是该层因该如何构建。
接下来我们以官方nginx镜像为例,使用Dockerfile来定制镜像。
在一个空白的目录中,建立一个文本文件,并将文件命名为Dockerfile:
mkdir mynginx
cd mynginx
touch Dockerfile
在Dockerfile文件中写入以下内容:
FROM nginx
RUN echo '<h1>Hello Docker!</h1>' > /usr/share/nginx/html/index.html
使用docker build命令创建镜像
docker build -t mynginx:1.0 .
运行docker run命令,既可以运行构建好的mynginx镜像,通过浏览器 http://ip:8080 即可访问nginx服务
docker run -d -p 8080:80 mynginx:1.0
Dockerfile构建命令
FROM 指定基础镜像
所谓定制镜像,一定是以一个镜像为基础,在其上进行定制。基础镜像是必须指定的,而FROM指令就是指定基础镜像,因此一个Dockerfile中FROM是必需的,并且一定是第一条指令。
在Docker Hub上有许多高质量的官方镜像,如nginx,redis,mysql,tomcat,centos,ubuntu等,可以在其中找到一个符合我们要求的镜像为基础镜像进行定制。
除了选择现有的镜像为基础外,Docker还存在一个特殊的镜像,名为scratch。这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。
如果以scratch镜像为基础镜像的话,意味着不以任何镜像为基础,接下来所写的指令将作为镜像的第一层开始存在。
对于Linux下静态编译程序来说,