🐦Docker镜像制作

制作镜像有两种方式,通过修改现有容器,将之手动构建为镜像,通过Dockerfile文件,批量构建为镜像。

docker commit

#拉取基础镜像
docker pull centos:centos7
 
#运行并安装内容
docker run -it centos:centos7 bash
 
#提交为镜像
docker commit -a "centos7 system" -m "install nmap" 容器ID giao/centos7-pte:v1
 
#从制作的镜像中启动容器
docker run -it --name centos-pte giao/centos7-pte:v1 bash

Dockerfile

Dockerfile文件格式

  • 指令不区分大小写,但惯例使用大写;

  • #作为注释;

  • 一行只支持一条指令,每条指令可以携带多个参数;

  • 指令按照文件顺序从上至下执行;

FROM

  • 指定基础镜像

LABEL

  • 指定镜像元数据

RUN

  • 执行shell命令

  • 每一个RUN指令都会建立一个镜像层,所以尽可能合并成一条。

ENV

  • 设置环境变量

  • 定义的环境变量会被持续的指令(ADD,COPY,RUN)进行引用。

COPY

  • 复制文本

  • 必需是Dockerfile所在目录的相对路径

  • 如果是目录,自身不会被复制

ADD

  • 复制和解包文件

CMD

  • 容器启动命令

  • 只能有一个CMD用来指定启动容器时默认执行的一个命令

  • 每个Dockerfile只能有一条CMD命令,如果有多条会执行最后一条

  • 如果启动时指定命令,将会覆盖CMD指定命令

VOLUME

  • 匿名卷

  • 用于存放数据库和需要保持的数据

  • VOLUME实现是匿名数据卷,无法指定宿主机路径和容器目录挂载关系

EXPOSE

  • 暴露端口

  • 即声明容器打算使用什么端口,不会自动端口映射,需要配合docker run -P

WORKDIR

  • 指定工作目录

USER

  • 指定当前用户

  • 须事先建立好,否则无法执行

Last updated

Was this helpful?