如果重新启动机器,请避免关闭容器

时间:2018-04-06 14:14:43

标签: macos docker persist

我有一个OSX,我想知道是否可以在操作系统重新启动之间保留容器。我目前正在使用我的机器托管我的代码并使用它来安装Node.js和Golang等平台或语言。我想在容器内创建我的环境,并将我的代码保留在其中,但如果我的机器重新启动,则不会丢失容器。可能吗?我找不到任何相关的东西。

1 个答案:

答案 0 :(得分:2)

  1. 如果您的系统重启,您的容器永远不会被杀死,除非您使用--rm启动容器,该容器将在停止时删除。
  2. 如果您使用docker run -dit --restart always my_container
  3. 启动容器,您的容器将自动重启
  4. 根据"也将我的代码留在其中" 这个问题值得关注,有两种解决方案可以避免数据或代码丢失以及任何其他配置。
  5. 您丢失了数据,因为

      

    可以将数据存储在容器的可写层中,   但有一些缺点:

         

    当该容器不再运行时,数据不会保留,并且   如果另一个数据可能很难从容器中获取数据   过程需要它。

    https://docs.docker.com/storage/

    所以这是解决方案。

      

    Docker提供了三种不同的方法将数据安装到容器中   Docker主机:卷,绑定挂载或tmpfs卷。什么时候进去   怀疑,数量几乎总是正确的选择。继续读   有关将数据安装到的每种机制的更多信息   容器

    https://docs.docker.com/storage/#good-use-cases-for-tmpfs-mounts

    在这里您可以如何持久保存nodejs代码和golang代码

    docker run -v /nodejs-data-host:/nodejs-container -v /go-data-host:/godata-container -dit  your_image
    

    根据包的运行时(nodejs和go),如果你的容器因为存储在docker镜像中而被杀死或停止,它们会持续存在。