关于docker的几点小白疑问

来源:2-17 docker-compose&docker Hub使用

wykun

2019-12-19 03:14:11

1. 请问老师,您在docker中使用mysql,那么包含mysql的镜像可以在所有安装了docker的操作系统下去运行吗?在mac,windows上都可以运行吗?如果能的话,我们如果去官网下载一个mysql程序的话,每个程序下载的文件都是根据各个系统有不同的文件包
2. 我在网上看一些文章,一些笔者镜像中只有一个类似nginx,mysql之类的程序.但是也有人将整个操作系统放入镜像中么,一个程序和一个操作系统有什么区别?
3. 如果说一个镜像直接通过FROM nginx 这种方式添加一个程序,那为什么还需要将整个操作系统放入镜像呢?我添加多个我需要的程序放入镜像不是也可以吗?


写回答

1回答

Brian

2019-12-20

  1. 请问老师,您在docker中使用mysql,那么包含mysql的镜像可以在所有安装了docker的操作系统下去运行吗?

    是的,你看看docker官方宣传,不就是统一的运行环境吗?

  2. 在mac,windows上都可以运行吗?

    是的!

    如果能的话,我们如果去官网下载一个mysql程序的话,每个程序下载的文件都是根据各个系统有不同的文件包

    是相同的文件包,docker的镜像是分层的文件系统,里面记录了程序运行的相关环境及配置

  3. 我在网上看一些文章,一些笔者镜像中只有一个类似nginx,mysql之类的程序.但是也有人将整个操作系统放入镜像中么,一个程序和一个操作系统有什么区别?

    操作系统里面会有完整的资源分配 + 占用,这些分配的资源是独立的。而在docker中,统一由docker进行分配与管理,docker是更小的单元,它只提供程序的运行的环境,可以分开,也可以合并在一个docker容器中,但是通常不建议这么做。

  4. 如果说一个镜像直接通过FROM nginx 这种方式添加一个程序,那为什么还需要将整个操作系统放入镜像呢?我添加多个我需要的程序放入镜像不是也可以吗?

    这个很容易从系统的指令集的角度去理解,我们所有的程序其实都是基于操作系统的,即使再小的容器也会有一个基础的镜像,这个镜像要么基于debian要么基于alpine(类似Linux),都是提供最最低层的环境支持,包括系统的指令集。这里的指令集,你就当成是一个字典,可以让程序与硬件进行通话,明白彼此想要做什么。

GET到了吗?

1

0 学习 · 1842 问题

查看课程