我们如何添加function到正在运行的docker集装箱?

在容器实际启动后,是否可以添加一个function(例如:NET_ADMIN)?

我几天前创build了一个容器,其提供的服务正被其他几个在其他服务器上远程运行的进程使用。 我需要添加一个loopback接口,但不幸的是,我忘了用--cap-add=NET_ADMIN启动容器,因此现在不能添加接口。

我正在寻找一个选项,如果有可能给这个容器以某种方式给这个容器。

VanagaS

1.Stop容器:

 docker stop yourcontainer; 

2.获取容器ID:

 docker inspect yourcontainer; 

3.修改hostconfig.json(默认的dockerpath:/ var / lib / docker,你可以改变你的)

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

4.search“CapAdd”,并将null修改为[“NET_ADMIN”];

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

5.在主机上重新启动docker;

 service docker restart; 

开始你的包装;

 docker start yourcontainer; 

它为我工作,享受它。

不,您不能修改正在运行的容器的function。 这些只能在您首次创build或运行(这只是一个create + start)容器时才能定义。 您将需要创build一个具有所需function的新容器。

我应该指出,你可以分配额外的networking接口到一个正在运行的容器与docker network connect ,但我不知道任何回环驱动程序,你可以用来解决您的问题,使用这种技术。

您可以使用docker exec -it {container_id} /bin/bash在正在运行的容器中运行命令。 它会为你创build一个bash,你可以运行命令。 但是通常对图像状态进行修改并不是一个好习惯,因为它会消除图像的可移植性。