Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取
Dockerfile
中的指令自动生成映像,下面为大家分享一下Dockerfile基本使用方法。
Dockerfile分为四部分
基础镜像信息
维护者信息
镜像操作指令
容器启动时执行指令
格式为from或者FROM:
第一条指令必须为FROM指令。并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)
示例:
FROMcentos:6.6
MAINTAINER
格式为MAINTAINER,指定维护者信息
示例:
MAINTAINERBreezeYan
格式为RUN或者RUN[,,]
前者将在shell终端中运行命令,即/bin/sh -c;后者使用exec执行。每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像。当命令较长时,可以使用\来换行。 示例:
RUN[,,]CMD支持三种格式:CMD[,,]CMDparam1param2#在/bin/sh中执行,提供给需要交互的应用CMD[,]
指定启动窗口时执行的命令,每个Dockerfile只能有一条CMD命令。如果指定了多条,只有最后一条会被执行。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令
示例:
格式为EXPOSE[...]
告诉docker容器暴露的端口,供互联系统使用。在启动容器时需要通过-P,docker主机会自动分配 一个端口转发到指定的端口,使用-p,则可以具体指定哪个本地端口映射过来。
示例:
EXPOSE2280
格式为ENV
指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持
示例:
ENVTZENVTERMxterm
格式为ADD

该命令将复制指定的到容器中的。其中可以是dockerfile所在目录的一个相对路径(文件或目录),也可以是一个URL,还可以是一个tar文件(自动解压为目录)
示例:
ADDaliyun-mirror.repo/etc/yum.repos.d/CentOS-Base.repoADDaliyun-epel.repo/etc/yum.repos.d/epel.repo
格式为COPY
与ADD类似,复制本地主机的为容器中的,目标路径不存在时,会自动创建。当使用本地目录为源目录时,推荐使用COPY
ENTRYPOINT
格式:ENTRYPOINT[,,]ENTRYPOINTparam1param2(shell中执行)
与CMD类似,配置容器启动后执行的命令,但不会被docker run 提供的参数覆盖。每个dockerfile只能有一个ENTRYPOINT,如果指定了多个,只有最后一个被执行
格式为VOLUME[]
创建一个挂载点,类似于容器启动时使用的-v选项,只不过这里不能指定挂载到宿主机的位置。默认为/var/lib/docker/vfs目录下。一般用来存放数据库和需要保持的数据。
格式为USERdaemon
指定运行容器时的用户名或UID,后续的RUN也会使用指定用户。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户。要临时获取管理员权限时可以使用gosu。
格式为WORKDIR/path/to/workdir
为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。
示例:
WORKDIR/aWORKDIRbWORKDIRc
格式为ONBUILD[INSTRUTION]
配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。
例如dockerfile使用如下内容创建了镜像A:
...ONBUILDADD./app/srcONBUILDRUN/usr//bin/python-build--dir/app/src...
如果基于镜像A创建新的镜像时,新的dockerfile使用FROM A指定基础镜像时,会自动执行ONBUILD指令内容,等价于在后面添加了两条指令。
ADD./app/srcRUN/usr//bin/python-build--dir/app/src
#mysoft/centos:6.6为新生成的镜像的标签,/tmp/dockerfile/centos6为dockerfile所在路径。
dockerbuild-tmysoft/centos:6.6/tmp/dockerfile/centos6
mac下docker安装目录在哪
Dockerfile 中 ADD 和 COPY 命令不能使用绝对路径,只能使用相对路径。 这点在官方文档中说的比较清楚 如果不是非要把文件 build 到 image里,可以通过 run container 的时候通过 -v 参数将 host 文件或目录加载/共享到 container 里。
如何进入docker的node镜像
1.什么是docker?Docker allows you to package an application with all of its dependencies into a standardized unit for software 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。 几乎没有性能开销,可以很容易地在机器和数据中心中运行。 最重要的是,他们不依赖于任何语言、框架包括系统。 Docker 的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。 在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。 用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。 下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。 (图片来自Docker官方网站)简单入门Docker can build images automatically by reading the instructions from a Dockerfile. A Dockerfile is a text document that contains all the commands you would normally execute manually in order to build a Docker image. By calling docker build from Your terminal, you can have Docker build your image step by step, executing the instructions 通过读取Dockerfile文件中的指令自动构建镜像。 Dcokerfile是一个文本文件,它包含了构建镜像所需要执行的全部命令。 执行docker build命令,Docker就会按照文档执行并最终创建一个镜像。 (这段话是翻译上面那段话的%>_<%)。 Dockerfile支持支持的语法命令如下:INSTRUCTION argument指令不区分大小写。 但是,命名约定为全部大写。 Dockerfile都必须以FROM命令开始。 FROM命令会指定镜像基于哪个基础镜像创建,接下来的命令也会基于这个基础镜像(译者注:CentOS和Ubuntu有些命令可是不一样的)。 FROM命令可以多次使用,表示会创建多个镜像。 具体语法如下:
linux 操作系统 常用 命令 有哪些?
一. 启动,关机,登入,登出相关命令 滇ICP备2022003334号-8