【问题标题】:Dockerfile CMD Works on MacOS, Fails on LinuxDockerfile CMD 在 MacOS 上工作,在 Linux 上失败
【发布时间】:2020-10-11 19:24:39
【问题描述】:

我长期以来在 MacOS 上构建容器的 Dockerfile 在 Linux(Ubuntu 18.04)上执行构建时无法创建可行的容器。映像构建,但随后 k8s 无法启动容器。错误日志显示“/bin/sh: ./dgs: not found”。尝试了很多排列,但似乎容器内的环境发生了某种变化。我什至可以输入 ls -la 并查看 stdout 中列出的可执行文件,但 CMD 看不到它。

构建文件夹:

drwxrwxr-x 2 user1 user1     4096 Jun 21 16:26 .
drwxr-xr-x 6 user1 user1     4096 Jun 21 16:19 ..
-rw-r--r-- 1 user1 user1   257867 Jun 21 16:20 ca-certificates.crt
-rwxr-xr-x 1 user1 user1 15826392 Jun 21 16:40 dgs
-rw-rw-r-- 1 user1 user1      151 Jun 21 16:59 Dockerfile

Dockerfile:

FROM alpine:3.6
COPY ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /home
COPY ./dgs dgs
RUN ls -la
EXPOSE 8090
CMD ./dgs

码头工人版本:

Client:
 Version:           18.09.1
 API version:       1.39
 Go version:        go1.10.6
 Git commit:        4c52b90
 Built:             Wed Jan  9 19:35:23 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.1
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       4c52b90
  Built:            Wed Jan  9 19:02:44 2019
  OS/Arch:          linux/amd64
  Experimental:     false

【问题讨论】:

  • 也许您应该更改 Dockerfile 的 COPY 层。小心点。试试这个./dgs ./dgs
  • 感谢您的建议。唉,容器因以下错误而终止:/bin/sh: ./dgs: not found

标签: linux docker build dockerfile


【解决方案1】:

我会更明确:

WORKDIR /home
COPY ./dgs /home/dgs
RUN chmod +x /home/dgs
CMD ["/home/dgs"]

【讨论】:

猜你喜欢
  • 2019-04-21
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多