在容器实际启动后是否可以添加功能(例如:NET_ADMIN)?
我几天前启动了一个容器,其提供的服务正被其他几个在其他服务器上远程运行的进程使用。我需要为它添加一个loopback接口,但不幸的是,我忘了用--cap-add=NET_ADMIN
启动容器,因此现在无法添加接口。
我正在寻找一个选项,如果可以以某种方式将此功能提供给此容器。
答案 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。但一般来说,对图像状态进行修改并不是一个好习惯,因为它会删除图像的可移植性。