docker - 没有设置WORKDIR的Docker无法运行

标签 docker

这不起作用:

docker run -d -p 80:80 image /go/src/hello

这有效:
docker run -w /go/src/ -d -p 80:80 image ./hello

我对以上结果感到困惑。
我喜欢第一个,但是不起作用。任何人都可以提供帮助。

最佳答案

它取决于ENTRYPOINT(您可以使用docker inspect --format='{{.Config.Entrypoint}}' image看到它)

默认的ENTRYPOINTsh -c,两者都应该起作用。
与其他ENTRYPOINT一起使用之前,它可能希望位于正确的文件夹中。

另外,docker log <container>有助于了解第一次尝试输出的内容。

OP Clerk comments一样,它来自golang Dockerfile/image,这意味着“hello”将引用hello中的已编译$GOPATH/bin可执行文件,或在src文件夹中使用go build构建的可执行文件。

关于docker - 没有设置WORKDIR的Docker无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35380134/

相关文章:

docker - 无法用冒号映射 docker 卷

ruby-on-rails - Rails View 渲染在 Docker 中很慢

docker - 尽管我使用Maven Docker插件构建,但未列出Docker镜像

macos - docker 设备 macOS 上没有剩余空间

linux - 以退出代码2退出的Docker容器 “sh can' t open 'start_script.sh':没有这样的文件或目录”

mysql - 在具有多个容器实例的 Docker 容器中使用 Rails 运行迁移

angular - 在 docker 内使用 chrome headless 运行 ng 测试(angular-cli 业力测试)

docker - GitLab CI runner 无法连接到 tcp ://localhost:2375 in kubernetes

docker - 无法在 Jenkins 的 docker 镜像中克隆子模块

如果使用自定义 ssl 证书,docker 客户端无法同时读取 "docker private registry"和 "online docker registry"