Skip to content

docker container to forward all traffic to the docker host

License

Notifications You must be signed in to change notification settings

smskin/docker-host

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker-host

Build Status

GitHub release

Docker Stars

Docker image to forward TCP and UDP 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 bridge network gateway IP address docker network inspect bridge --format='{{( index .IPAM.Config 0).Gateway}}'

Example

This example will send messages from docker container to docker host with netcat

Prerequisite

Start netcat server TCP on port 2323 to receive and display messages

nc 127.0.0.1 8080 -lk

Start netcat server UDP on port 5353 to receive and display messages

nc 127.0.0.1 5353 -lk -u -w0

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

This example will let you send messages to TCP netcat server on docker host.

docker run --rm \
  --link 'dockerhost' \
  -it alpine nc 'dockerhost' 2323 -v

This example will let you send messages to TCP netcat server on docker host.

docker run --rm \
  --link 'dockerhost' \
  -it alpine nc 'dockerhost' 5353 -u -v

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/link dockerhost of the dockerhost container

This example will let you send messages to TCP netcat server on docker host.

docker run --rm \
  --link 'dockerhost' \
  -it alpine nc 'dockerhost' 2323 -v

This example will let you send messages to TCP netcat server on docker host.

docker run --rm \
  --link 'dockerhost' \
  -it alpine nc 'dockerhost' 5353 -u -v

Docker Compose

version: '2'

services:
    dockerhost:
        image: qoomon/docker-host
        cap_add: [ 'NET_ADMIN', 'NET_RAW' ]
        mem_limit: 8M
        restart: on-failure
    tcp_message_emitter:
        depends_on: [ dockerhost ]
        image: alpine
        command: [ "sh", "-c", "while :; do date; sleep 1; done | nc 'dockerhost' 2323 -v"]
    udp_message_emitter:
        depends_on: [ dockerhost ]
        image: alpine
        command: [ "sh", "-c", "while :; do date; sleep 1; done | nc 'dockerhost' 5353 -u -v"]

About

docker container to forward all traffic to the docker host

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 92.7%
  • Dockerfile 7.3%