Docker conteneur - comment configurer afin qu'il obtienne une adresse IP viable lors de l'exécution dans vagabond?
Docker (www.docker.io) ressemble terrible. Cependant, après l'installation de VirtualBox, Vagrant
... et enfin Docker sur un Mac, je suis la recherche il n'est pas possible d'accéder au service en cours d'exécution dans le conteneur Docker à partir d'un autre ordinateur (ou à partir d'une session de terminal sur Mac). Le service que je vais essayer d'accès est Redis.
Le problème semble être qu'il n'y a pas de route vers l'adresse IP attribuée à l'conteneur Docker. Dans ce cas, le conteneur de l'IP est 172.16.42.2 alors que le Mac IP est 196.168.0.3.
Quelques remarques:
- Il EST possible d'y accéder - mais seulement à partir de l'intérieur de la VirtualBox session. Cela peut être fait à l'aide de redis-cli -h 172.16.42.2 -p 6379.
- J'ai ajouté "config.vm.réseau :ponté" pour le VagrantFile dans une tentative pour obtenir l', mais qui ne résout pas le problème.
source d'informationauteur Joe | 2013-04-29
Vous devez vous connecter pour publier un commentaire.
La machine virtuelle générée par vagrant est en effet isolé, afin d'accéder à partir de votre hôte, vous pouvez allouer un réseau privé.
Au lieu de faire
config.vm.network :bridged
, essayezconfig.vm.network :private_network, ip: "192.168.50.4"
, Il devrait faire l'affaireCependant, cela ne vous permettent d'accéder à la machine virtuelle elle-même, pas le contenant.
Pour ce faire, lors de l'exécution du conteneur, vous pouvez ajouter le
-p
optionex:
docker run -d -p 8989 base nc -lkp 8989
Cela va lancer un netcat en écoute sur 8989 à l'intérieur d'un conteneur et d'exposer le port en public. Comme il est également fonctionner avec -d, le conteneur sera en mode détaché et la seule sortie sera l'ID du conteneur
Afin d'exposer le port, Docker de faire une simple NAT. Pour connaître le numéro de port, vous pouvez
ne
docker port <ID of the container> 8989
Netcat sera disponible à partir de mac à 192.168.50.4:<suite>
Je viens d'écrire un tutoriel sur la façon d'utiliser un réseau de l'hôte uniquement TCP et de routage pour faire ce assez facile. De cette façon, vous n'avez pas de carte de chaque port spécifique.
http://ispyker.blogspot.com/2014/04/accessing-docker-container-private.html
Points importants ...
1) Ajouter réseau de l'hôte uniquement pour Virtual Box
2) Dites-le boot2docker VM un adaptateur sur le réseau de l'hôte uniquement
3) Ajouter une adresse IP pour le nouveau boot2docker VM réseau de l'hôte uniquement l'adaptateur
4) la Route tous les Mac OS X trafic pour le menu fixe conteneur de sous-réseau pour que boot2docker VM réseau de l'hôte uniquement IP
Étapes réelles sont sur le blog avec la sortie de sorte que vous pouvez comparer à ce que vous voyez comme vous les suivez.
J'ai installé tomcat à partir de mon Dockerfile et transmis qu'à 6060 à l'aide de l'errance de la redirection de port. Ce sont les étapes a fonctionné pour moi:
En mesure de voir tomcat up & en cours d'exécution sur localhost:6060, comme je l'ai fait la redirection de port pour 6060 dans mon Vagrantfile
vous pouvez également définir PRIVATE_NETWORK et FORWARD_DOCKER_PORTS des variables d'environnement pour accéder à vos services en cours d'exécution dans des conteneurs docker:
Dans mon cas, je peux accéder à postgres à partir de Mac à l'aide de
pour en savoir effective de port de l'application, vous pouvez utiliser