Dockerfile详解

一、dockerfile常用指令

FROM :指定base镜像,如果本地不存在会从远程仓库下载。  

MAINTAINER: 设置镜像的作者,比如用户邮箱等。 

COPY: 把文件从build context复制到镜像

ADD :用法与COPY类似,不同的是src可以是归档压缩文件,

文件会被自动解压到dest,也可以自动下载URL并拷贝到镜像

例如:在Dockerfile文件添加 ADD ------可自动解压nginx压缩包

Dockerfile详解_第1张图片

Dockerfile详解_第2张图片

 运行容器v3 发现nginx压缩包被自动解压为目录

ENV 设置环境变量,变量可以被后续的指令使用: 

EXPOSE 如果容器中运行应用服务,可以把服务端口暴露出去

VOLUME 申明数据卷 使容器和数据分离

例如:在Dockerfile 申明数据卷  并保存在/data

Dockerfile详解_第3张图片

 然后构建新镜像v4

Dockerfile详解_第4张图片

运行容器 发现/data目录被创建

 查看数据卷:docker volume ls

删除数据卷: docker  volume    rm    volume name

RUN 在容器中运行命令并创建新的镜像层,常用于安装软件包 

CMD 与 ENTRYPOINT 这两个指令都是用于设置容器启动后执行的命令,但CMD会被docker run后面的命令行覆盖,而ENTRYPOINT不会被忽略,一定会被执行。 docker run后面的参数可以传递给ENTRYPOINT指令当作参数。 Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。

形式一:CMD  echo "hello word"

Dockerfile详解_第5张图片

构建新镜像 并运行容器

Dockerfile详解_第6张图片

 如果命令含有变量 形式一也很简单

Dockerfile详解_第7张图片

 同样输出正确

Dockerfile详解_第8张图片

形式二(官方):命令加上[  ]

这种形式如果命令含有变量  不能直接使用 需要改写

ENTRYPOINT ["/bin/sh", "-c", "echo hello, $hostname"]

才能正确运行

如果不含有变量  必须写成下图形式

Dockerfile详解_第9张图片

 构建新镜像 并运行容器 结果正确!

Dockerfile详解_第10张图片

 运行容器时 后面加上字符 就会发现CMD命令被覆盖掉了 ENTRYPOINT不会被覆盖

Dockerfile详解_第11张图片

 二、利用Dockerfile安装nginx

1.发送nginx 压缩包到Docker目录

 2.编辑index.html:www.westos.org

3.导出centos7镜像

Dockerfile详解_第12张图片

4.编辑Dockerfile文件

Dockerfile详解_第13张图片

5.构建新镜像

Dockerfile详解_第14张图片

Dockerfile详解_第15张图片

6.运行容器

 7.测试是否安装成功

docker inspect demo 查看容器详细信息

Dockerfile详解_第16张图片

从详细信息查找ip 并curl  看到nginx默认发布页 说明安装成功!

Dockerfile详解_第17张图片

 此外  在详细信息还能看到镜像挂在地址

Dockerfile详解_第18张图片

直接修改默认发布页面

Dockerfile详解_第19张图片

 三、马里奥小游戏

1.导出马里奥镜像

Dockerfile详解_第20张图片

 2.运行容器 挂在后台

 3.在浏览器出入ip  开始游戏

Dockerfile详解_第21张图片

 

你可能感兴趣的:(云计算,容器,centos)