Skip to content

docker container to forward all traffic to the docker host

License

Notifications You must be signed in to change notification settings

csmu-cenr/docker-host

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker-host

Build Status

GitHub release

Docker Stars

Docker image to forward all traffic to the docker host

  • uses dns entry host.docker.internal if available
  • or default gateway as docker host

You can manually override the destination IP address by setting the environment variable DOCKER_HOST. This allows you to use this image to forward traffic to arbitrary destinations, not only the docker host.

⚠️ On Linux systems you have to bind your host applications to bridge network gateway in addition to localhost(127.0.0.1), if you want to reach them through docker-host container. Use following docker command to get the bride network gatway IP address docker network inspect bridge --format='{{( index .IPAM.Config 0).Gateway}}'

Examples

Prerequisite

Simulate localhost webserver on port 8080.

docker run --name nginx -p 8080:80 \
  -d nginx

Docker Link

Run the dockerhost container.

docker run --name 'dockerhost' \
  --cap-add=NET_ADMIN --cap-add=NET_RAW \
  --restart on-failure \
  -d qoomon/docker-host

Run your application container and link the dockerhost container. The dockerhost will be reachable through the domain/link dockerhost of the dockerhost container e.g. dockerhost:8080 This example uses curl as an application dummy.

docker run --rm \
  --link 'dockerhost' \
  appropriate/curl 'http://dockerhost:8080'

Docker Network

Create the dockerhost network.

network_name="Network-$RANDOM"
docker network create "$network_name"

Run the dockerhost container within the dockerhost network.

docker run --name "${network_name}-dockerhost" \
  --cap-add=NET_ADMIN --cap-add=NET_RAW \
  --restart on-failure \
  --net=${network_name} --network-alias 'dockerhost' \
  qoomon/docker-host

Run your application container within the dockerhost network. The dockerhost will be reachable through the domain/network-alias dockerhost of the dockerhost container e.g. dockerhost:8080 This example uses curl as an application dummy.

docker run --rm \
  --net=${network_name} \
  appropriate/curl 'http://dockerhost:8080'

Docker Compose

version: '2'

services:
    dockerhost:
        image: qoomon/docker-host
        cap_add: [ 'NET_ADMIN', 'NET_RAW' ]
        mem_limit: 8M
        restart: on-failure
    dummy:
        depends_on: [ dockerhost ]
        image: appropriate/curl
        command: ["http://dockerhost:8080"]

About

docker container to forward all traffic to the docker host

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 84.0%
  • Dockerfile 16.0%