docker的学习二

如何构建自己的docker镜像

1.docker container commit 命令

场景1:如果有一个centos的容器,我在centos上安装了vim那么我可以用这个命令重新构建一个自己的容器

docker run -it centos  //长连接运行一个容器

yum install vim -y      //在容器上安装vim

exit                         //退出容器

docker container commit “容器的名字” xiaozhe/centos-vim  //commit 一个新的容器 名为xiaozhe/centos-vim

docker image ls    //查看容器是否构建成功

2.docker image build命令

方法1创建的镜像不是很提倡,因为如果发布出去的话不安全,第二点也不灵活,所以一般是使用Dockerfile文件构建镜像。

简单实现“1.”的镜像的Dockerfile

mkdir docker-centos-vim  //创建一个目录

cd  docker-centos-vim   //打开目录创建一个Dockerfile

vi Dockerfile

往里面添加两行代码

FROM centos

RUN  yum install vim -y  //注1:image是只读的,它是如何在只读的文件里面写入vim的呢?

wq  //保存

docker build -t xiaozhe/centos-vim .   //基于当前目录的Dockerfile生成一个镜像

-----------------------------------------------------------------------

注1:因为在执行RUN的时候会临时生成一个container,在执行完RUN之后这个container会被删掉

就是以下这段代码

Complete!

Removing intermediate container 09f7c9c204ad

 ---> 468507c3ec26

-----------------------------------------------------------------------

3、Dockerfile语法梳理

一、FROM定义我们要使用的base image是什么 如:

FROM scratch //制作base_image

FROM centos //使用base image

FROM ubuntu:14.04  //同上

二、LABEL 定义Dockerfile的一些matedata信息 如:

LABEL maintainer="名称"

LABEL version="版本号"

LABEL description="简介"

三、RUN运行命令

对于image没执行一次RUN表示多一个分层,所以复杂的RUN请用反斜线换行避免无用分层,合并多条命令为一行

如:RUN yum update && yum install vim -y \

      python-dev #反斜杠换行

四、WORKDIR设定当前工作目录

如:WORKDIR /root

又如:

WORKDIR /test

WORKDIR demo

RUN pwd #输出结果应该是/test/demo

注:用WORKDIR改变目录尽量不要用RUN cd ; 尽量使用绝对路径;

五、ADD && COPY

ADD 添加文件到指定目录

COPY 复制文件到指定目录

六、ENV设定常量

如:ENV MYSQL_VERSION 5.6

      RUN  apt-get install -y mysql-server="{$MYSQL_VERSION}"

尽量使用ENV 增加可维护性

 

posted @ 2018-10-17 16:44  进击的小哲  阅读(187)  评论(0)    收藏  举报