dockerfile构建镜像

一、dockerfile常用指令

Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。
一般地,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

dockerfile指令
基础镜像信息FROM
维护者信息MAINTAINER
镜像操作指令RUN、COPY、ADD、EXPOSE等
容器启动时执行指令CMD、ENTRYPOINT

Dockerfile文件的第一条指令必须是FROM,其后可以是各种镜像的操作指令,最后是CMD或ENTRYPOINT指定容器启动时执行的命令。

FROM:
构建的新的镜像是基于那个镜像,例如:centos:6

MAINTAINER:
镜像维护者姓名或者邮箱,例如:zhangshuaishuai

RUN:
容器运行时执行的shell命令,例如:

CMD [“-c”, “/start.sh”]
CMD ["/usr/sbin/sshd", "-D"]
CMD /usr/sbin/sshd –D

#RUN在building时运行,可以写多条
#CMD在run时可以被COMMAND覆盖,ENTRYPOINT不会被COMMAND覆盖,但可以指定—entrypoint覆盖

EXPOSE:
声明容器的服务端口,例如:80 443

ENV:
设置容器内部环境变量,例如

ENV MYSQL_ROOT_PASSWORD 123456

ADD:
拷贝文件或目录到镜像文件,如果是URL或压缩包会自动下载解压

ADD <src>… <dest>
ADD [“<src>”,… “<dest>”]
ADD https://xxx.com/html.tar.gz /var/www/html
ADD html.tar.gz /var/www/html

#将指定的<src>复制到容器<dest>中

COPY:
拷贝文件或目录到镜像,不具备解压和自动下载的功能其它和ADD类似,例如:

COPY ./start.sh /start.sh

ENTRPYPOING:
运行容器是执行的shell命令,例如:

ENTRYPOINT [“/bin/bash", “-c", “/start.sh"]
ENTRYPOINT /bin/bash -c ‘/start.sh’

#配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖
#每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效

VOLUME:
指定容器挂载点到宿主机自动生成目录或其它容器,例如:

VOLUME ["/var/lib/mysql"]

USER:
为run、cmd、entrypoint执行命令指定运行用户

USER <user>[:<group>] or USER <UID>[:<GID>]
例如:USER zhangshuaishuai

#指定运行容器时的用户名或 UID

WORKDIR:
为run、cmd、entrypoint、copy、add设置工作目录,例如:WORKDIR /data

#可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例如
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
#则最终路径为 /a/b/c。

HEALTHCHECK:

健康检查:
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1

ARG:
在构建镜像时指定一些参数,例如:

FROM centos:6
ARG user # ARG user=root
USER $user
# docker build --build-arg user=zhangshuaishuai Dockerfile .

二、创建镜像
编写完Dockerfile文件后,通过运行docker build命令来创建自定义的镜像。

Build镜像命令:

[root@localhost ~]# docker build --help

Usage:	docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

#常用选项:
-t,--tag list		#镜像名称
-f,--file string	#指定dockerfile文件位置

实例:

docker build . # 默认找当前目录以Dockerfile为命名的文件
docker build -t shykes/myapp .
docker build -t shykes/myapp -f /path/Dockerfile /path
docker build -t shykes/myapp - < Dockerfile
docker build -t shykes/myapp - < context.tar.gz
docker build -t shykes/myapp http://www.example.com/Dockerfile
docker build -f shykes/myapp http://www.example.co/contex.tar.gz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值