Dockerfile常用指令记录

Dockerfile常用指令

FROM
FROM centos:latest
MAINTAINER

指定维护者信息

MAINTAINER "changhf"<chang_hf@163.com>
COPY

复制本地主机的 src到容器中的 dest ,src必须在上下文中,一般情况下,将本地主机的一个包含Dockerfile的目录中的所有内容作为上下文,如docker/install。当使用本地目录为源目录时,推荐使用 COPY 。

COPY docker/install /install
ADD
ADD jdk-8u91-linux-x64.tar.gz /opt

与 COPY 类似,从上下文复制文件到镜像, 宿主机路径可以是Dockerfile所在目录的一个相对路径,第二个参数必须是绝对路径,如果是压缩文件会被解压提取。

RUN
RUN ln -s /opt/jdk1.8.0_91 /opt/jdk
RUN /bin/bash /install/build.sh cms
RUN /bin/bash /install/downLib.sh
RUN /bin/bash /install/container_setting.sh

当命令较长时可以使用 \ 来换行。
每条 RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像。经验告诉我们,多条命令可以使用 \ 来合并成一条,这样将减小所构建的镜像的体积,原因是在镜像中每执行一条命令都会产生一个中间镜像,我们需要尽可能的减少中间镜像。
另一种写法:

RUN["/bin/bash", "-c", "echo hello"] 
CMD

支持三种格式

CMD[“executable”,”param1”,”param2”] 使用 exec 执行,推荐方式;

CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;

CMD [“param1”,”param2”] 提供给 ENTRYPOINT 的默认参数;

CMD /opt/jdk/bin/java -version

每个Dockerfile最多只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。如果用户启动容器通过dcoker run命令,将会覆盖掉 CMD 指定的命令。
Dockerfile中还有一个与CMD指令功能类似的ENTRYPOINT指令,只是后者所执行的指令不能被docker run命令覆盖。

docker run -i -t changhf/centosWithJava /bin/bash //覆盖CMD中的命令 执行/bin/bash
ENV

指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。

ENV JAVA_HOME /opt/jdk1.8.0_91/java/bin
WORKDIR

设置进入容器时的工作目录。
可以使用多个 WORKDIR 指令,后面参数是相对路径,基于前面命令指定的路径。

WORKDIR /home
WORKDIR admin
RUN pwd
则最终路径为 /home/admin
EXPOSE

指定Docker容器暴露的端口号,用于端口映射。容器内部只需对外暴露相应的端口,并映射到宿主机的端口上,外界就能随时访问容器内部的应用程序。这也正式Docker的强项:使用容器技术封装应用程序,让外界无需关注应用程序的运行环境。

docker run -d -p 50000:5000 -v ~/docker-registry:/tmp/registry registry

-p表示对容器中应用程序暴露的端口进行端口映射,左边的50000为宿主机的端口,5000为容器内部需要暴露的端口。执行该命令表示启动一个Docker Registry,可以通过127.0.0.1:50000查看是否启动成功。

EXPOSE 80
VOLUME

格式为 VOLUME [“/data”] 。设置可被挂载的数据卷。
创建一个可以从挂载宿主机文件或目录到容器的挂载点,一般用来存放数据库和需要保持的数据等。通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。

通过命令方式启动一个容器

docker run --name data -it -v /opt/data  --privileged=true docker.io/ubuntu /bin/bash

目录映射
-v后面的映射关系是宿主机路径:容器路径,可以理解为目录映射,这样就可以让所有的容器共享宿主机数据,从而只需要改变宿主机的数据源就能够影响到所有的容器数据。宿主机上的文件/目录是要提前存在的,容器里对应的文件/目录会自动创建。

数据卷权限:
–privileged=true用于开放权限,有时映射的容器路径无法访问,只需启动时加上该设置即可。
参考:Dockerfile 常用指令
数据卷的使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Dockerfile 是一种用于构建 Docker 镜像的配置文件。它包含了创建 Docker 镜像所需的指令,如安装软件、配置环境变量、复制文件等。每条指令在镜像中执行时,都会在容器的文件系统中创建一层。构建完成后,每层可以独立地进行版本管理,这样可以使用版本历史记录来追踪更改。 例如,下面是一个简单的 Dockerfile: ``` FROM ubuntu:20.04 RUN apt-get update && apt-get install -y nginx COPY index.html /var/www/html/ CMD ["nginx", "-g", "daemon off;"] ``` 该 Dockerfile 使用 `ubuntu:20.04` 作为基础镜像,并安装了 nginx。接着,它复制了一个名为 `index.html` 的文件到容器中的 `/var/www/html/` 目录,并设置了 nginx 作为启动命令。 ### 回答2: Dockerfile是用于构建Docker镜像的一种文本文件。它包含了一系列的指令和配置,用于描述镜像的构建过程。通过编写Dockerfile,可以轻松地进行镜像构建、管理和分发。 首先,Dockerfile以FROM指令开始,指定基础镜像。基础镜像是构建新镜像的起点,可以选择官方提供的镜像,也可以使用其他开发者创建的镜像。 接下来,使用RUN指令执行命令,用于运行在镜像内部的命令。这些命令可以是任何能在操作系统命令行中执行的命令,比如安装软件包、配置环境变量等。 然后,使用COPY或ADD指令将本地文件或文件夹复制到镜像内。COPY指令用于复制本地文件到镜像中的指定位置,而ADD指令除了复制文件,也可以解压压缩包。 再次,使用WORKDIR指令设置工作目录,可以理解为在复制文件后的默认工作目录。同时,使用CMD或ENTRYPOINT指令指定容器启动时要运行的命令。 最后,通过使用EXPOSE指令声明容器运行时需要监听的端口,以及使用VOLUME指令挂载容器内的目录到宿主机上,将镜像中产生的数据持久化。 总而言之,Dockerfile是一种用于定义Docker镜像构建的脚本工具。通过编写Dockerfile,可以实现镜像的自动化构建和部署,大大提高了应用的可移植性和可重复性,方便开发者在不同的环境中使用和共享应用程序。 ### 回答3: Dockerfile是一种用于定义Docker镜像的文本文件。它包含了一系列的指令和参数,用于告诉Docker如何构建和配置镜像。 Dockerfile以一行行的指令的形式组成,每个指令都会在镜像中创建一个新的镜像层。常用指令包括FROM、RUN、COPY、CMD和ENTRYPOINT等。 FROM指令用于指定基础镜像,即使用哪个镜像作为基础构建,如FROM ubuntu:latest。 RUN指令用于在镜像中执行命令,可以安装软件包、更新系统等,如RUN apt-get update && apt-get install -y nginx。 COPY指令用于将文件从主机复制到镜像中的指定路径,如COPY app.js /usr/src/app/。 CMD指令用于指定容器启动后要执行的命令,可以是应用程序的启动命令,如CMD node app.js。 ENTRYPOINT指令类似于CMD,也用于指定容器启动后要执行的命令,但ENTRYPOINT不会被覆盖,而CMD可以被docker run命令中的命令覆盖。 Dockerfile还支持一些其他的指令和参数,如EXPOSE用于指定容器监听的端口号,ENV用于设置环境变量等。 通过编写Dockerfile,我们可以轻松地定义和管理Docker镜像的构建过程。可以根据自己的需求来添加或修改指令,以满足特定的应用场景。使用Dockerfile构建镜像可以提高镜像的可复用性和可维护性,方便团队间的协作和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值