我开始玩儿docker的时候,都是通过docker pull命令把基础镜像拉取到本地,然后在跑成容器,在操作容器,做一些自己的事情,比如安装个java环境什么的,直到我接触到了dockerfile,我发现dockerfile真是个好东西呀。
dockerfile是用来干什么的呢,简单理解,就是用来描述你需要一个什么样的镜像的,话不多说我直接举个例子,我的例子是需要java、es、es插件和我自己的一个项目
# 基础镜像
FROM centos:7
# 创建 es 用户
RUN useradd -m es
# 创建文件件
RUN mkdir -p /usr/local/java
RUN mkdir -p /usr/local/elastic/es_plugin
RUN mkdir -p /usr/local/project
# 复制 Java 1.8 安装包
COPY jdk-8u411-linux-x64.tar.gz /tmp/
RUN tar -xzf /tmp/jdk-8u411-linux-x64.tar.gz -C /usr/local/java
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_411
ENV PATH=${JAVA_HOME}/bin:${PATH}
# 检查环境变量
RUN echo $JAVA_HOME
RUN ls $JAVA_HOME
# 复制 Elasticsearch 6.8.13 安装包
COPY elasticsearch-6.8.13.tar.gz /tmp/
RUN tar -xzf /tmp/elasticsearch-6.8.13.tar.gz -C /usr/local/elastic
ENV ES_HOME=/usr/local/elastic/elasticsearch-6.8.13
RUN ln -s $ES_HOME /usr/share/elasticsearch
# 配置 Elasticsearch
RUN rm -rf $ES_HOME/config/elasticsearch.yml
COPY elasticsearch.yml $ES_HOME/config/elasticsearch.yml
# 安装 ik 插件
COPY elasticsearch-analysis-ik-6.8.13.zip /usr/local/elastic/es_plugin
RUN $ES_HOME/bin/elasticsearch-plugin install --batch file:///usr/local/elastic/es_plugin/elasticsearch-analysis-ik-6.8.13.zip
# 安装 score 插件
COPY expert-score-scripts.zip /usr/local/elastic/es_plugin
RUN $ES_HOME/bin/elasticsearch-plugin install --batch file:///usr/local/elastic/es_plugin/expert-score-scripts.zip
# 拷贝启动脚本
COPY es-start.sh /usr/local/elastic/
# 修改格式
RUN sed -i 's/\r//' /usr/local/elastic/*.sh
# 增加执行权限
RUN chmod +x /usr/local/elastic/es-start.sh
# 修改所属用户
RUN chown -R es:es $ES_HOME
Run chown -R es:es /usr/local/elastic
# 安装 libgomp.so 动态链接库
RUN yum install -y libgomp
# 安装 unzip 工具
RUN yum install -y unzip
# 暴露 Elasticsearch 和 JAR 包端口
EXPOSE 9200 9300 8080
dockerfile写法跟shell脚本很相似,它执行起来是这个样子的
这样就会生成一个镜像,在启动镜像,看看你需要的东西是不是已经有了,太奇妙了。
如果你对docker命令还不太熟悉,可以参考下这个链接:https://blog.csdn.net/dydyswr/article/details/143316174