dockerfile demo

dockerfile demo


什么是 Dockerfile

一个构建镜像的文本文件,包含了一条条构建镜像所需的指令,类似脚本。

dockerfile 指令

• FROM          #需定制的镜像,定制的镜像都是基于 FROM 的镜像,例如:FROM ubuntu:latest,后续的操作都是基于 ubuntu:latest。
# 格式为 FROM <image>或FROM <image>:<tag>。
#第一条指令必须为FROM,如果需创建多个镜像,可以使用多个FROM

• MAINTAINER    #指定维护者信息。
#格式为 MAINTAINER <name>

• RUN 			#执行指定的的命令,并提交为新的镜像。
#格式为 RUN <command> 或 RUN ["executable", "param1", "param2"]。

• CMD			#指定启动容器时执行的命令,如果用户启动容器时候指定了运行的命令,会覆盖掉 CMD 指定的命令。
				#每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。
#三种格式
#CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
#CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
#CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;

• EXPOSE		#将容器需要暴露的端口号告诉docker,启动容器是需要通过-P参数,docker主机会自动分配一个端口转发到指定端口。
#格式为EXPOSE <port> [<port>...]


• ENV 			#设定一个环境变量,后续会被RUN指令使用,并在容器运行时保持。
#格式为 ENV <key> <value>

• ADD 			#该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。
#格式为 ADD <src> <dest>。

• COPY          #复制本地主机的 <src>(为 Dockerfile 所在目录的相对路径)到容器中的 <dest>。
#格式为 COPY <src> <dest>。


当使用本地目录为源目录时,推荐使用 COPY。
• ENTRYPOINT	#配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。

#两种格式:
#ENTRYPOINT ["executable", "param1", "param2"]
#ENTRYPOINT command param1 param2(shell中执行)。

• VOLUME		#创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
#格式为 VOLUME ["/data"]。

• USER			#指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要临时获取管理员权限可以使用 gosu,而不推荐 sudo。
#格式为 USER daemon

• WORKDIR		#为后续的 RUN、CMD、ENTRYPOINT 指定配置工作目录。可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。如:
WORKDIR /lu
WORKDIR mi
WORKDIR ya
RUN pwd
最终会路径为 /lu/mi/ya
#格式为 WORKDIR /path/to/workdir。


• ONBUILD		#配置当所有的镜像作为其他新创建镜像的的基础竟像时,所执行的指令。
#格式为 ONBUILD [INSTRUCTION]。

编写完dockerfile之后,可通过docker build命令来创建镜像。

build go demo镜像

基于共golang:1.13的demo镜像
dockerfile

FROM golang:1.13
WORKDIR /app
COPY hello.go app.go
RUN go build app.go
CMD ./app

路径如下 :
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yu51J0ZX-1586167515923)(./1586157633402.png)]

go build 构建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zFXX7VIX-1586167515924)(./1586157876580.png)]

run
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hh4xdAcN-1586167515926)(./1586157915696.png)]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值