I have a container running hadoop. I have another docker file which contains Map-Reduce job commands like creating input directory, processing a default example, displaying output. Base image for the second file is hadoop\_image created from first docker file.

**EDIT**

Dockerfile - for hadoop

```
 #base image is ubuntu:precise
 #cdh installation
 #hadoop-0.20-conf-pseudo installation
 #CMD to start-all.sh

```

start-all.sh

```
 #start all the services under /etc/init.d/hadoop-*

```

hadoop base image created from this.

Dockerfile2

```
 #base image is hadoop
 #flume-ng and flume-ng agent installation
 #conf change
 #flume-start.sh

```

flume-start.sh

```
#start flume services

```

I am running both containers separately. It works fine. But if i run

```
docker run -it flume_service

```

it starts flume and show me a bash prompt [/bin/bash is the last line of flume-start.sh]. The i execute

```
hadoop fs -ls /

```

in the second running container, i am getting the following error 

ls: Call From 514fa776649a/172.17.5.188 to localhost:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: <http://wiki.apache.org/hadoop/ConnectionRefused>

I understand i am getting this error because hadoop services are not started yet. But my doubt is my first container is running. I am using this as base image for second container. Then why am i getting this error? Do i need to change anything in hdfs-site.xml file on flume contianer?

Pseudo-Distributed mode installation.

Any suggestions?

Or Do i need to expose any ports and like so? If so, please provide me an example

**EDIT 2**

```
  iptables -t nat -L -n

```

I see 

```
  sudo iptables -t nat -L -n
  Chain PREROUTING (policy ACCEPT)
  target     prot opt source               destination
  DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           ADDRTYPE match dst-

  Chain POSTROUTING (policy ACCEPT)
  target     prot opt source               destination
  MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-6
  MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-6
  MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24
  MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0

  Chain OUTPUT (policy ACCEPT)
  target     prot opt source               destination
  DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8         ADDRTYPE match dst-

 Chain DOCKER (2 references)
 target     prot opt source               destination

```

It is in docker@domian. Not inside a container.

**EDIT**
 See last comment under surazj' answer