eeeeeeeeeeeeeeeea

愿我们永远热泪盈眶!

0%

Dockerfile编写

Dockerfile编写

首先要理解容器和镜像的区别,镜像就类似我们平常用的虚拟机的镜像,容器是运行在镜像上的实例

要创建一个docker首先要拉取镜像,然后创建容器。

比如,我想创建一个ubuntu18的容器

1
2
sudo docker pull ubuntu:18.04  #ubuntu是系统,而18.04是tag
sudo docker run -it ubuntu:18.04 /bin/bash #启动ubuntu18.04的镜像,运行shell

pull是默认直接从DockerHub拉取镜像,如果我们规定路径,就从特定的路径下拉取。

编写Dockerfile

我们也可以使用docker build 创建一个新镜像,所以,我们需要写Dockerfile,内包含一些创建镜像的指令

FROM

Dockerfile里的第一条命令必须是FROM,FROM image或者FROM image:tag。拉取基础镜像,可以使用多次FROM

RUN

格式为RUN command或者RUN [“EXECUTABLE”,”参数1”,”参数2”…….]

前者在shell终端中运行命令。

1
RUN sudo apt install python #就是在拉取的镜像shell中执行安装python

CMD

CMD用于指定容器启动时执行的命令,每个Dockerfile只能有一个CMD命令,多个CMD命令只执行最后一个。若容器启动时指定了运行的命令,则会覆盖掉CMD中指定的命令。

EXPOSE

格式为EXPOSE port。告诉Docker服务器暴露某个端口,这样在启动容器的使用使用-P,Docker会自动分配一个端口和转发指定的端口,使用-p可以具体指定使用哪个本地的端口来映射对外开放的端口。

ENV

添加环境变量。

1
2
ENV flag VNCTF{!!!!!!!!!!!!}
RUN echo $flag

ADD

格式为ADD src dest。ADD指令还支持通过URL从远程服务器读取资源并复制到镜像中。

COPY

格式为COPY src dest。复制本地主机src目录或文件到容器的dest目录,dest不存在时会自动创建。

USER

格式为USER username。指定容器运行时的用户名或UID,后续的RUN也会使用指定的用户。

在USER命令之前可以使用RUN命令创建需要的用户。

WORKDIR

格式为WORKDIR path。为后续的命令执行规定路径

ONBUILD

在当所建的镜像作为其他新建镜像的基础镜像时所执行的命令,看例:

例如以镜像A为基础镜像时,

ONBUILD ADD ./ ./

就等价于

FROM A

ADD ./ ./

链接:https://www.cnblogs.com/yesec/p/15037784.html