Docker镜像制作之Dockerfile

网友投稿 874 2022-05-30

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/

Docker镜像制作之Dockerfile

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

Docker 镜像服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为云训练营20200325
下一篇:华为大咖解读:软件开发云如何践行DevOps?
相关文章