怎么樣,小伙伴們,有沒有通過Dockerfile創(chuàng)建出屬于自己的鏡像呢?,是不是感覺Dockerfile就寫這么短不過癮呀!沒關系,這節(jié)我們來深入剖析它!
首先從頭開始
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/* # 注意 清理cacheRUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'
RUN 命令其實還是非常常用的,因為我們經常需要安裝一些軟件?。。?!
RUN的最佳實踐就是為了美觀,復雜的RUN請用分斜線換行!避免無用的分層,合并多條命令成一行!
WORKDIRWORKDIR /root
WORKDIR /test # 如果沒有會自動創(chuàng)建test目錄
WORKDIR demo
RUN pwd # 輸出結果應該是/test/demo
這個有點像linux 里面的cd命令。
WORKDIR的最佳實踐就是用WORKDIR,不要用RUN cd!,盡量使用絕對目錄!
ADD and COPYADD hello /
ADD test.tar.gz / # 添加到根目錄并解壓
WORKDIR /root
ADD hello test/ # /root/test/hello
WORKDIR /root
COPY hello test/
ADD與COPY的區(qū)別就是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,我們會在后面單獨講,一口氣不能吃個大胖子呀,慢慢來