官网文档 Docker Reference
常见语法如下:
- FROM
制作/使用 base image
FROM centos
FROM ubuntu:14.04
- LABEL
类似代码的注释
LABEL version="1.0"
LABEL maintainer="xiaopang@163.com"
- RUN 执行命令 因为每运行一次,都会生成一次layer,避免无用分层,合并多条命令成一行 反斜线\换行 &&合并成一行
RUM yum update && yum install -y vim \
python-dev #反斜线换行
- WORKDIR
设定当前工作目录
使用WORKDIR,不使用RUN cd
尽量使用绝对目录
WORKDIR /test #如果没有回自动创建目录
WORKDIT demo
RUN $PWD #输出结果应为/test/demo
- AND and COPY
本地文件添加到Docker Image里面
大部分情况,COPY优于ADD ADD相比COPY有解压缩的功能
ADD test.tar.gz / #添加到根目录并解压缩
添加远程文件/目录使用curl或wget 6. ENV 设置常量 增加可维护性
ENV MYSQL_VERSION 5.6 #设置常量
RUN apt-get install -y mysql-servier= "${MYSQL_VERSION}" \
&& rm -rf /var/lib/apt/lists/* #引用常量
- ENTRYPOINT
- 设置容器启动时运行的命令,让容器以应用程序或者服务运行程序
shell模式 bash中执行ENTRYPOINT echo hello $name
exec模式 未在bash中执行ENTRYPOINT ["/bin/bash","-c","echo hello $name"]
- 不会被忽略,一定会执行
- 写一个shell脚本作为entrypoint
COPY docker-entrypoint.sh /usr/local/bin
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
- CMD
- 设置容器启动后默认执行的命令和参数
- 如果docker run指定了其他命令,CMD命令会被忽略
- 如果定义了多个CMD,只有最后一个会执行
- VOLUME and EXPOSE
未完待续