一、dockerfile常用命令
指令 | 描述 |
---|---|
FROM | 构建的新镜像是基于哪个镜像;例如:From centos:6 |
MAINTAINER | 镜像维护者姓名或邮箱地址;例如:MAINTAINER wangmh |
RUN | 构建镜像时运行的Shell命令;例如:RUN [“yum”,“install”,“httpd”],RUN yum install httpd |
CMD | 运行容器时执行的Shell命令;例如:CMD ["-c","/start.sh"] |
EXPOSE | 声明容器运行的服务器端口;例如:EXPOSE 80 443 |
ENV | 设置容器内环境变量;例如:ENV MYSQL_ROOT_PASSWORD |
ADD | 拷贝文件或目录到镜像,如果是URL或压缩包会自动下载或自动解压;例如: |
ADD ROOT.war /tomcat/webapps/ | |
COPY | 拷贝文件或目录到镜像,不会自动解压;例如:COPY ./start.sh /start.sh |
ENTRYPOINT | 运行容器时执行的Shell命令;例如:ENTRYPOINT /bin/bash -c ‘/start.sh’ |
VOLUME | 指定容器挂载点到宿主机自动生成的目录或其他容器;例如:VOLUME ["/var/lib/mysql"] |
USER | 为RUN、CMD和ENTRYPOINT执行命令指定运行用户USER [:] or USER [:];例如:USER wangmh |
WORKDIR | 为RUN、ENTRYPOINT、COPY和ADD设置工作目录;例如:WORKDIR /data |
ARG | 在构建镜像时指定一些参数;例如:FROM centos:6 ARG user USER $user #docker build --build-arg user=wangmh Dockerfile . |
HEALTHCHECK | 健康检查;HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit l |
注:RUN、CMD、ENTRYPOINT指令区别
1.RUN在building时运行,可以写多条
2.CMD和ENTRYPOINT在运行容器时运行,只能写一条,如果多写,只生效最后一条
3.CMD在run时可以被COMMAND覆盖,ENTRYPOINT不会被COMMAND覆盖,但可以指定-entrypoint 覆盖
二、Build镜像命名
使用Dockerfile文件构建镜像
用法:
docker build [OPTIONS] PATH | URL | -
选项:
-t,--tag list #镜像名称
-f,--file string #指定Dockerfile文件位置
三、构建java网站环境镜像
From centos:6
MAINTAINER wangmh
ADD jdk-8u45-linux-x64.tar.gz /usr/local
ENV ENV JAVA_HOME /usr/local/jdk1.8.0_45
ADD http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.45/bin/apachetomcat-8.0.45.tar.gz /usr/local
WORKDIR /usr/local/apache-tomcat-8.0.45
ENTRYPOINT ["bin/catalina.sh", "run"]
EXPOSE 8080
四、构建支持SSH服务的镜像
FROM centos:6
MAINTAINER wangmh
ENV ROOT_PASSWORD 123456
RUN yum install -y openssh-server
RUN echo $ROOT_PASSWORD |passwd --stdin root
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
CMD ["/usr/sbin/sshd", "-D"]
EXPOSE 22