posts - 206, comments - 61, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
先说结论,宿主机的IP地址就是容器的网关,后面所有操作都是围绕此展开
首先登陆容器的bash
docker exec -it <容器名或容器ID> bash
# 安装ip route命令
apt install iproute2
# 安装ping命令
apt install iputils-ping
使用
ip route
命令查看网关,可以看到类似
default via 172.17.0.1 dev eth0
第3个输出部分就是网关IP
所以我们可以通过命令
ip route|awk '/default/ { print $3}'
得到网关IP输出
172.17.0.1
可以使用命令
ip route|awk '/default/ { print $3,"\tdockerhost" }' >> /etc/hosts
把宿主机IP映射成dockerhost,写入hosts文件
可以查看写入后的hosts文件
cat /etc/hosts
可以ping 宿主机或者访问其开放服务端口来测试
ping dockerhost
最后说一下,如何在通过镜像启动容器时完成映射
就是使用这样的参数
--add-host=dockerhost:`docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' bridge`
完整的命令样例
docker run --add-host=dockerhost:`docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' bridge`\
-p 33066:3306 --name mysql_test \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
上面参数也是把网关加到hosts里的意思,而且它不依赖ip route命令是否可用。
只有注册用户登录后才能发表评论。