Unable to access docker container from the port mapped by docker

I have created a docker container but unable to run it on the port mapped by the docker (http://localhost:3000). Below are the details of docker configurations that I am using in my app.

Docker version : 17.05.0-ce

  • Bootstrapping docker deamon
  • How to launch a new docker container from inside a docker container on openshift
  • Why do Docker official images not use USER as required by “best practices”
  • How to share a Docker container folder when it is not empty?
  • Docker run script in host on docker-compose up
  • How can I install pdal in python in a dockerfile?
  • Os : ubuntu 16.04

    My Dockerfile:

    FROM node:boron
    # Create app directory
    RUN mkdir -p /usr/src/app
    WORKDIR /usr/src/app
    COPY   . /usr/src/app
    RUN     npm install -g bower 
    RUN     npm install -g grunt-cli
    RUN     npm install 
    RUN     bower install --allow-root
    #RUN     grunt --force
    EXPOSE 3000
    CMD     ["grunt", "serve"]

    Creating docker container:

    docker build -t viki76/ng-app .

    Running Container:

    docker run  -p 3000:3000 -d viki76/ng-app

    docker ps:

    21541171d884   viki/ng-app   "grunt serve"  10 min ago Up>3000/tcp


    Updated Dockerfile configuration

    EXPOSE 9000

    $ docker run -p 9000:9000 viki76/ng-app

    Running "serve" task
    Running "clean:server" (clean) task
    >> 1 path cleaned.
    Running "wiredep:app" (wiredep) task
    Running "wiredep:test" (wiredep) task
    Running "concurrent:server" (concurrent) task
    Running "copy:styles" (copy) task
    Copied 2 files
    Done, without errors.
    Execution Time (2017-05-17 13:00:13 UTC-0)
    loading tasks               189ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 88%
    loading grunt-contrib-copy   11ms  ▇▇ 5%
    copy:styles                  16ms  ▇▇▇ 7%
    Total 216ms
    Running "postcss:server" (postcss) task
    >> 2 processed stylesheets created.
    Running "connect:livereload" (connect) task
    Started connect web server on http://localhost:9000
    Running "watch" task

    From Gruntfile.js

    connect: {
      options: {
        port: 9000,
        // Change this to '' to access the server from outside.
        hostname: '',
        livereload: 35729

    Please help me to fix it.

  • does docker rmi remove images from storage backend
  • Can't push my own image to IBM Bluemix Registry
  • Remove docker image depending on an already removed image
  • Mongodb, Boot2Docker, and Replica Set connections
  • Connecting to Apple's APNS using cURL with HTTP\2 support via nghttp2
  • Keeping access to STDIN of a program run in the background via a FIFO
  • 3 Solutions collect form web for “Unable to access docker container from the port mapped by docker”

    I think your problem is that grunt is binding to localhost:9000 – which is internal to the container so the port you’re publishing won’t have any effect.

    It needs to be listening on – I couldn’t tell you off hand what your Gruntfile.js should say for that to happen, but off-hand it looks like, out of the box, grunt serve will only serve from localhost.

    You’re doing everyhthing right, though I’m assuming that your problem is simply configuration.

    By default, grunt-serve serves on port 9000, not 3000. Do you want to try and EXPOSE and publish that port?

    Try running the container in Host mode:


    Pass the above when you run the container.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.