Giter Club home page Giter Club logo

docker-hostmanager's Introduction

docker-hostmanager

ABOUT

Update automatically your /etc/hosts to access running containers. Inspired by vagrant-hostmanager.

Project homepage: https://github.com/iamluc/docker-hostmanager

USAGE

Linux

The easiest way is to use the docker image

$ docker run -d --name docker-hostmanager --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /etc/hosts:/hosts iamluc/docker-hostmanager

Note: the --restart=always option will make the container start automatically with your computer (recommended).

Mac OS

Download the PHAR executable here : https://github.com/iamluc/docker-hostmanager/releases

And then run it:

$ sudo php docker-hostmanager.phar synchronize-hosts

Note: We run the command as root as we need the permission to write file /etc/hosts. If you don't want to run the command as root, grant the correct permission to you user.

Before running the command, don't forget to export your docker environment variables. i.e.

$ eval $(docker-machine env mybox)

Also, you should add a route to access containers inside your VM.

$ sudo route -n add 172.0.0.0/8 $(docker-machine ip $(docker-machine active))

Windows

If the host, dont use Docker ToolBox or not a Windows 10 PRO, then needs to mount the /c/Windows folder onto VirtualBox.

$ docker run -d --name docker-hostmanager --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /c/Windows/System32/drivers/etc/hosts:/hosts iamluc/docker-hostmanager

After run the container we need to add a route to access container subnets.

$ route /P add 172.17.0.0/12 192.168.99.100

CONFIGURATION

With networks

When a container belongs to at least one network (typically when using a docker-compose.yml file in version >= 2), the name defined to access the container is CONTAINER_NAME.CONTAINER_NETWORK. It works also with the alias defined for the network.

As a container can belongs to several networks at the same time, and thanks to alias, you can define how you want to access your container.

Example 1 (default network):

version: '2'

services:
    web:
        image: iamluc/symfony
        volumes:
            - .:/var/www/html

The container web will be accessible with web.myapp_default (if the docker-compose project name is myapp)

Example 2 (custom network name and alias):

version: '3.5'

networks:
    default:
        name: myapp

services:
    web:
        image: iamluc/symfony
        volumes:
            - .:/var/www/html

    mysql:
        image: mysql
        networks:
            default:
                aliases:
                    - bdd

The web container will be accessible with web.myapp. The mysql container will be accessible with mysql.myapp or bdd.myapp

Without networks

When a container has no defined network (only the default "bridge" one), it is accessible by its container name, concatened with the defined TLD (.docker by default). It is the case when you run a single container with the docker command or when you use a docker-compose.yml file in version 1.

The DOMAIN_NAME environment variable lets you define additional hosts for your container. e.g.:

$ docker run -d -e DOMAIN_NAME=test.com,www.test.com my_image

Tests

To run test, execute the following command : vendor/bin/phpunit

LICENSE

MIT

docker-hostmanager's People

Contributors

clemherreman avatar felipemarques avatar iamluc avatar jean-beru avatar kevin-verschaeve avatar neemzy avatar romainneutron avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.