我是Docker的新手,所以我可能无法正确构建问题。
我使用下面的命令为我的节点js应用程序创建了一个图像。
docker build -t ramakishore/nodeapp .
我通过执行以下命令
为此图像创建了一个容器docker run -p 49160:8080 -d ramakishore/nodeapp
docker ps命令显示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ca64b61afca7 ramakishore/nodeapp "npm start" 6 minutes ago Up 6 minutes 0.0.0.0:49160->8080/tcp gigantic_swanson
我的dockerFile的内容是
FROM node:boron
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
EXPOSE 8080
CMD [ "npm", "start" ]
当我在chrome中输入http://localhost:8080时,我希望显示我的节点页面,而是显示“无法访问此站点”。
知道我做错了什么。
答案 0 :(得分:0)
首先,我会通过输入容器并查看正在运行的内容来检查您的应用程序是否在Docker容器内运行:
$ docker exec -ti ca64b61afca7
$ ps aux
然后检查以确保它正在侦听正确的端口(和0.0.0.0):
$ netstat -tunlp
接下来,我会尝试从容器内部卷曲:
$ curl localhost:8080
如果此方法有效,您的应用就会正常运行,问题出在容器和主机之间。
接下来我将退出docker容器(ctrl + d
)并尝试从主机点击应用程序:
$ curl localhost:49160
注意:如果您使用的是Mac或Windows,则可能需要点击泊坞主机的IP地址 - 您可以通过echo $DOCKER_HOST
找到此IP(或者在Windows echo %DOCKER_HOST%
上。
例如,如果您的DOCKER_HOST
是192.168.1.50,那么您可以执行以下操作:
curl 192.168.1.50:49160