一、dockerfile常用指令
FROM :指定base镜像,如果本地不存在会从远程仓库下载。
MAINTAINER: 设置镜像的作者,比如用户邮箱等。
COPY: 把文件从build context复制到镜像
ADD :用法与COPY类似,不同的是src可以是归档压缩文件,
文件会被自动解压到dest,也可以自动下载URL并拷贝到镜像
例如:在Dockerfile文件添加 ADD ------可自动解压nginx压缩包
运行容器v3 发现nginx压缩包被自动解压为目录
ENV 设置环境变量,变量可以被后续的指令使用:
EXPOSE 如果容器中运行应用服务,可以把服务端口暴露出去
VOLUME 申明数据卷 使容器和数据分离
例如:在Dockerfile 申明数据卷 并保存在/data
然后构建新镜像v4
运行容器 发现/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"
构建新镜像 并运行容器
如果命令含有变量 形式一也很简单
同样输出正确
形式二(官方):命令加上[ ]
这种形式如果命令含有变量 不能直接使用 需要改写
ENTRYPOINT ["/bin/sh", "-c", "echo hello, $hostname"]
才能正确运行
如果不含有变量 必须写成下图形式
构建新镜像 并运行容器 结果正确!
运行容器时 后面加上字符 就会发现CMD命令被覆盖掉了 ENTRYPOINT不会被覆盖
二、利用Dockerfile安装nginx
1.发送nginx 压缩包到Docker目录
2.编辑index.html:www.westos.org
3.导出centos7镜像
4.编辑Dockerfile文件
5.构建新镜像
6.运行容器
7.测试是否安装成功
docker inspect demo 查看容器详细信息
从详细信息查找ip 并curl 看到nginx默认发布页 说明安装成功!
此外 在详细信息还能看到镜像挂在地址
直接修改默认发布页面
三、马里奥小游戏
1.导出马里奥镜像
2.运行容器 挂在后台
3.在浏览器出入ip 开始游戏