当我创build一个新的docker集装箱像
docker run -it -m 560m --cpuset-cpus=1,2 ubuntu sleep 120
并检查它的命名空间,我可以看到已经创build了新的命名空间(例如pid 7047)。
root@dude2:~# ls /proc/7047/ns -la total 0 dr-x--x--x 2 root root 0 Jul 7 12:17 . dr-xr-xr-x 9 root root 0 Jul 7 12:16 .. lrwxrwxrwx 1 root root 0 Jul 7 12:17 ipc -> ipc:[4026532465] lrwxrwxrwx 1 root root 0 Jul 7 12:17 mnt -> mnt:[4026532463] lrwxrwxrwx 1 root root 0 Jul 7 12:17 net -> net:[4026532299] lrwxrwxrwx 1 root root 0 Jul 7 12:17 pid -> pid:[4026532466] lrwxrwxrwx 1 root root 0 Jul 7 12:17 user -> user:[4026531837] lrwxrwxrwx 1 root root 0 Jul 7 12:17 uts -> uts:[4026532464] root@dude2:~# ls /proc/self/ns -la
当我检查与ip netns list我看不到新的networking命名空间。
dude@dude2:~/docker/testroot$ ip netns list dude@dude2:~/docker/testroot$
任何想法为什么?
如何知道docker集装箱的主机映射端口?
设置Jetty作为服务
为什么在“docker exec”命令中存在“-i”和“-t”选项?
如何在多主机之间创builddocker覆盖networking?
OCF规范是否意味着Docker不再是以Linux为中心的?
Golang Mac OSX为Docker机器构build
无法用Nginx PlusreplaceNginx作为使用Kubernetes的Google Cloud上的微服务的反向代理
Docker窗口加载内核模块
docker代理拉窗口10
这是因为码头不是创建需要的符号链接:
# (as root) pid=$(docker inspect -f '{{.State.Pid}}' ${container_id}) mkdir -p /var/run/netns/ ln -sfT /proc/$pid/ns/net /var/run/netns/$container_id
然后,可以使用ip netns ${container_id}来检查容器的netns名称空间,例如:
# eg show stats about eth0 inside the container ip netns exec "${container_id}" ip -s link show eth0
如@jary所示, ip netns命令只能在/var/run/netns使用名称空间符号链接。 但是,如果您有可用的nsenter命令( util-linux软件包的一部分),则可以使用docker容器的PID完成相同的操作。
要获取泊坞窗容器的PID,可以运行:
docker inspect --format '{{.State.Pid}}' <container_name_or_Id>
nsenter -t <contanier_pid> -n <command>
例如:
$ docker inspect --format '{{.State.Pid}}' weechat 4432 $ sudo nsenter -t 4432 -n ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNowN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 75: eth0@if76: <broADCAST,MULTICAST,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:1b brd ff:ff:ff:ff:ff:ff inet 172.17.0.27/16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe11:1b/64 scope link valid_lft forever preferred_lft forever
以上相当于运行ip netns exec <some_namespace> ip addr show 。
正如你在这里看到的,你将需要以root权限运行nsenter 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。