为什么执行docker 运行 命令后容器立即退出?
Why is container exiting immediately after executing docker run command?
我是第一次 运行ning docker,我的容器在 docker 运行 命令后立即退出。 docker ps
向我显示一个空列表。当我 运行 docker ps -a
时,我得到了我在退出状态下推送的所有容器的结果。
我已经尝试使用 -ti
命令,但容器正在退出状态。
我正在使用以下命令 运行 文件:$ sudo docker build -t test_api3 .
和 $ sudo docker run -p 8080:3000 -ti test_api3
或 ($ sudo docker run -p 8080:3000 -d test_api3
)
Docker 文件
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm","start" ]
package.json
{
"name": "firstapp",
"version": "1.0.0",
"description": "first demo app",
"main": "http-server.js",
"scripts": {
"start": "node http-server.js"
},
"keywords": [
"S"
],
"author": "test",
"license": "ISC"
}
http-server.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
我是 运行 ubuntu os 并且它可以工作(如果仍然无法工作,请告诉我您的设置)。代码的唯一问题是您不能使用地址 127.0.0.1,必须在您的 http-server.js 中使用 0.0.0.0。更多解释请参考下面的link
https://forums.docker.com/t/network-param-for-connecting-to-127-0-0-1-in-container/2333
我是第一次 运行ning docker,我的容器在 docker 运行 命令后立即退出。 docker ps
向我显示一个空列表。当我 运行 docker ps -a
时,我得到了我在退出状态下推送的所有容器的结果。
我已经尝试使用 -ti
命令,但容器正在退出状态。
我正在使用以下命令 运行 文件:$ sudo docker build -t test_api3 .
和 $ sudo docker run -p 8080:3000 -ti test_api3
或 ($ sudo docker run -p 8080:3000 -d test_api3
)
Docker 文件
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm","start" ]
package.json
{
"name": "firstapp",
"version": "1.0.0",
"description": "first demo app",
"main": "http-server.js",
"scripts": {
"start": "node http-server.js"
},
"keywords": [
"S"
],
"author": "test",
"license": "ISC"
}
http-server.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
我是 运行 ubuntu os 并且它可以工作(如果仍然无法工作,请告诉我您的设置)。代码的唯一问题是您不能使用地址 127.0.0.1,必须在您的 http-server.js 中使用 0.0.0.0。更多解释请参考下面的link
https://forums.docker.com/t/network-param-for-connecting-to-127-0-0-1-in-container/2333