容器实际启动后是否可以添加功能(例如:NET_ADMIN)?
几天前我启动了一个容器,它提供的服务正被其他几个在其他服务器上远程运行的进程使用。我需要为其添加一个环回接口,但不幸的是,我忘记了启动容器,--cap-add=NET_ADMIN
因此现在无法添加接口。
我正在寻找一个选项,如果有可能以某种方式将此功能赋予此容器。
容器实际启动后是否可以添加功能(例如:NET_ADMIN)?
几天前我启动了一个容器,它提供的服务正被其他几个在其他服务器上远程运行的进程使用。我需要为其添加一个环回接口,但不幸的是,我忘记了启动容器,--cap-add=NET_ADMIN
因此现在无法添加接口。
我正在寻找一个选项,如果有可能以某种方式将此功能赋予此容器。
瓦纳加斯
1.停止容器:
docker stop yourcontainer;
2.获取容器id:
docker inspect yourcontainer;
3.修改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;
它对我有用,享受它。
不,您不能修改正在运行的容器的功能。这些只能在您第一次创建或运行(这只是一个创建+启动)容器时定义。您需要创建一个具有所需功能的新容器。
我应该指出,您可以使用 为正在运行的容器分配额外的网络接口docker network connect
,但我不知道您可以使用任何环回驱动程序来使用此技术解决您的问题。
您可以使用docker exec -it {container_id} /bin/bash
. 它将为您创建一个 bash,您可以使用它运行命令。但通常对图像状态进行修改并不是一个好习惯,因为它消除了图像的可移植性。