命令
指令 | 描述 | 格式 |
---|---|---|
FROM | 构建的新镜像基于那个镜像 | FROM centos:7 |
MAINTAINER | 镜像维护者信息 | MAINTAINER syavingc |
RUN | 构建镜像运行的shell命令、命令较长使可以使用来换行 | 格式:RUN |
CMD | 运行容器时执行的shell命令解释: CMD指定容器启动是执行的命令,每个Dockerfile只能有一条CMD命令,如果指定了多条,只有最后一条会被执行。如果你在启动容器的时候也指定的命令,那么会覆盖Dockerfile构建的镜像里面的CMD命令。 | CMD ["-c", "start.sh"]CMD ["/usr/sbin/sshd", "-D"]CMD /usr/sbin.sshd -D |
EXPOSE | 生成容器运行的服务端口 | EXPOSE 80 443 |
ENV | 设置容器内环境变量 | ENV MYSQL_ROOT_PASSWORD123456 |
ADD | 拷贝文件或者目录到镜像,如果是URL或压缩包会自动下载或者自动解压 | ADD |
COPY | 拷贝文件或目录到镜像 | 同上 |
VOLUME | 指定容器挂载点到宿主机自动生成的目录或其他容器 | VOLUME ["/usr/local/mysql"] |
USER | 指定运行容器时的用户名和UID,后续的RUN指令也会使用这里指定的用户。 | USER syavingcUSER |
WORKDIR | 为RUN、CMD、COPY、ADD设置工作目录 | WORKDIR /data/ |
ENTRYPOINT | 运行容器时执行的shell命令 | ENTRYPOINT ["/bin/bash", "-c", "/start.sh"]ENTRYPOINT /bin/bash -c '/start.sh' |
HEALTHCHECK | 健康检查 | HEALTHCHECK --interval=5m --timeout=3sCMD curl -f http://localhost/ || exit 1 |
ARG | ARG指定了一个变量在docker build的时候使用,可以使用--build-arg |
ARG |
RUN、CMD和ENTRYPOINT指令区别
1、RUN在building时运行,可以写多条
2、CMD和ENTRYPOINT在运行container时运行,只能写一条,如果写多条,最后一条生效。
3、CMD在RUN时可以被COMMAND覆盖,ENTRYPOINT不会被COMMAND覆盖,但可以指定-ENTRYPOINT覆盖
Build镜像
docker build [options] path|url|-
options:
-t --tag list #镜像名称
-f --file string #指定Dockerfile文件位置
#实例
docker build . #默认找当前目录以Dockerfile为命名的文件
docker build -t data/app -t /path/Dockerfile /path
docker build -t data/app - < Dockerfile
docker build -t data/app - < test.tar.gz
docker build -t data/app http://www.syaving.com/Dockerfile
docker build -t data/app http://www.syaving.com/test.tar.gz
基于SSH的镜像
FROM centos:6
MAINTAINER syavingc
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