2014-10-31 69 views
2

我一直在试图让我可以部署我的集装箱,我已经成功地使用了以下配置,但是我遇到的问题是它不会启动我的最新版本容器。部署最新的码头集装箱

- name: Deploy 
    hosts: staging 
    tasks: 
    - name: Install docker-py 
     pip: name=docker-py 
    - name: Pull latest container 
     raw: docker pull org/proj:latest 
    - name: Stop container 
     docker: 
     image="org/proj:latest" 
     name=proj-rails 
     state=stopped 
    - name: Deploy container 
     docker: 
     image="org/proj:latest" 
     name=proj-rails 
     ports=80:80 
     state=running 

我可以构建并将新容器推送到码头集线器并尝试将其拉下。在docker images列出了最新的容器服务器:

REPOSITORY   TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
org/proj   latest    9f0de94df28c  2 hours ago   675.5 MB 
<none>    <none>    15f4bbbeebca  2 days ago   670.6 MB 
<none>    <none>    f7958247ed52  2 days ago   670.3 MB 

我的问题是ansible保持开始15f4bbbeebca(这不是最新的容器)。任何人都可以帮我弄清楚什么是错的?

+0

我认为问题是与名称属性。 name属性设置容器的当前名称。通常这个名字是随机分配的 _ <科学家姓名>。我认为在启动容器时重复使用相同的名称会产生与图像ID绑定的不良副作用。通过不指定name属性,我能够使用最新的标签启动容器。 这个观察结果可能会回答我原来的问题,但它最终导致了更多的问题,因为我无法通过名称来寻址容器,因为我多次在一个盒子上部署同一个容器。 – 2014-11-03 07:27:06

回答

-2

我写我自己的部署解决方案固定我的问题,然后打开它来源,https://github.com/mrinterweb/freighter

我设计的货是很容易配置和灵活的在同一时间。我希望有人发现它有帮助。我还没有完成货船,但在这一点上它是可用的。

我意识到这并没有回答关于如何部署docker的问题,但我放弃了尝试部署容器的问题。我只是没有找到合适的码头模块足够成熟,足够记录,或根据我的需要进行配置。

+4

而不是创建一个新的库来解决你可能自己扩展Docker模块的问题,你是对的,这不是一个答案。 – 2015-02-03 16:06:08

0

在黑暗中拍摄,但语法看起来很奇怪。它不应该是

- name: Stop container 
    docker: 
    image: org/proj:latest 
    name: proj-rails 
    state: stopped 

另外,为什么你使用原始而不是命令(或外壳)?

+0

我尝试使用docker模块的name属性。当我使用它时,它在第一次部署时工作正常,但随后部署的容器与最初指定名称的原始部署的容器标识绑定。这意味着当我想推送我的容器的最新标签时,旧容器就是启动的那个容器。为了使它始终部署最新的标记,我必须删除名称属性。我对新手来说是新手,这就是为什么我使用“原始”协作者。结果似乎与壳牌或命令相同。 – 2014-11-03 07:16:55

+0

我忘记了Docker站点上的位置,他们展示了一个将单个命令的参数分解为多行的示例,就像我在原始示例中所述。我最初的例子工作和命令参数被解释。我不相信我的问题与语法有关。我认为我的问题是我期望码头模块能够正常工作。 – 2014-11-03 07:52:14

+0

我也对码头模块感到困惑。似乎非常pooly记录。 – devth 2014-12-04 21:53:09