i have docker container running jenkins. part of build process, need access web server run locally on host machine. there way host web server (which can configured run on port) can exposed jenkins container?
edit: i'm running docker natively on linux machine.
update:
in addition @larsks answer below, ip address of host ip host machine, following:
ip addr show docker0 | grep -po 'inet \k[\d.]+'
when running docker natively on linux, can access host services using ip address of docker0 interface. inside container, default route.
for example, on system:
$ ip addr show docker0 7: docker0: <no-carrier,broadcast,multicast,up> mtu 1500 qdisc noqueue state down group default link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::f4d2:49ff:fedd:28a0/64 scope link valid_lft forever preferred_lft forever and inside container:
# ip route show default via 172.17.0.1 dev eth0 172.17.0.0/16 dev eth0 src 172.17.0.4 it's easy extract ip address using simple shell script:
#!/bin/sh hostip=$(ip route show | awk '/default/ {print $3}') echo $hostip you may need modify iptables rules on host permit connections docker containers. trick:
# iptables -a input -i docker0 -j accept this permit access ports on host docker containers. note that:
iptables rules ordered, , rule may or may not right thing depending on other rules come before it.
you able access host services either (a) listening on
inaddr_any(aka 0.0.0.0) or explicitly listening ondocker0interface.
Comments
Post a Comment