装载路径时,Docker容器运行立即退出

装载路径时,Docker容器运行立即退出,docker,docker-for-windows,Docker,Docker For Windows,我在Windows10上运行docker。当我在没有-v标志的情况下运行此命令以将主机驱动器和文件路径装载到容器路径时,容器运行正常,我可以连接到它。但是,当我提供装载路径的标志时,容器立即退出。这是我的命令,运行时没有任何错误 docker container run -v c:/container-fs:/usr/src/app --publish 8001:8080 --detach --name bboard-ubuntu bulletinboard:Ubuntu 当我运行命令dock

我在Windows10上运行docker。当我在没有
-v
标志的情况下运行此命令以将主机驱动器和文件路径装载到容器路径时,容器运行正常,我可以连接到它。但是,当我提供装载路径的标志时,容器立即退出。这是我的命令,运行时没有任何错误

docker container run -v c:/container-fs:/usr/src/app --publish 8001:8080 --detach --name bboard-ubuntu bulletinboard:Ubuntu
当我运行命令
docker container ls--all
时,我看到名为
bboard ubuntu
的容器几乎在启动后立即退出

当尝试使用命令
docker exec-it bboard ubuntu/bin/bash
执行到容器中时,我得到如下错误消息:

来自守护进程的错误响应:容器 26a2d3361dfc0c890xxxxxxxxxxxxxxx97be532ab6e8771652e5b未运行

当我移除挂载标志并像下面这样运行它时,没有问题,我可以
exec
进入容器文件系统

docker container run --publish 8001:8080 --detach --name bboard-ubuntu bulletinboard:Ubuntu
如何跟踪和修复由于提供装载标志而导致的此问题

编辑 这是Dockerfile

FROM ubuntu:18.04

WORKDIR /usr/src/app
COPY package.json .

# replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

RUN apt-get update \
    && apt-get install -y curl \
    && apt-get -y autoclean
RUN apt-get install -y apt-utils
RUN apt-get -y install nano

# nvm environment variables
ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 13.9.0

# install nvm
# https://github.com/creationix/nvm#install-script
RUN curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.2/install.sh | bash

# install node and npm
RUN source $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION \
    && nvm alias default $NODE_VERSION \
    && nvm use default

# add node and npm to path so the commands are available
ENV NODE_PATH $NVM_DIR/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH

# confirm installation
RUN node -v
RUN npm -v

RUN npm install

EXPOSE 8080
CMD [ "npm", "start" ]

COPY . .
以下是删除分离后的错误

npm错误!代码enoint npm ERR!系统调用打开npm错误!路径 /usr/src/app/package.json npm ERR!errno-2 npm ERR!埃诺特:没有 这样的文件或目录,打开“/usr/src/app/package.json”npm ERR! eNONT这与npm无法找到文件有关。npm错误! 埃诺特

npm错误!此运行的完整日志可在以下位置找到:npm ERR
/root/.npm/_logs/2020-02-26T19_02_33_143Z-debug.log


我正在windows主机上运行这些命令。在哪里可以找到
/root/.npm/
日志文件夹?

尝试重置主机驱动器的凭据。在看不到映像
Dockerfile
的情况下,看起来您正在使用主机上的任意随机内容覆盖映像中的应用程序源代码,这可能会导致各种问题(包括可怕的换行问题)。您的第一步可能是在不使用
--detach
的情况下运行此程序,并查看它实际打印出的日志消息。@DavidMaze我在不使用detach的情况下运行并更新了问题。我无法理解为什么package.json的副本没有出现在那里。根据此文档中的节点库映像,它应该是这样的,对吗?我只有将基本映像更改为ubuntu,因此我尝试在不同的基本映像上安装Node。您的
docker run-v
选项正在使用主机的内容覆盖
包.json
文件和docker文件中安装的其他内容。没有“合并”操作时,整个
/usr/src/app
树被隐藏。那么修复方法是什么呢?当前文件夹中的副本也有相同的package.json文件。我是docker的新手,因此可能缺少按执行顺序排列的方法。另外,-v的原因是从主机访问已停靠的文件系统尝试重置c主机驱动器的redentials。在看不到映像
Dockerfile
的情况下,看起来您正在使用主机上的任何随机内容覆盖映像中的应用程序源代码,这可能会导致各种问题(包括可怕的换行问题)。您的第一步可能是在不使用
--detach
的情况下运行此程序,并查看它实际打印出的日志消息。@DavidMaze我在不使用detach的情况下运行并更新了问题。我无法理解为什么package.json的副本没有出现在那里。根据此文档中的节点库映像,它应该是这样的,对吗?我只有将基本映像更改为ubuntu,因此我尝试在不同的基本映像上安装Node。您的
docker run-v
选项正在使用主机的内容覆盖
包.json
文件和docker文件中安装的其他内容。没有“合并”操作时,整个
/usr/src/app
树被隐藏。那么修复方法是什么呢?当前文件夹中的副本也有相同的package.json文件。我是docker的新手,因此可能在执行操作的顺序中缺少一个方法。另外,-v的原因是从主机访问已停靠的文件系统