极客Docker学习笔记Dockerfile指令(10)

Docker镜像原理

  • Docker镜像是由特殊的文件系统叠加而成
  • 最底层是bootfs,并使用宿主机的bootfs
  • 第二层是root文件系统rootfs,称为base image
  • 然后在往上可以叠加其他的镜像文件
  • 统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
  • 一个镜像可以放下另一个镜像的上面,位于下面的镜像称为父镜像,最底层的镜像称为基础镜像。
  • 当从一个镜像启动容器时,docker会在最顶层加载一个读写文件系统作为镜像。

镜像制作
1,容器转为镜像

docker commit 容器id 镜像名称:版本号
#压缩镜像文件
docker save -o 压缩文件名称 镜像名称:版本号
#解压缩
docker load -i 压缩文件名称

注意:镜像不能传输,压缩文件可以传输
2,dockerfile

  • dockerfile是一个文本文件
  • 包含了一条条指令
  • 每一条指令构建一层镜像,基于基础镜像,最终建成一个新的镜像
  • 对于开发人员:可以为开发团队提供一个完全一致的开发环境
  • 对于测试人员:可以直接拿开发室所够贱的镜像或者通过dockerfile文件构建一个新的镜像开始工作了
  • 对于运维人员:在部署时,可以实现应用的无缝移植

Dockerfile指令(上)

#First Dockerfile
FROM ubuntu:14.04
MAINTAINER becomehero
RUN apt-get update
RUN apt-get install nginx
#RUN apt-get update && apt-get install nginx
EXPOSE 80

#Comment 注释信息
INSTRUCTION argument指令是以大写指令名开始,后面是参数

  • FROM
from <IMAGE>
from <IMAGE>:<TAG>
#必须是已经存在的镜像
#基础镜像
#dockerfile中第一条非注释命令
  • MAINTAINER
MAINTAINER <name>
#指定镜像的作者信息,包含镜像的所有者和联系信息
  • RUN
    指定当前镜像中运行的命令

  • RUN (shell模式)
    /bin/sh -c command
    RUN echo hello

  • RUN [“executable”,“param1”,“param2”] (exec模式)
    可以指定其他形式的shell来运行
    RUN ["/bin/bash","-c",“echo hello”]
    注意:每一个run指定都会在当前镜像的上层创建一个新的镜像来运行指定的命令。

  • EXPOSE

EXPOSE […]
指定运行该镜像容器使用的端口,可以指定一个或多个端口
构建指定了,运行时也还是要指定$ docker run -p 80 …
Dockerfile指令(下)

  • CMD
  • ENTERYPOINT
  • ADD
  • COPY
  • VOLUME
  • WORKDIR
  • ENV
  • USER
  • ONBUILD

CMD
CMD command param1 param2(shell模式)
CMD [“executable”,“param1”,“param2”] (exec模式)
CMD [“param1”, “param2”] (作为ENTRYPOINT指令的默认参数)
注意:RUN是在容器构建时运行,CMD容器运行时运行。docker run 如果指定了容器运行时的命令,CMD指令将被覆盖

ENTRYPOINT
不会被覆盖

ADD/COPY 源文件 目标文件
ADD 包含类似tar的解压功能
如果单纯复制文件,docker推荐使用COPY

VOLUME ["/data"]
WORKDIR /path/to/workdir#通常使用绝对路径

ENV
USER daemon(不指定默认使用root)
USER nginx#使用nginx用户
USER user
USER user:group
USER user: gid

UNBUILD [INSTRUCTION]
镜像触发器
当一个镜像被其他镜像作为基础镜像时执行
会在构建实插入指令

案例:自定义centos7镜像,要求:
1,默认登录路径为/usr
2,可以使用vim

#定义一个父镜像
FROM centos7
#定义作者信息
MAINTAINER test
#执行安装vim
RUN yum install -y vim
WORKDIR /usr
CMD /bin/bash

案例:定义dockerfile,发布springboot项目

docker服务编排

  • 服务编排概念
  • docker compose概述
  • 案例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值