Posted in: IT

docker是什么

姐妹篇:conda是什么

我也是想追赶时髦的人:2019年追了Python/Flask,两个月前追了conda,上周开始追了docker。docker的基础教程网上自然也有,本文不介绍。本文还是讲这个问题:docker到底有什么用?

Conda解决了这个问题:在老服务器(例如CentOS 6)上安装Python 3.8、R 4.0、Perl 5.26等不同版本的软件,而且是在没有root权限的情况下。但是Conda不能帮你去设置软件,比如某个软件需要读取并设置指定的配置文件、需要设置端口号、配置HTTP服务器等,都得手工操作(正是,说的就是那些web端的软件:web app、web 数据库网站,等等)。

如果一个软件仅仅是在终端运行命令、添加几个参数、输出结果,那docker确实没啥用。但如果说的是上述那种需要繁琐配置的,docker就派上用场了。

我的github里面有个Python Package就完美地反映了这种情形:

  1. 它依赖其他一些Python包,这可以使用pip解决。
  2. 它还依赖一些第三方的软件,这时pip无能为力,需要用conda。
  3. 如果需要启动它的web界面,则在下载之后需要配置网络路径和web设置,这时conda也无能为力。此时docker上场。

目前搭了2个docker:作物育种数据库Breedbase和RSS服务器Huginn。前者是面试被问到了,后者则是不想每次都去刷那些丑陋的政府网页而自己搭设了RSS。

有意思的是,网上经常把docker描述成“开箱即用”,而我刚运行时都失败了。实际上大部分docker web app在run时都要经历一系列初始化过程,时间也许很长。Huginn还好,大约过个5分钟左右就可以用了。Breedbase真是惨了,失败了十几次之后我发现原来是在初始化过程中有个过程是git clone一些库然后安装,而那段时间github被墙了。

难道还想给位于Linux Server中的docker配置科学上网?我确实也想过,但折腾不成功啊!

最后的workaround:自己先通过github镜像把要用的库下载好,然后修改npm的package.json,改成local安装。然后手动重新build。

就这样,所谓的docker“开箱即用”,因为这个原因足足折腾了一整个周末。😳

Comments (10) on "docker是什么"

    1. docker对资源消耗量还是比较大的(虽然属于轻量级虚拟机),我的做法是:在公司的服务器(硬件好)上搭docker,然后frp到家里的路由器(有公网IP)来进行外网访问。

      对了,docker现在基本上都是搭web应用的吧?没有用docker做命令行程序的吧 ❓

    1. 过奖,主要是偷懒不想写教程,于是就改科普,反正入门教程网上一找一大堆

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注