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

问题描述 投票:5回答:3

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

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

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

docker containers linux-capabilities
3个回答
6
投票

1.Stop容器:

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;

它适合我,享受它。


3
投票

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

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


-4
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.