更新时间:2024-11-12 GMT+08:00
编写Dockerfile文件
镜像是容器的基础,容器基于镜像定义的内容来运行。镜像是多层存储,每一层是前一层基础上进行的修改。
定制镜像时,一般使用Dockerfile来完成。Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建镜像的其中一层,因此每一条指令的内容,就是描述该层应该如何构建。
本章节指导您如何编写dockerfile文件。
Dockerfile文件编写与应用实际需求直接相关,每个应用所写的Dockerfile会有所区别,请根据业务实际需求来写Dockerfile文件。
如何写出可读性更好的Dockerfile,请参见编写高效的Dockerfile。
操作步骤
- 以root用户登录到安装有Docker的服务器上。
- 编写Dockerfile文件。
vi Dockerfile
Dockerfile内容如下:
# 表示以centos7.1.1503为基础镜像 FROM centos:7.1.1503 # 创建文件夹,存放数据和依赖文件,建议多个命令写成一条,可减少镜像大小 RUN mkdir -p /usr/local/mongodb/data \ && mkdir -p /usr/local/mongodb/bin \ && mkdir -p /root/apache-tomcat-7.0.82 \ && mkdir -p /root/jdk1.8.0_151 # 将apache-tomcat-7.0.82目录下的文件复制到容器目录下 COPY ./apache-tomcat-7.0.82 /root/apache-tomcat-7.0.82 # 将jdk1.8.0_151目录下的文件复制到容器目录下 COPY ./jdk1.8.0_151 /root/jdk1.8.0_151 # 将mongodb-linux-x86_64-rhel70-3.2.9目录下的文件复制到容器目录下 COPY ./mongodb-linux-x86_64-rhel70-3.2.9/bin /usr/local/mongodb/bin # 将start_tomcat_and_mongo.sh复制到容器/root/目录下 COPY ./start_tomcat_and_mongo.sh /root/ # 注入JAVA环境变量 RUN chown root:root -R /root \ && echo "JAVA_HOME=/root/jdk1.8.0_151 " >> /etc/profile \ && echo "PATH=\$JAVA_HOME/bin:$PATH " >> /etc/profile \ && echo "CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> /etc/profile \ && chmod +x /root \ && chmod +x /root/start_tomcat_and_mongo.sh # 容器启动的时候会自动运行start_tomcat_and_mongo.sh里面的命令,可以一条可以多条,也可以是一个脚本 ENTRYPOINT ["/root/start_tomcat_and_mongo.sh"]
其中:
- FROM语句:表示使用centos:7.1.1503镜像作为基础。
- RUN语句:表示在容器中执行某个shell命令。
- COPY语句:把本机中的文件复制到容器中。
- ENTRYPOINT语句:容器启动的命令。