Hi Pankaj,
Yes if you run with --net=host its simply taking the network configuration
of the host machine and run it. I just asked you to run it and confirm
whether it works, so you know this is not related to airavata. As I
explained in previous email one way you can do it, to do the communication
between containers you can use environment variables. Ex: In
airavata-server.properties file can directly configure using environment
variables.
ex: rabbitmq.broker.url=amqp://${RABBITMQ_HOST}:5672
So when you run the container you can parse your host IP address with -e
option, docker run -it ... -e RABBITMD_HOST="host ip" , with this approach
you can simply remove --net=host because its not a good way to use docker,
unless its really limiting something. We should not assume anything about
the host environment.
To address your original issue, ideally you should be able to achieve the
same thing with --link approch, I think something is missing with the
configuration, but if you are moving with --link approach it will not work
if you deploy in multiple hosts. I think its good to move towards
environment variable approach so that it will help with the airavata
production deployment.
Regards
Lahiru
On Thu, Jun 25, 2015 at 7:47 PM, Pankaj Saha <[email protected]> wrote:
> Oh yes I have tried the same and able to connect the port in --net=host
> mode.
>
> What i am trying to say is after running them in host mode, running
> containers are not getting any separate ip address.
> On 25-Jun-2015 10:42 PM, "Lahiru Ginnaliya Gamathige" <[email protected]>
> wrote:
>
>> Not at all. Unless you specify each container have its own network
>> interface. --net=host is not the default. What preventing for you to try it
>> out ?
>> On Jun 25, 2015 7:34 PM, "Pankaj Saha" <[email protected]> wrote:
>>
>>> Hi Lahiru
>>>
>>> Isn't it running all of them in --net=host mode will make all the
>>> containers as different applications running on same host?
>>> Though I have tried running all of them in --net=host mode and I
>>> believe its not creating separate host(ip) for each docker containers.
>>> I have confirmed that by inspecting each containers (docker inspect
>>> container_name). They don't have any separate ip address associated with
>>> it, which makes them an application in the local host.
>>>
>>> I am able to do "nc -zv localhost 8930" and its connecting successfully.
>>> So I believe its problem with docker containers or some issue with the
>>> exposed ports.
>>>
>>> Thanks
>>> Pankaj
>>>
>>>
>>>
>>> On Thu, Jun 25, 2015 at 7:35 PM, Lahiru Ginnaliya Gamathige <
>>> [email protected]> wrote:
>>>
>>>> I recommend not to use --link and use environment variables. For now
>>>> you can do a quick test with --net=host. People do not use --link in
>>>> production and we will not use either because it only works in single host
>>>> scenario.
>>>>
>>>>
>>>> On Thu, Jun 25, 2015 at 4:25 PM, Pankaj Saha <[email protected]>
>>>> wrote:
>>>>
>>>>> Yes all docker containers are on the same host and connected through
>>>>> --link option. With link option i have tested airavata and rabbit mq and
>>>>> they are working fine. Prob is with airavata pga and airavata server. API
>>>>> server is running on 8930 which is refusing connection while pga tries to
>>>>> access. So in some situation docker link is working and not other case. I
>>>>> have exposed 8930 8940 8950 none of them are listening .
>>>>>
>>>> How did you expose these ports ? Are these open in the host environment
>>>> ?
>>>>
>>>> Lahiru
>>>>
>>>>> On 25-Jun-2015 7:19 PM, "Lahiru Ginnaliya Gamathige" <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> If this worked yes then this is something to do with docker. Ideally
>>>>>> to solve this kind of an issue you can either use --link option of docker
>>>>>> but this will only work when you run all the containers in the same host.
>>>>>> But if you are running in different hosts and they have to be connected
>>>>>> what people usually do is reading these host information via environment
>>>>>> variable. You can set default values to your dockerfile and always can
>>>>>> overwrite them when you do docker run with -e option.
>>>>>>
>>>>>> Regards
>>>>>> Lahiru
>>>>>>
>>>>>> On Thu, Jun 25, 2015 at 4:15 PM, Lahiru Ginnaliya Gamathige <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> You can quickly test whether this is a docker issue or not by
>>>>>>> running all the containers with --net=host, it will directly give you
>>>>>>> the
>>>>>>> host network environment for all of your containers.
>>>>>>>
>>>>>>> On Thu, Jun 25, 2015 at 3:03 PM, Pankaj Saha <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Suresh,
>>>>>>>>
>>>>>>>> Looks like its an issue with airavata server , which does allow
>>>>>>>> external requests to access its ports. I believe its due to docker
>>>>>>>> which
>>>>>>>> some how protecting the airavata ports to external requests and
>>>>>>>> intentionally refusing the connection.
>>>>>>>>
>>>>>>>> I have tested with three dockers
>>>>>>>> 1. Airavta PGA
>>>>>>>> 2. Airavata Server
>>>>>>>> 3. Rabbit MQ server.
>>>>>>>>
>>>>>>>> Rabbit MQ docker is good to expose it's ports and allowing other
>>>>>>>> containers to access it. I am able to access Rabbit MQ from airavata
>>>>>>>> pga
>>>>>>>> and airavata server container, its working fine.
>>>>>>>>
>>>>>>>> So either its an issue with the way we are exposing the ports or
>>>>>>>> some permission issue inside docker. Until we are able to fix this we
>>>>>>>> can
>>>>>>>> neither release our airavata server docker nor individual server
>>>>>>>> components' docker.
>>>>>>>>
>>>>>>>> I can explain the same tomorrow in demo meeting.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Pankaj
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Jun 25, 2015 at 12:48 PM, Pankaj Saha <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> after dockerization airavata server, rabbit MQ and airavta PGA are
>>>>>>>>> no longer running in a same local host, instead they are running in
>>>>>>>>> three
>>>>>>>>> separate dockers.
>>>>>>>>> airavata server needs rabbit MQ and its able to connect to the
>>>>>>>>> docker container which contains the rabbit MQ iat the container port.
>>>>>>>>> But problem arises when PGA tries to connect to the airavata
>>>>>>>>> server at its specific port(server:8930)
>>>>>>>>> its saying "unable to instantiate a client" in
>>>>>>>>> *AiravataServiceProvider.php* file because of network connection
>>>>>>>>> issue.
>>>>>>>>>
>>>>>>>>> anyone has any idea why its not connecting to pga??
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Jun 24, 2015 at 6:43 PM, Pankaj Saha <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> This is a very known issue when we install airavata server in
>>>>>>>>>> our local system.
>>>>>>>>>> solution is: we have to change the airvata-server and port in
>>>>>>>>>> config_pga and airavata properties file to establish connection
>>>>>>>>>> between
>>>>>>>>>> these two servers.
>>>>>>>>>>
>>>>>>>>>> I m facing this same issue when installing the same in two
>>>>>>>>>> different dockers. Even after changing the server address and port
>>>>>>>>>> number
>>>>>>>>>> its still saying unable to instantiate airavata client.
>>>>>>>>>>
>>>>>>>>>> I have verified the default gateway id is 'default' in both the
>>>>>>>>>> places.
>>>>>>>>>>
>>>>>>>>>> any one has any idea??
>>>>>>>>>>
>>>>>>>>>> this is my last step to dockerizing the whole airavata
>>>>>>>>>> application.
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>> Pankaj
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>