Docker容器

DockerFile语法梳理(会持续更新完善)

2020-03-21  本文已影响0人  猪大圣三七
为了方便日后查阅总结,做下语法记录。

FROM

FROM centos #尽量使用官方的base images

LABEL

label很重要,就像要写注释。Metadata不可少。

LABEL maintainer='linshangqing'
LABEL version="1.0"
LABEL description="This is description"

RUN

大部分是用来安装软件。每运行一次RUN,在Images就会制造新的layer。
注意:为了避免无用分层,合并多条命令成一行。

RUN yum update && yun instal -y vim\
    python-dev 
    
#通过&&合并成一行;\反斜线换行

WORKDIR

设定当前工作目录。
注意:
1.尽量使用绝对目录。
2.用WORKDIR,不要使用RUN CD

WORKDIR /test   #如果没有则会创建test目录
WORKDIR demo 
RUN pwd         #输出的则是/test/demo

ADD and COPY

都是把本地的文件添加docker iamge里面

ADD和COPY的区别:ADD还可以解压缩

联合使用的情况 hellow的目录情况
WORKDIR /root
ADD hello test/     # /root/test/hello

添加远程文件/目录,请使用curl或者wget

ENV

设置环境变量或常量(尽量使用ENV可增加可维护性)

ENV MYSQL_VERSION 5.6   #设置常量
RUN apt-get install -y mysql-server="${MYSQL_VERSION}" \
    && rm -rf /var/lib/apt/lists/*  #引用常量

VOLUME and EXPOSE

存储和网络
EXPOSE:暴露端口

CMD

1.容器启动时默认执行的命令
2.如果doker run指定了其他的命令,CMD会被忽略
3.如果定义了多个CMD,只有最后一个会执行

示例:

FROM centos
ENV name Docker
CMD echo "hello $name"
docker run [image]输出会是什么?是hello Docker
Docker run -it [image] /bin/bash 输出?则CMD会被忽略

ENTRYPOINT

1.让容器以应用程序或者服务的形式进行
2.不会被忽略,一定会执行

上一篇下一篇

猜你喜欢

热点阅读