怎么样,小伙伴们,有没有通过Dockerfile创建出属于自己的镜像呢?,是不是感觉Dockerfile就写这么短不过瘾呀!没关系,这节我们来深入剖析它!
首先从头开始
FROM # 指定Base image
- FROM scratch # 制作base image
- FROM centos # 使用base image
- FROM ubuntu:14.04
FROM的最佳实践就是尽量用官方的Baseimage,因为安全
LABEL
- LABEL maintainer="1991585851@qq.com"
- LABEL version="1.0"
- LABEL description="This is description"
LABEL的最佳实践就是Maindata,希望大家可以像写代码注释一样,写这个为了别人能够更好的使用你的image
RUN
-
RUN yum update && yum install -y vim \
python-dev # 反斜杠换行 -
RUN apt-get update && apt-get install -y perl
pwgen --no-install-recommends && rm -rf
/var/lib/apt/lists/* # 注意 清理cache -
RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'
RUN 命令其实还是非常常用的,因为我们经常需要安装一些软件!!!!
RUN的最佳实践就是为了美观,复杂的RUN请用分斜线换行!避免无用的分层,合并多条命令成一行!
WORKDIR -
WORKDIR /root
-
WORKDIR /test # 如果没有会自动创建test目录
-
WORKDIR demo
RUN pwd # 输出结果应该是/test/demo
这个有点像linux 里面的cd命令。
WORKDIR的最佳实践就是用WORKDIR,不要用RUN cd!,尽量使用绝对目录!
ADD and COPY -
ADD hello /
-
ADD test.tar.gz / # 添加到根目录并解压
-
WORKDIR /root
-
ADD hello test/ # /root/test/hello
-
WORKDIR /root
-
COPY hello test/
ADD与COPY的区别就是ADD 不光可以添加到文件,还可以解压缩
ADD与COPY的最佳实践添加远程文件或者目录请使用curl或者wget
ENV
- ENV MYSQL_VERSION 5.6 # 设置常量
- RUN apt-get install -y mysql-server= "${MYSQL_VERSION}"
&& rm -rf /var/lib/apt/lists/* # 引用常量
ENV的最佳实践尽量使用,可以增加可维护🌟!
最后还有,VOLUME and EXPOSE and CMD and ENTRYPOINT,我们会在后面单独讲,一口气不能吃个大胖子呀,慢慢来
网友评论