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会发现有,如下图所示
- 点赞
- 收藏
- 关注作者
评论(0)