2个进程在同一个端口?
我正在Docker容器中运行一个节点应用程序。
这是dockerfile
FROM maven:3.3.3-jdk-8 #install node RUN apt-get update RUN apt-get -qq update RUN apt-get install -y nodejs npm # TODO could uninstall some build dependencies RUN update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10 # Install packages for envsubst RUN apt-get update && apt-get upgrade -y --force-yes && rm -rf /var/lib/apt/lists/*; RUN apt-get update RUN apt-get install -y gettext-base # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # cache package.json and node_modules to speed up builds COPY src src COPY package.json package.json #COPY node_modules node_modules COPY pom.xml pom.xml COPY Gruntfile.js Gruntfile.js COPY gulpfile.js gulpfile.js COPY settings.xml settings.xml # Substitute dependencies from environment variables COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] EXPOSE 8000
entrypoint.sh
#!/bin/sh rm -rf /usr/src/app/src/js/app.js envsubst < "/usr/src/app/src/js/envapp.js" > "/usr/src/app/src/js/app.js" mvn clean install -DskipTests -s settings.xml exec npm start
当我进入容器,我看到有两个不同的PID运行在这个容器上
root@63387c253612:/usr/src/app# ps aux | grep '8000' root 158 0.0 0.0 4332 648 ? S 13:54 0:00 sh -c http-server -a 0.0.0.0 -p 8000 root 159 0.1 0.7 668520 15260 ? Sl 13:54 0:00 node /usr/src/app/node_modules/.bin/http-server -a 0.0.0.0 -p 8000 root 168 0.0 0.0 12808 976 ? S+ 13:55 0:00 grep 8000
这是预期的吗?
这并不意味着它们都在8000上进行监听。这意味着它们有参数在8000上进行监听。在这种情况下,有一个叫做sh -c http-server ...
的包装程序,即调用node /usr/src
。
您应该使用lsof
或netstat
来查看实际打开的内容,或者检入/ proc。
- 如何在docker-machine中保存对boot2docker的更改?
- 设置单个CLI来与多个容器连接?
- Docker alpine image:ERROR 2002(HY000):无法通过套接字'/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2“没有这样的文件或目录”)
- 带有PHP7的Xdebug运行在带有nginx的Docker容器上的远程EC2实例上
- 如何使用Ansible将Docker Swarmkit令牌与swarmkit节点配合使用
- docker上的Grafana设置 – 无法findconfiguration文件
- 在Docker容器中从主机运行可执行文件
- 自定义docker图像具有巨大的规模增长
- Docker云服务发现两个容器