Docker镜像制作之Dockerfile

举报
docker君 发表于 2017/03/28 19:02:52 2017/03/28
【摘要】 Docker镜像制作之Dockerfile。

Docker包括三个基本概念
. 镜像(Image)
. 容器(Container)
. 仓库(Repository)
通过理解这几个概念,可以来理解Docker的整个生命周期;
Docker镜像:包含一个完整操作系统(比如Ubuntu),里边安装了用户需要的应用程序;
Docker容器:简易版的Linux环境和运行在其中的应用程序;
Docker仓库:集中存放镜像文件的仓库(当前paas用了两台虚机用来做仓库,cce-docker-hub*)。
想必大家应该了解他们之间的关系了吧,Docker容器是从Docker镜像创建的运行实例,而Docker镜像存放在Docker仓库中。
Docker安装
安装比较简单,可以参考
https://docs.docker.com/engine/installation/linux/ubuntulinux/
Docker镜像过程
主要通过我这次制作filebeat的Docker镜像的例子,来向大家介绍整个Docker镜像制作的过程。

1.Dockerfile制作
下面就是用来制作filebeat镜像的Dockerfile,几行就搞定了,是不是很简单啊!


Dockerfile:
FROM ubuntu:14.04

MAINTAINER z00353090

WORKDIR /opt

RUN apt-get update
RUN apt-get install -y supervisor

RUN mkdir -p /opt/jobs/conf
RUN mkdir /opt/jobs/store

ADD filebeat /opt/jobs/
ADD conf/supervisor_filebeat.conf /etc/supervisor/conf.d/filebeat.conf

CMD [ "/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf" ]

制作镜像来源
1.从Docker hub获取已有镜像 :docker pull ubnutu14.04
2.利用本地文件系统导入镜像 :cat ubuntu_14.04.tar | docker import - ubuntu:14.04 FROM ubuntu:14.04 FROM指令告诉 Docker 使用ubuntu_14.04镜像作为基础
维护者的信息
MAINTAINER z00353090
工作目录
WORKDIR /opt 为后续的RUN、CMD指令配置工作目录
安装软件
RUN开头的指令会在创建中运行
RUN apt-get update
RUN apt-get install -y supervisor
创建目录
RUN mkdir -p /opt/jobs/conf
RUN mkdir /opt/jobs/store
每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。
拷贝文件
ADD filebeat /opt/jobs/
ADD conf/supervisor_filebeat.conf /etc/supervisor/conf.d/filebeat.conf
ADD指令将本地文件拷贝到容器中
启动容器时执行的命令
通过CMD指定启动容器时执行的命令
CMD [ "/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf" ]

2.创建镜像
编写完成 Dockerfile 之后,用 docker build 命令来创建镜像,要指定镜像的标签信息,可以通过 -t选项:docker build -t filebeat:v5.0 /path/to/Dockerfile,可以通过docker images命令查看自己制作的镜像
3.镜像上库
当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
4.导出镜像
如果要导出镜像到本地文件,可以使用docker save命令
docker save –o filebeat_V5.0.tar filebeat:V5.0
5.创建并启动容器
利用上面制作好的镜像,创建并启动容器


docker run -d -v /path/to/log/containers:/opt/store/log/containers/ \
-v /path/to/log/component:/opt/store/log/component/ \
-v /path/to/filebeat/config:/opt/jobs/conf filebeat:V5.0

-d选项是指定后台运行
-v选项将主机目录挂载到容器,通过该目录来共享文件
容器创建成功后会有一个containerID生成,因为我通过CMD指定启动容器时执行的命令,所以docker ps会发现有,如下图所示

作者 | 张坤明

转载请注明出处:华为云博客 https://portal.hwclouds.com/blogs

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。