Docker 定制镜像
一、基本结构
尽管docker会提供一些最简洁的常用到的镜像,然而在实际的工作中我们需要使用与自己的工作环境相匹配的镜像,这就需要我们自己定制自己的镜像,docker提供了Dockerfile,让我们自己定制镜像,我们可以通过Dockerfile方式,定制专属镜像。
一般而言,Dockerfile分成四个部分: 基础镜像信息,维护者信息,镜像操作指令,容器启动执行指令
二、命令介绍
FROM --指定基础镜像
MAINTAINER -- 指定维护者信息
RUN -- 镜像操作指令
--格式1: RUN <command> 此格式将在shell终端中运行命令,即/bin/sh -c
--格式2:RUN ["executable","param1","param2"],此格式可以指定其他终端执行命令
当命令较长的时候,可以使用 ‘\’来换行
CMD --指定启动容器时执行的命令,每个Docker只允许有一个CMD,如果有多个CMd,默认执行最后一条CMd ,CMD支持三种格式
--格式1:CMD command param1 param2 在/bin/sh中执行,提供给需要交互的应用
--格式2:CMD ["executable","param1","param2"],使用exec格式,也是推荐的方式
--格式3:CMD ["param1","param2"],提供给ENTRYPOINT的默认参数
EXPOSE
--格式:EXPOSE <port> <port>
此命令会告诉docker服务器该容器暴露的端口,供外部使用
ENV
--指定一个环境变量,会被后续的run指令使用,并在容器中保持运行
![](https://common.cnblogs.com/images/loading.gif)
ADD
-- 格式: ADD <src> <dest>
COPY
--格式 :COPY <src> <dest>
ENTRYPOINT
此命令配置容器启动后的执行命令,并且不可被docker run 提供的参数所覆盖
--有如下两种格式
ENTRYPOINT ["executable","pram1","pram2"]
ENTRYPOINT command pram1 pram2 (shell中执行)
VOLUME
创建一个或者可以从本地主机或者其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
USER
指定用户
WORKFIR
为后续的RUN,CMD,ENTRYPOINT指令配置工作目录
ONBUILD
三、创建镜像
编写完成DOckerfile文件之后,就可以使用docker build来编译镜像。
命令格式:docker run [选项] 路径
该命令会自动去读取所选路径下的Dockerfile,并将该路径下的所有内容都发送给Docker服务端,有服务端来创建。因此一般建议编译路径下除了DOckerfile文件之外没有其他文件
另外,可以通过.dockerignore文件(每行添加一条匹配模式),来让Docker忽略路径下的文件
和目录