用Dockerfile来构建docker的image
1.FROM
指定基础镜像,比如FROM ubuntu:14.04
FROM ubuntu:14.04
- RUN
在镜像内部执行一些命令,比如安装软件,配置环境等,换行可以使用""
RUN groupadd -r mysql && useradd -r -g mysql mysql
- ENV
设置变量的值,ENV MYSQL_MAJOR 5.7,可以通过docker run --e key=value修改,后面可以直接使用${MYSQL_MAJOR}
ENV MYSQL_MAJOR 5.7
- LABEL
设置镜像标签
LABEL email="xxxxx@163.com"
LABEL name="xxxxx"
- VOLUME
指定数据的挂在目录
VOLUME /var/lib/mysql
- COPY
将主机的文件复制到镜像内,如果目录不存在,会自动创建所需要的目录,注意只是复制,不会提取和解压
COPY docker-entrypoint.sh /usr/local/bin/
- ADD
将主机的文件复制到镜像内,和COPY类似,只是ADD会对压缩文件提取和解压
ADD application.yml /etc/test/
- WORKDIR
WORKDIR /usr/local
WORKDIR tomcat
RUN touch test.txt
会在/usr/local/tomcat下创建test.txt文件
WORKDIR /root
ADD app.yml test/
会在/root/test下多出一个app.yml文件
- CMD
容器启动的时候默认会执行的命令,若有多个CMD命令,则最后一个生效
CMD ["mysqld"]
或
CMD mysqld
- ENTRYPOINT
和CMD的使用类似
ENTRYPOINT ["docker-entrypoint.sh"]
和CMD的不同:
docker run执行时,会覆盖CMD的命令,而ENTRYPOINT不会
- EXPOSE
指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机
EXPOSE 3306
网友评论