【问题标题】:Docker containers as Linux services?Docker 容器作为 Linux 服务?
【发布时间】:2015-12-16 11:03:12
【问题描述】:

我刚刚创建了一个安全的 Docker Registry 并在远程 VM 上运行它(使用 docker run ...)。然后我运行docker ps 并看到它实际上正在运行。我退出了机器,然后通过 SSH 重新登录。我再次运行 docker ps 并验证它在我退出 SSH 会话时“幸存”。

这让我想知道:Docker 容器真的可以作为 Linux 服务运行吗?如果不是,有没有办法让它们像传统的一样运行(upstart- 或 systemd-based)服务?这样做有什么理由/优点吗?

【问题讨论】:

    标签: linux service docker daemon docker-registry


    【解决方案1】:

    docker 引擎作为守护进程运行。
    这在“Host integration”中提到:

    从 Docker 1.2 开始,restart policies 是内置的 Docker 机制,用于在容器退出时重新启动容器。如果设置,将在 Docker 守护程序启动时使用重启策略,这通常发生在系统启动之后。重启策略将确保链接的容器以正确的顺序启动。

    如果重启策略不适合您的需求(即,您有依赖 Docker 容器的非 Docker 进程),您可以使用像 upstartsystemdsupervisor 代替。


    顺便说一句,这涉及到(当容器使用某些选项运行时)一些安全问题:请参阅 issue 14767issue 6401

    当涉及到网络堆栈时,容器(带有--net host 选项)是主机,因此容器可以访问主机上运行的任何服务。碰巧你以这种方式与新贵(和其他人)交流。

    这个特性是一个运行时唯一的选项,就像--privileged 标志一样,因此图像不能请求这个,它必须在运行时显式设置。

    【讨论】:

      猜你喜欢
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2018-06-01
      相关资源
      最近更新 更多