2016-08-04 17 views
1

在容器實際啓動後,是否可以添加一個功能(例如:NET_ADMIN)?我們如何向運行的碼頭集裝箱添加功能?

我幾天前創建了一個容器,它提供的服務正在被遠程運行在其他服務器上的其他幾個進程使用。我需要爲它添加一個回送接口,但不幸的是,我忘記了用​​啓動容器,因此現在無法添加接口。

我正在尋找一個選項,如果有可能給這個容器以某種方式給這個容器。

+0

默認情況下,容器中包含回送接口,即使您在沒有網絡的情況下啓動一個接口。你沒有使用什麼選項來啓動你的? – BMitch

+0

需要添加額外的回送接口來分配額外的IP地址 – VanagaS

+0

向正在運行的容器添加功能會很好。例如,如果您需要開始使用iptables,也是必要的。 – jjmontes

回答

-2

您可以使用docker exec -it {container_id} /bin/bash在正在運行的容器中運行命令。 它會爲你創建一個bash,你可以運行命令。但通常對圖像狀態進行修改並不是一個好習慣,因爲它會消除圖像的可移植性。

2

不,您不能修改正在運行的容器的功能。這些只能在您首次創建或運行容器時才能定義(這只是一個create + start)。您需要創建一個具有所需功能的新容器。

我應該指出,您可以將其他網絡接口分配給正在運行的容器與docker network connect,但我不知道任何迴環驅動程序可用於解決您的問題使用此技術。

+0

我在這個容器中安裝了一個應用程序,它使用硬編碼的(可訪問的)IP地址與外部服務進行通信。我在這個容器中安裝了外部服務。環回設置是爲了確保服務在容器內部進行通信。 – VanagaS

+0

最佳做法是將每個服務安裝在單獨的容器中。您可以讓它們在自己的碼頭網絡上運行,並將這些網絡連接到正在運行的容器。從這個和你的其他問題來看,這聽起來像你試圖使用你的容器作爲一個虛擬機,而不是一個應用程序隔離工具,這對於容器來說是一種反模式。 – BMitch

+0

服務只是另一個可以在同一臺j2ee服務器上運行的war文件。我不想創造另一個不必要的圖像,否則將無法使用。 – VanagaS

3

VanagaS

1.Stop容器:

docker stop yourcontainer; 

2.註冊容器ID:

docker inspect yourcontainer; 

3.修改hostconfig.json(默認搬運工路徑:在/ var/lib中/碼頭,你可以改變你的)

vim /var/lib/docker/containers/containerid/hostconfig.json 

4.搜索「CapAdd」,並將null修改爲[「NET_ADMIN」];

....,"VolumesFrom":null,"CapAdd":["NET_ADMIN"],"CapDrop":null,.... 

5.主機中的Rartart docker;

service docker restart; 

6.啓動您的包容器;

docker start yourcontainer; 

它爲我工作,享受它。

相關問題