2015-02-17 12 views
6

TLDR: Ist es möglich, zwei Container mit dem Containermanifest zu verknüpfen?Wie Verknüpfen von Docker-Containern auf Container-VM mit einem Manifest?

Ich versuche, die Guestbook Sample app from the Google Container Engine docs zu einem container vm zu portieren. Ich habe Probleme, die beiden Container-VMs so zu verbinden, dass die Web-App auf den Redis-Dienst zugreifen kann.

Es funktioniert, wenn ich die Docker Kommandozeile auf der Instanz mit:

die Instanz und ssh hinein starten:

gcloud compute instances create guestbook-vm --image container-vm --machine-type g1-small 
gcloud ssh guestbook-vm 

die Container erstellen:

sudo docker run -d --name redis -p 6379:6379 dockerfile/redis 
sudo docker run -d --name guestbook -p 3000:80 --link redis:redis -e "REDIS_MASTER_SERVICE_HOST=redis" -e "REDIS_MASTER_SERVICE_PORT=6379" brendanburns/php-redis 

Ich benutze den --link um das Gästebuch mit dem Redis Container zu verbinden. Kann dies auch mit dem Containermanifest erreicht werden?

das ist mein Startbefehl:

gcloud compute instances create guestbook-vm --image container-vm --machine-type g1-small --metadata-from-file google-container-manifest=containers.yaml 

EDIT: Lösung von Alex 127.0.0.1 zu verwenden, funktioniert gut, so dass die rechte containers.yaml ist:

version: v1beta2 
containers: 
    - name: redis 
    image: dockerfile/redis 
    ports: 
     - name: redis-server 
     containerPort: 6379 
     hostPort: 6379 
    - name: guestbook 
    image: brendanburns/php-redis 
    ports: 
     - name: http-server 
     containerPort: 80 
     hostPort: 3000 
    env: 
     - name: REDIS_MASTER_SERVICE_HOST 
     value: 127.0.0.1 
     - name: REDIS_MASTER_SERVICE_PORT 
     value: 6379 

Antwort

2

Es gibt no link parameter available in the container manifest, also können Sie es leider nicht so machen.

Haben Sie jedoch versucht, die Umgebungsvariable REDIS_MASTER_SERVICE_HOST auf 127.0.0.1 zu setzen? Ich glaube, das sollte es dem Frontend-Container ermöglichen, mit dem Redis-Container über den Standard-Netzwerk-Stack zu kommunizieren.

+0

Sie haben Recht, localhost funktioniert gut! – Paul