在上一篇 《运行第一个docker容器》中我说过docker build 指令是一个相对
其他指令比较复杂的指令,这里呢就跟大家一起来分享一下该指令。
docker build指令是用来创建一个镜像的指令,
但是创建镜像需要一个文件叫做Dockerfile(文件名只能是这个)
其实使用docker build 指令复杂不是指它自己
而是指 Dockerfile 文件编写相对很复杂
编写Dockerfile文件会用到如下指令中的一个或多个(用户自己根据情况进行选择)
FROM:指定容器启动时要用的基础镜像,
如:FROM ubuntu,指定基础镜像是ubuntu;
CMD:指定容器启动时要运行的指令或者命令,
如:CMD [ "/bin/bash" ];
RUN:容器启动时要运行的指令,
如:RUN apt-get -y update;
ADD:构建镜像时把宿主机的当前工作目录中的文件或目录复制到镜像中,
它会把文件提取出来复制到镜像中,
如:ADD a.tar.gz /home,
在构建镜像时就会把 a.tar.gz 解压后把里面的文件复制到 镜像中的/home目录中;
COPY :构建镜像时把文件或目录只复制到镜像中,不会做其他的操作,
如:COPY a.tar.gz /home ,把a.tar.gz压缩包复制到 /home目录中;
WORKDIR:利用该镜像创建一个容器时会在容器中设置一个工作目录,
如:WORKDIR /home 就是把 /home当作该容器的工作目录;
ENV:在构建镜像时为容器设置环境变量,
如:ENV JAVA_HOME=/home/jdk ;
VOLUME:向利用该镜像创建的容器中添加卷,
如:VOLUME ["/home/project"];
EXPOSE:暴露的端口;
如:EXPOSE 22
以上的指令是在编写Dockerfile文件时用的,并且都要大写
编写 Dockerfile(文件名) 列子如下:
FROM ubuntu:14.04
MAINTAINER ldy "2660304934@qq.com"
RUN apt-get -yqq update
RUN apt-get -y install openjdk-7-jre
ADD apache-tomcat-8.5.4.tar.gz /home/
ENV TOMCAT_HOME=/home/apache-tomcat-8.5.4/bin
EXPOSE 8080
列子中的apache-tomcat-8.5.4.tar.gz要和Dockerfile在同一个目录中(即构建镜像时用的工作目录)
构建镜像:
[root@ldypc tomcat]# pwd
/home/tomcat
可以知道我的工作目录是:/home/tomcat
[root@ldypc tomcat]# ls
Dockerfile apache-tomcat-8.5.4.tar.gz
[root@ldypc tomcat]# docker build -t newdocker/tomcat . (注意:最后面有一个“ .”)
Dockerfile和 apache-tomcat-8.5.4.tar.gz都在该目录中
newdocker是镜像仓库,tomcat是镜像名(保存Dockerfile文件的目录名)
docker指令:http://blog.csdn.net/smallpizza/article/details/53114397
docker commit创建镜像:http://blog.csdn.net/smallpizza/article/details/53521003