gpt4 book ai didi

node.js - 容器不运行时如何进入Docker镜像文件系统

转载 作者:行者123 更新时间:2023-12-02 20:35:07 27 4
gpt4 key购买 nike

解决无法启动但在文件路径上失败的容器的最佳方法是什么?我需要以某种方式进入镜像并列出,然后查看启动容器/镜像后目录和文件结构实际上是否位于该容器/镜像内部,但是如果启动失败,我有点倒霉了吧?

▶ PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} gcr.io/ssss/s@sha256:5ad05d1d37baae8f548b08a41fa7c5d69465adb8acd4cc9b1703f2ed4ee361ec
Unable to find image 'gcr.io/ssss-1349/ssss@sha256:5ad05d1d37baae8f548b08a41fa7c5d69465adb8acd4cc9b1703f2ed4ee361ec' locally
sha256:5ad05d1d37baae8f548b08a41fa7c5d69465adb8acd4cc9b1703f2ed4ee361ec: Pulling from ssss-1349/ssss
cbdbe7a5bc2a: Already exists
15f7fe915f93: Already exists
3cae4fa026a7: Already exists
bfa729779926: Already exists
db6f693f3456: Pull complete
2e4c635245d4: Pull complete
6017db5d3271: Pull complete
Digest: sha256:5ad05d1d37baae8f548b08a41fa7c5d69465adb8acd4cc9b1703f2ed4ee361ec
Status: Downloaded newer image for gcr.io/ssss-1349/ssss@sha256:5ad05d1d37baae8f548b08a41fa7c5d69465adb8acd4cc9b1703f2ed4ee361ec
yarn run v1.22.4
$ node --optimize_for_size --trace-warnings --experimental-json-modules --no-warnings ./server/server.js
internal/modules/cjs/loader.js:1083
throw err;
^

Error: Cannot find module '/dist/server/server.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1080:15)
at Function.Module._load (internal/modules/cjs/loader.js:923:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
就是说 '/dist/server/server.js'不存在,但我知道必须存在,我复制了它,因此我需要深入研究容器的操作系统,并以某种方式环顾四周,以查看文件结构实际上是什么,以对其进行故障排除
Dockerfile :
FROM node:14.8.0-alpine
ENV PORT 8080
WORKDIR dist
RUN yarn
COPY . ./
CMD [ "yarn", "start" ]

最佳答案

进入容器的一种可能性是通过调用shell并手动调用所需的命令来“覆盖”默认命令(就像在“普通” shell中一样)。这使您可以像在任何普通Linux shell中一样在docker容器中工作。

看看docker run-interactive, -i选项。

示例
如果要启动容器,可以运行e。 G。运行bash(...或sh或您使用的任何shell):

docker run -it <img_name> <arguments> bash
您指定的 CMD将被覆盖。

If the user specifies arguments to docker run then they will override the default specified in CMD.
From the docs.docker.com:


这允许您在容器中工作而不会弄乱 Dockerfile

附加信息
当您的容器运行时,这也适用于 exec
docker exec -it <container_id> bash

编辑:还请注意以下命令: CMD [ "yarn", "start" ]

Unlike the shell form, the exec form does not invoke a command shell
From docs.docker.com)


如果要在 shell 中运行命令,则强制执行以下操作: CMD [ "sh", "-c", "yarn", "start" ]

关于node.js - 容器不运行时如何进入Docker镜像文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63772121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com