我非常喜欢新的Docker,因此如果这是一个非常愚蠢的问题,请原谅我。谷歌搜索并没有真正产生我想要的东西。我有一个非常简单的Dockerfile,看起来像下面的
FROM node:9.6.1
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --silent
COPY . /usr/src/app
RUN npm start
EXPOSE 8000
应用程序在容器中的端口8000上运行。是否可以在没有-p 8000:8000
的情况下访问端口8000?我只希望能够做到
docker run imageName
,然后在我的浏览器上的localhost:8000上访问该应用程序
答案 0 :(得分:0)
默认情况下,创建容器时,它不会将其任何端口发布到外界。要使端口可用于Docker外部的服务或未连接到容器网络的Docker容器,请使用 --publish
或-p
标志。这将创建一个防火墙规则,该规则将容器端口映射到Docker主机上的端口。
了解更多:Container networking - Published ports
但是您可以使用docker-compose
来设置配置并轻松运行docker镜像。
docker-compose
。 Install Docker Compose 第二次在docker-compose.yml
旁边创建Dockerfile
并在上面复制此代码
version: '3'
services:
web:
build: .
ports:
- "8000:8000"
现在您可以使用此命令启动docker
docker-compose up
如果要在后台运行服务,可以将 -d
标志(用于“分离”模式)传递给docker-compose up -d
,然后使用docker-compose ps查看当前正在运行的内容。 / p>