2016-07-19 33 views
2

我試圖推出官方卡桑德拉碼頭image作爲this項目的一部分。卡桑德拉容器與--net =主機立即退出

docker run -d --name cassandra cassandra成功啓動容器。

不過,我需要docker run -d --name cassandra--net=hostcassandra,因爲該項目其他地方工作的這種方式。如果我使用--net=host,容器將啓動,然後立即退出。

這裏是docker ps -a不得不說:

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS      PORTS    NAMES 
9f4992f06a30  cassandra:latest "/docker-entrypoint.s" 10 seconds ago  Exited (3) 5 seconds ago      cassandra 

日誌說,有一個錯誤:Unknown listen_address '::1 127.0.0.1'

兩個::1127.0.0.1存在於我的/etc/hosts如果是相關的:

127.0.0.1 localhost.localdomain localhost 
::1  localhost.localdomain localhost 

Here的不合格容器的完整日誌輸出和heredocker info輸出。作爲比較,here成功運行實例的日誌(沒有--net=host)。

行爲存在與否和項目的其他部分,與:3,:3.5,:3.7:latest圖像。

回答

1

刪除/ etc/hosts上的line :: 1會解決這個問題。

+0

這也行! 但是,該行默認存在於'/ etc/hosts'中。我認爲這是正確的,即「正確的'主機'文件被Cassandra誤讀」,而不是「錯誤的'主機'文件阻止Cassandra工作」? – Daerdemandt

1

根據建議here,覆蓋CASSANDRA_LISTEN_ADDRESS的作品,這樣的:

docker run -d --name cassandra --net=host -e CASSANDRA_LISTEN_ADDRESS='127.0.0.1' cassandra

此外,確保至少有4GB RAM(互換是細太)可 - 否則卡桑德拉容器將立刻退出太,具有不同的錯誤信息。

看來,當沒有指定設備和地址時,Cassandra defaultslocal address

假設hosts文件有幾個這個主機的條目(例如IPv4和IPv6的),這兩個都是返回的,這是不期望的,或類似的東西。手動提供127.0.0.1確保路徑永遠不會被執行。