Search code examples
dockercontainers

When I run "Docker ps" I can't see some container. What wrong with me?


I am testing docker with official doc. just following official doc. I am using official code

https://github.com/docker/getting-started/tree/master/app

and then this Dockerfile

# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000

and then build command

docker build -t getting-started .

and then run command

docker run -dp 3000:3000 getting-started

It's perfect. but I just want to modified a little code more simple. like this. This is nodejs code.

const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

and then Dockerfile like this

FROM node:12-alpine
WORKDIR /app
COPY . .
CMD ["node", "src/index.js"]
EXPOSE 3000

and then build and run same command. I checked my running container with this command "docker ps".I couldn't see my container is running.

I ran "docker ps -a" command. I was able to see the container with no port mapping container. So I wasn't able to connect my container.

I added both of docker state. I ran same command but firstcontainer don't have port mapping. What's wrong?

docker run -dp 80:3000 getting-started   -> this is official app
docker run -dp 3000:3000 firstcontainer  -> my simple app
docker ps -a

CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS  PORTS
fea13c68893f   firstcontainer    "docker-entrypoint.s…"   10 seconds ago   Exited (1) 10 seconds ago  
2f552d1e9f55   getting-started   "docker-entrypoint.s…"   26 seconds ago   Up 25 seconds  
 0.0.0.0:80->3000/tcp, :::80->3000/tcp

Solution

  • You can run the docker command in foreground to see the logs (without the d flag):

    docker run -p 3000:3000 firstcontainer  -> my simple app
    

    and see what's the error