DockerFile commands 博客分类: docker dockerfile command
DockerFile command
1.Docker忽略大小写,但是约定关键字大写
2.# docker文件注释
3.FROM
FROM imagename(:latest) OR
FROM imagename:specific version(tag)
FROM命令,是用于描述该dockerfile的基础依赖镜像,写在最前
如:
FROM centos:centos7
4.MAINTAINER 标识dockerfile文件的所有者和维护者
5.RUN
RUN 命令:
在当前镜像中旅,执行相应的命令,将结果作用于该镜像(immediate image)
在docker中每个命令执行结果都是立即产生新的镜像,将前一个temp删除,当前命令总是在最新镜像上执行。
如:
RUN cd /usr/share/html
RUN npm install
以上两个命令,本意是进入目录html下,安装npm,但是第二条并没有在html目录下执行,而是从新在/bin/sh下。如果想达到以上目的只能在同一个RUN下执行。亦或者都将目录拷贝到根目录下,不过这样会造成文件目录混乱。
DockerFile多个RUN同时执行使用 && 连接符。
RUN /bin/sh -c 'cd /usr/share/nginx/html/ && npm install'
所有的RUN命令都是在shell中执行
RUN <command> (这个命令运行一个shell中 - '/bin/sh -c')
等于:
RUN /bin/sh -c ‘command’
所有以上:
RUN /bin/sh -c ‘cd /usr/share/html && npm install’
6.WORKDIR
Dockerfile中,默认执行目录都是在/bin/sh,想在其他目录,需要WORKDIR /usr/share/html
为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
则最终路径为/a/b/c
7.ADD
ADD source des
所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0
RUN chmod a+x /apps/adf/*
RUN chmod 777 /apps/adf/work
8.COPY
COPY source des
COPY是直接copy不做任何其他操作,与ADD类似,ADD多了自动解压。
9.ENV
设置镜像环境变量,在颈项环境变量中,可以直接使用主机已经定义的环境变量
ENV PATH /usr/local/bin:$PATH
10.CMD 、 ENTRYPOINT
想在CMD命令中,运行多个命令
CMD nohup /bin/sh -c ‘npm start && node ./server/server.js’
或 ENTRYPOINT执行一个脚本文件:
11.ENTRYPOINT
ENTRYPOINT [“./entrypointname.sh”]
entrypoint.sh文件如下:
// entrypoint.sh
nohup npm start &
nohup node ./server/server.js &
ENTRYPOINT/CMD,一般两者可以配合使用,比如:
ENTRYPOINT ["/usr/sbin/sshd"]
CMD ["-D"]
** 在Docker daemon模式下,无论你是使用ENTRYPOINT,还是CMD,最后的命令,一定要是当前进程需要一直运行的,才能够防容器退出。***
12.USER
指定运行时的用户名或UID,后续的RUN也会使用指定的用户。
当服务不需要管理权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户
13.EXPOSE
容器内部服务开启端口,启动容器时候需要做主机端口映射
14.VOLUME 命令
VOLUME ["<mountpoint>"]
如:
VOLUME ["/data"]
创建一个挂载点用于共享目录
上一篇: keepalived+mysql主主双备