使用dockerfile 构建镜像

# 使用dockerfile 构建镜像

新建文件夹 workdi使用dockerfile 构建镜像r,在文件夹中新建 Dockerfile 文件
此时 workdir 即为构建上下文,在构建镜像时,Docker会将构建上下文和上下文中的目录和文件 上传到 Docker deamon 中。
要包含到镜像中的文件要放到上下文中,之后Dockerfile中对文件的复制拷贝是对上下文中的文件。

Dockerfile基本实例如下,之后执行docker build命令即可完成镜像构建。

# dockerfile version 1.0

# 基础镜像
From node

# 拷贝文件到镜像中
COPY ./ /code/

# 作者信息
LABEL maintainer="[email protected]"

# 工作目录
WORKDIR /code

# print help info, while not input cmd 
CMD ["/bin/sh", "-c", "cat README.md"]

docker bulid

docker build -t="test/test2:v2" .

Dockerfile 中的命令

https://docs.docker.com/engine/reference/builder/

基本语句


# 第一条指令指定一个基本的镜像源,从公共库拉取一个镜像源。并且From必须是第一行。
From
FROM <image> 
FROM <image>:<tag> 
FROM <image>@<digest> 

# 设置标签,采用键值对的形式。
LABEL
LABEL <key>=<value> <key>=<value> <key>=<value> 

# 运行类linux 命令。
RUN
RUN <command> 
RUN ["executable", "param1", "param2"] 


# 用来指定容器的监听端口。
EXPOSE
EXPOSE <port> [<port>...] 
# 因为端口还和宿主机相关,不建议直接在镜像开端口而是在生成实例时使用命令行指定端口


# 设置环境变量的键值。
ENV
ENV <key> <value> 
ENV <key>=<value> 

# 设置当前工作路径
WORKDIR
WORKDIR /path/to/workdir 

# 复制文件 
# ADD、COPY
COPY <src> <dest> 
ADD <src> <dest>
# ADD在和COPY相同的基础上,增加: 
# 1、ADD 允许 <src>是一个 URL。 
# 2、ADD 的<src>是一个压缩格式文档<src>将会解压缩复制。 
# 虽然ADD 比COPY功能多,但是还是推荐使用COPY作为文件的复制,因为ADD的行为有些越界,下载会使用CURL以及make命令。 
# 所以使用 COPY除非你确信你需要 ADD。


# CMD 与 Entrypoint
CMD ["executable","param1","param2"] #(运行一个可执行的文件并提供参数) 
CMD command param1 param2 #(以”/bin/sh -c”的方法执行的命令) 
ENTRYPOINT ["executable", "param1", "param2"] 
ENTRYPOINT command param1 param2 #(以”/bin/sh -c”的方法执行的命令) 
## 使用数组参数的时候,docker会严格依照数组执行,而直接传参docker会调用/bin/sh -c,建议使用 ["/bin/sh", "-c", "cat README.md"] 的方式,避免意外。


# CMD 与 Entrypoint的区别: 
# 1、DockerFile应至少指定一个CMD命令或Entrypoint。 
# 2、一个Dockerfile只能有一个CMD/ENTRYPOINT指令,如果有超过一个CMD将只启动并有效最后一个。 
# 3、CMD在运行时会被command覆盖, ENTRYPOINT不会被运行时的command覆盖。 故可以使用 CMD来设置默认启动命令。
# 4、如果在Dockerfile中同时写了entrypoint和cmd则,docker在build过程中会将cmd中指定的内容作为entrypoint的参数。 
# 5、需要初始化运行多个命令,彼此之间可以使用 && 隔开

## 注意
# 开始时RUN apt-get update 最后要清除apt 的缓存并移除 /var/lib/apt/lists 文件下的内容,使得镜像文件更精简。

猜你喜欢

转载自blog.csdn.net/lucifly/article/details/80092067