(1),DockerFile 文件
Docker可以通过从Dockerfile中读取指令来自动构建镜像。
Dockerfile是一个文本文档,包含用户可以在命令行上调用的所有命令,以组合镜像。
使用docker build,docker即可启动构建工作,构建过程为连续执行DockerFile中的
多个命令行指令。
•官方例:
FROM scratch
ADD centos-7-x86_64-docker.tar.xz /
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20190305"
CMD ["/bin/bash"]
(2),DockerFile 基础语法
•关键字指令必须为大写字母,且至少需要一个参数;
•关键字指令从上到下顺序执行;
•#表示注释;
•每条指令执行都会创建一个镜像层;
(3),DockerFile 执行流程
•docker从基础镜像运行一个容器。
•执行一条指令并对容器做出修改。
•执行类似docker commit的操作,提交一个新的镜像层。
•docker再基于刚刚提交的镜像,运行一个新容器。
•执行dockerfile中的下一条指令直到所有的指令都执行完成。
(4),DockerFile 关键字指令
FROM : FROM指令初始化新的构建阶段,并为后续指令设置基本镜像。
MAINTAINER(过期):维护者指令设置生成镜像的作者字段,使用Label。
RUN:将在当前镜像之上的新层中执行任何命令,并提交结果。
EXPOSE:容器在运行时监听指定的网络端口。EXPORT不会让主机访问容器的端口。
WORKDIR:为文件中跟随它的任何RUN、CMD、ENTRYPONT、COPY和ADD指令设置工作目录。
ENV:设置环境变量
ADD: 复制文件,并将它们添加到镜像文件系统的指定目录。
COPY:类似ADD
VOLUME:设置数据卷
CMD:一个文件中只能有一条CMD指令。如果您列出了多个CMD,则只有最后一个CMD会生效。
ENTRYPOINT:类似CMD
ONBUILD :当镜像被用作另一个构建的基础时,ONBUILD指令在镜像中添加了一个稍后要执行的触发指令。
●阿里云镜像搜索:https://cr.console.aliyun.com/cn-qingdao/instances/images
(5)docker制作镜像示例1(Centos镜像)
★自定义镜像 centos
1、编写DockerFile 文件
2、使用docker build 构建镜像
3、使用docker run 创建容器
★DockerFile
--------------------------------------------------------------
FROM centos
LABEL author="xxx@zzz.com"
ENV myhome /tmp
WORKDIR $myhome
RUN yum -y install vim
RUN mkdir /datavolume
VOLUME /datavolume #设置一个数据卷。此时,主机中的数据卷自动生成。
CMD /bin/bash
----------------------------------------------------------------
★构建镜像
docker build -f dockerfile_path -t image:tag . #最后的.勿忘。
例:docker build -f /mydocker/DockerFile -t my_centos:1.1 .
(6)docker制作镜像示例2(tomcat镜像)
环境:centos + jdk8 + tomcat + vim
1 #选择基础镜像 2 FROM centos 3 #设置描述信息 4 LABEL maintainer="xxx@zzz.com" 5 #测试COPY从主机拷贝文件到容器 6 COPY testcp.txt /usr/local/testcp.txt 7 #在基础镜像上安装软件 apache-tomcat-9.0.13.tar.gz 和 jdk-8u181-linux-x64.tar.gz 8 ADD jdk-8u181-linux-x64.tar.gz /usr/local/ #从主机的当前路径拷贝jdk-8u181到容器的/usr/local/ 9 ADD apache-tomcat-9.0.13.tar.gz /usr/local/ 10 #安装 vim 编辑器 11 RUN yum -y install vim 12 #设置 容器数据卷 13 RUN mkdir /dataVolume 14 VOLUME /dataVolume 15 16 #设置工作路径 17 ENV MYPATH /usr/local 18 WORKDIR $MYPATH 19 #设置环境变量 20 ENV JAVA_HOME /usr/local/jdk1.8.0_181 21 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 22 ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.13 23 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.13 24 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin 25 #容器监听端口 26 EXPOSE 8080 27 #启动时运行 tomcat 28 CMD /usr/local/apache-tomcat-9.0.13/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.13/bin/logs/catalina.out
★构建镜像
docker build -t my_tomcat . #省略的参数,从当前目录找。
★利用当前镜像创建容器。
docker run -d -p 8888:8080 --name mytomcat01 mytomcat
原文:https://www.cnblogs.com/mountain2011/p/11223452.html