2015-01-15 5 views
1

Я только начинаю работу с Docker, и вчера я прочитал тонну документации и учебников, но не могу найти, где я читал о замене внешней службы с помощью связанного контейнера, и я «Я даже не знаю, какую терминологию искать.Замените контейнер Docker внешним сервисом

Say есть apache контейнер и контейнер mysql, где apache была запущена со ссылкой на mysql, и имеет доступ к его портам и тому подобное. Теперь вместо MySQL, запущенного на экземпляре контейнера, мы переместим его в AWS RDS, например. Как вы изменяете контейнер mysql так, чтобы apache продолжал работать, как ожидалось? Чтобы уточнить, apache все равно будет работать со ссылкой на контейнер с псевдонимом mysql, но контейнер mysql позаботится о получении трафика на этом порту, отправленном в AWS.

В качестве альтернативы, может быть, есть контейнер, на котором запущен сервис MySQL, но этот контейнер находится на другом хосте. У меня смутное ощущение, что образец, о котором я говорю, сможет справиться с этим сценарием. Звучит это знакомо кому-нибудь?

+1

Вы видели https://docs.docker.com/articles/ambassador_pattern_linking/? – Andy

+0

образец посла, да, это то, что я искал – rwilson04

ответ

1

Если контейнер находится на другом хосте, то почему бы просто не попасть непосредственно на хост и не сделать докеры прозрачными с помощью 3386 (или любого другого порта, на котором запущен mysql), пересылки запросов в контейнер? Я не могу думать о какой-либо причине, по которой вы хотите связать контейнеры, если они не находятся на одном хосте. Docker отлично смотрится прозрачно, поэтому клиенты могут запускать вещи против службы в Docker с другой машины, как если бы служба запускалась непосредственно на машине без Docker.

Если вам действительно нужно иметь оба контейнера на одном компьютере (даже если контейнер mysql вызывает RDS или другой хост), вы должны иметь возможность создать новое простое изображение mysql, которое только что установило mysql_client, и просто принимает запросы и пересылает их в RDS.