V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anonymoustian
V2EX  ›  Docker

docker 镜像一定是系统吗?

  •  
  •   anonymoustian · 2016-11-09 18:14:47 +08:00 · 4686 次点击
    这是一个创建于 2967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在网上看的很多例子,都是下载一个 Ubuntu 或者 CentOS,然后再于此之上构建应用 打包镜像

    我想问一下 Docker 镜像一定要是系统吗?

    如果不是系统,假设只是一个 Apache 之类的,那么运行的原理又是如何呢?

    8 条回复    2016-11-23 14:50:59 +08:00
    rrfeng
        1
    rrfeng  
       2016-11-09 18:17:28 +08:00
    不是。

    去看文档啊,原理很清楚的。
    9hills
        2
    9hills  
       2016-11-09 18:18:12 +08:00
    不能,必须得是一个 rootfs
    bdbai
        3
    bdbai  
       2016-11-09 19:47:24 +08:00 via Android
    “只是一个 Apache ”
    你去翻 Dockerfile ,肯定有一个基础镜像的。比如 nginx 有基于 Ubuntu 的普通镜像,也有基于 Alpine 的轻量镜像。

    顺便安利 Alpine ,基础镜像只有不到 10 MB 。
    Bardon
        4
    Bardon  
       2016-11-09 20:07:34 +08:00
    linux 下,所谓的 docker 镜像,只是采用的发行版的包管理,其只是一个容器,没有 kernel ,所有进程由外部的 linux 内核驱动
    mac & win 下,则由虚拟机中的 linux 内核来驱动
    Contextualist
        5
    Contextualist  
       2016-11-09 20:24:07 +08:00 via iPad
    有一个神奇的东西叫 FROM scratch
    https://docs.docker.com/engine/userguide/eng-image/baseimages/
    简单来说就是一个空镜像,各种系统的基础镜像都是基于它写的。对于某些程序,可以 FROM scratch ,然后再 ADD 这个程序的没有系统依赖的二进制可执行文件,这样得到的镜像只有这个二进制文件的大小。
    anonymoustian
        6
    anonymoustian  
    OP
       2016-11-10 20:01:25 +08:00
    @Bardon 这样的话 docker 是不是要受限于本地的 linux 操作系统版本?是内核版本还是发行版本呢?
    Bardon
        7
    Bardon  
       2016-11-10 20:45:48 +08:00
    @anonymoustian docker 通过 namespaces 来进行各种隔离,包括 kernel 的 pid 、 net 、 ipc 、 mnt 、 uts 等
    这些官方都有资料,为什么不去看下呢
    keyfunc
        8
    keyfunc  
       2016-11-23 14:50:59 +08:00
    docker 基于 lxc
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5324 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:08 · PVG 15:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.