`

DockerFile commands

阅读更多

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

为后续的RUNCMDENTRYPOINT指令配置工作目录。

WORKDIR /a

WORKDIR b

WORKDIR c

RUN pwd

则最终路径为/a/b/c

 

 

7.ADD

ADD source des

所有拷贝到container中的文件和文件夹权限为0755,uidgid0

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"]

创建一个挂载点用于共享目录

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics