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 增加可维护性

浙公网安备 33010602011771号