docker - run nginx container
docker run --name mynginx -p 8080:80 -d nginx
如何进入一个running container中,
nginx container 内部的路径:
/usr/share/nginx/html/index.html
可以通过在container内部运行下面的命令来查看container的ip地址
或者在container 内部安装下面的命令:
apt-get update
apt-get install net-tools
或者在container所在的host上运行:
docker inspect mynginx | egrep -i ipaddress
如何找出host和container之间的eth的对应关系:
http://xdhao.net/post/new-post//index.html
昨天排查了一个docker的网络问题,从容器里访问宿主机端口不通,后来经排查,客户网络关闭了firewalld,但是启用了iptables,在排查过程中,总结了一下如何找出docker和veth的对应关系 参考内容:https://github.com/micahculpepper/dockerveth.git
具体思路如下:
- docker网络是隔离的,在docker inspect命令里 可以看到容器对应的实际pid:
docker inspect --format '{{.State.Pid}}'
- 在/proc/$pid/ns下可以看到对应的namespacesId 为配合ip netns 命令使用,需要在/var/run/netns/目录下创建软链(man ip netns可查看具体原因)
ln -s /proc/$pid/ns/net ns-$pid
- 查询6065 ns下的网卡信息 如下命令获取
ip netns exec ns-6065 ip addr show type veth
35: eth0@if36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:15:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.21.0.3/16 brd 172.21.255.255 scope global eth0
valid_lft forever preferred_lft forever
- 从上一步过滤出网卡id (35),然后到宿主机上过滤出对应的veth(@if35)
36: veth1069320@if35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-31c2bbb74464 state UP group default
link/ether be:ce:f0:a6:43:7e brd ff:ff:ff:ff:ff:ff link-netnsid 1