首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FreeBSD监狱用户的Docker简介-我应该如何以及应该如何用systemd启动容器?

FreeBSD监狱用户的Docker简介-我应该如何以及应该如何用systemd启动容器?
EN

Stack Overflow用户
提问于 2018-11-04 14:46:25
回答 1查看 486关注 0票数 1

为了提高可靠性,我们目前正在将机房服务器迁移到云端,但我们的提供商没有FreeBSD选项。虽然我准备为部署支付和上传自定义系统映像,但是我想学习如何使用Docker启动应用程序系统实例。

FreeBSD监狱中,我所做的是将整个base.txz目录层次结构作为系统内容提取到/usr/jail/apppkg -r /usr/jail/app install apache24 php perl中;然后将/etc/jail.conf配置为在监狱中启动/etc/rc脚本。

我遵循了官方的FreeBSD手册,这是我目前为止所做的工作。

但道克完全是另一个世界。

要构建Docker映像,有两个选项: a)从tarball导入,b)使用Dockerfile。后者允许您指定一个"CMD",这是要运行的默认命令,但是

Q1。为什么不能从a)获得?

Q2。像"CMD ENV“这样的信息存储在哪里?在照片里?在集装箱里?

Q3。如何在容器中启动GNU/Linux系统?我只是运行systemd并让它从配置中找出其余的部分吗?我需要给它传递一些特殊的论点或恩典吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-04 23:25:08

您应该将Docker容器看作是围绕单个运行的守护进程进行的打包。理想的Docker容器只运行一个进程和一个进程。尤其是Systemd是重量级和侵入性的,因此在Docker容器中运行是非常困难的;如果您需要容器中的多个进程,那么像supervisord这样的轻量级init系统可以为您工作,但这通常是一个例外,而不是标准的打包。

Docker有一个关于建立和运行自定义映像的官方教程,值得一读;这是Docker的一个非常典型的用例。特别是,最佳实践是编写一个Dockerfile,该文件描述如何构建映像并将其签入源代码管理。如果可以的话,容器应该避免拥有持久的数据(将所有东西存储在外部数据库中是理想的);如果您更改了一个图像,您需要删除并重新创建基于它的任何容器。如果本地数据不可避免,那么Docker卷或绑定挂载将允许您将数据“保存在”容器之外。

虽然Docker还有其他几种创建容器和图像的方法,但它们都不是可复制的。您应该避免使用importexportcommit命令;只有在不能使用或设置Docker注册中心并被迫通过tar文件在系统之间移动图像时,才应该使用saveload

关于你的具体问题:

Q1。我怀疑创建映像的非docker build路径不容易让您指定像CMD这样的东西的最佳原因是实现细节:如果您查看图像的docker history,您将看到CMD最终成为它自己的层。不用担心,可以使用Dockerfile。

Q2。默认的CMD、任何集合ENV变量和其他相关元数据都存储在文件系统树旁边的映像中。(一旦启动容器,它就有一个普通的Unix进程树,初始进程为pid 1)。

Q3。您不需要“在容器中启动系统”。通常在容器中运行一个进程或服务,并独立地管理它们的生命周期。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53142007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档