我们如何向 运行 docker 容器添加功能?
How can we add capabilities to a running docker container?
是否可以在容器实际启动后添加功能(例如:NET_ADMIN)?
几天前我启动了一个容器,它提供的服务正在被其他服务器远程 运行 的其他几个进程使用。我需要给它添加一个环回接口,但不幸的是,我忘记用 --cap-add=NET_ADMIN
启动容器,因此现在无法添加接口。
我正在寻找一个选项,如果可以以某种方式为该容器提供此功能。
您可以使用 docker exec -it {container_id} /bin/bash
在 运行ning 容器内 运行 命令。
它将为您创建一个 bash,您可以使用 运行 命令。但通常修改图像状态不是一个好习惯,因为它会消除图像的可移植性。
不,您不能修改 运行ning 容器的功能。这些只能在您第一次创建或 运行 (这只是一个创建+启动)容器时定义。您需要创建一个具有所需功能的新容器。
我应该指出,您可以使用 docker network connect
将额外的网络接口分配给 运行ning 容器,但我不知道您可以使用任何环回驱动程序来解决您的问题这个技巧。
VanagaS
1.Stop 容器:
docker stop yourcontainer;
2.Get容器编号:
docker inspect yourcontainer;
3.Modifyhostconfig.json(默认docker路径:/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.Restart docker 在主机中;
service docker restart;
6.Start 你的容器;
docker start yourcontainer;
它对我有用,享受它。
是否可以在容器实际启动后添加功能(例如:NET_ADMIN)?
几天前我启动了一个容器,它提供的服务正在被其他服务器远程 运行 的其他几个进程使用。我需要给它添加一个环回接口,但不幸的是,我忘记用 --cap-add=NET_ADMIN
启动容器,因此现在无法添加接口。
我正在寻找一个选项,如果可以以某种方式为该容器提供此功能。
您可以使用 docker exec -it {container_id} /bin/bash
在 运行ning 容器内 运行 命令。
它将为您创建一个 bash,您可以使用 运行 命令。但通常修改图像状态不是一个好习惯,因为它会消除图像的可移植性。
不,您不能修改 运行ning 容器的功能。这些只能在您第一次创建或 运行 (这只是一个创建+启动)容器时定义。您需要创建一个具有所需功能的新容器。
我应该指出,您可以使用 docker network connect
将额外的网络接口分配给 运行ning 容器,但我不知道您可以使用任何环回驱动程序来解决您的问题这个技巧。
VanagaS
1.Stop 容器:
docker stop yourcontainer;
2.Get容器编号:
docker inspect yourcontainer;
3.Modifyhostconfig.json(默认docker路径:/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.Restart docker 在主机中;
service docker restart;
6.Start 你的容器;
docker start yourcontainer;
它对我有用,享受它。