我们如何为正在运行的docker容器添加功能?

时间:2016-08-04 04:44:29

标签: docker containers linux-capabilities

在容器实际启动后是否可以添加功能(例如:NET_ADMIN)?

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

我正在寻找一个选项,如果可以以某种方式将此功能提供给此容器。

3 个答案:

答案 0 :(得分:6)

VanagaS

1.Stop Container:

docker stop yourcontainer;

2.获取容器ID:

docker inspect yourcontainer;

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

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

4.搜索" CapAdd",并将null修改为[" NET_ADMIN"];

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

5.在主机中重启docker;

service docker restart;

6.启动你的容器;

docker start yourcontainer;

它适合我,享受它。

答案 1 :(得分:3)

不,您无法修改正在运行的容器的功能。这些只能在您首次创建或运行(只是创建+启动)容器时定义。您需要创建具有所需功能的新容器。

我应该指出,您可以使用docker network connect为正在运行的容器分配其他网络接口,但我不知道您可以使用此技术解决问题的任何环回驱动程序。

答案 2 :(得分:-4)

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