Docker Community Forums

Share and learn in the Docker community.

How to run docker daemon from shell and browser?

docker

(Zhshqzyc) #1

I just published an asp.net mvc application to a CentOS server at port 2375. So how to run it from the shell and browser?

See

The image name is “dockerdemo”.

Thanks.


(Nathan Le Claire) #2

You probably didn’t actually expose that application on port 2375 though, right? That’s the port used for the Docker API, as shown in your CLI screenshot above.

If you want to access ports in containers you need to run the container using -p <hostport>:<containerport> and then access them at <hostip>:<hostport> (or localhost:<hostport> if you’re directly on the host machine).

I can’t see the PORTS column in your docker ps output, so there’s no way to tell you how to access that port.


(Zhshqzyc) #3

Hi I run the command ps. Getting the image below.

Thanks


(Nathan Le Claire) #4

You haven’t exposed any ports. Use docker run's -p / --publish flag.


(Zhshqzyc) #5

It shows nothing.


(Nathan Le Claire) #6
$ docker run --help

You will see the -p / --publish flag there.


(Zhshqzyc) #7

I just checked the help. There is no -p / --port flag. Also there is no -p / --publish as well.

But there is -p / --publish-all, what is run's? I couldn’t find it.


(Nathan Le Claire) #8

I mis-spoke (it’s not --port), it’s docker run --publish, and I am 100% certain that it exists. Maybe you’re overlooking it?

  -p, --publish=[]                Publish a container's port(s) to the host

There is also -P (note the capitalization) and --publish-all, as you noted:

  -P, --publish-all               Publish all exposed ports to random ports

As for run's, that’s a communication error, not a part of the Docker CLI. Apostrophe (') + s in American English is used to indicate ownership, as in “my brother’s car”, or “my mother’s house”. I was trying to indicate that docker run has a --publish flag: ergo, docker run's --publish flag.


(Nathan Le Claire) #9

Anyway, -p <hostport>:<containerport> will forward a port from the container (which has its own sandboxed network namespace) to the host localhost. e.g.:

$ docker run -p 8080:8080 foobar
...
$ curl localhost:8080

(Zhshqzyc) #10

Please see my command.


(Nathan Le Claire) #11

@zhshqzyc No slash, just pick -p or --publish – I was just using it as a visual indicator to choose one or the other.

You want something like

$ docker -H tcp://10.50.10.28:2375 run -d -p 8080:8080 dockerdemo

(Substitute your port for 8080)

If you are not that familiar with UNIX command line I suggest picking up a few basics to get a feel for the shell, otherwise Docker CLI will be much harder to use.


(Zhshqzyc) #12

I run the command as below:

However when I type the url http://localhost:5000 in the browser.

This site can’t be reached


(Nathan Le Claire) #13

Use the --publish flag like I’ve suggested above.


(Zhshqzyc) #14

I guess that I messed up. I created a container and an image. The port was 5004. So on my Windows desktop, I typed http://10.50.10.28:5004. It is running.

I wanted to play around it. So I went to the Linux shell and stopped the container. I tried to start the container but I don’t know whether the image started or not. Anyway the web page is not shown. I am not sure how to play the previous scene again?