gpt4 book ai didi

linux - 只有部分本地构建的 Docker 镜像无法在远程服务器上运行(错误 : "No command specified")

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:38 25 4
gpt4 key购买 nike

我有一个令人困惑的 Docker 问题。我在我的 Mint 笔记本电脑和 Ubuntu VPS 上运行 Docker。过去我已经能够在本地构建图像并将它们发送到服务器并让它们在那里运行。然而,为了清楚起见,工作的可能是我在本地运行 Ubuntu 时构建的(稍后会详细介绍)。

我有一个基于 Alpine 的示例:

FROM alpine:3.5

# Do a system update
RUN apk update

ENTRYPOINT ["sleep", "3"]

我像这样构建,然后发送到远程:

docker build -t alpine-sleep .
docker save alpine-sleep | gzip > alpine-sleep.tgz
rsync --progress alpine-sleep.tgz myserver.example.com:/path/to/images/

然后我在远程解压/导入并运行,因此:

docker import /path/to/images/alpine-sleep.tgz alpine-sleep
docker run -it alpine-sleep

我收到此控制台回复:

docker: Error response from daemon: No command specified.
See 'docker run --help'.

但是,如果我将 Dockerfile 复制到远程,则执行以下操作:

docker build -t alpine-sleep-localbuild .
docker run -it alpine-sleep-localbuild

然后我的 sleep 工作正常。

本地我的 Docker 和内核版本:

jon@jvb ~/alpine_test $ uname -r
4.4.0-79-generic
jon@jvb ~/alpine_test $ docker -v
Docker version 1.12.6, build 78d1802

远程:

root@vps:~/alpine-sleep# uname -r
3.13.0-24-generic
root@vps:~/alpine-sleep# docker -v
Docker version 17.05.0-ce, build 89658be

我想知道,内核中的主要差异是否会产生影响?我预计 3.13 到 4.4 是一个相当大的跳跃。我不记得当我在本地运行 Ubuntu 时构建东西时使用的是哪个版本的内核,但如果它是 3.x,我不会感到惊讶。

另一件让我意想不到的事情是 Docker 版本号的巨大变化。如何在本地获取版本 1.x 并在远程获取版本 17.x?该项目是否经过版本重新编号?

更新

我刚刚在本地运行 Ubuntu 时检查了内核版本,结果是:

4.4.0-75-generic

所以,这让我认为主要的内核差异不能是罪魁祸首。

最佳答案

问题是,当您使用错误的保存/加载和导出/导入组合时,Docker 不会警告您。您保存/加载图像,并从容器导出/导入 tar 文件。由于您正在执行 docker save 来保存镜像,因此您需要执行 docker load 来将其恢复到其他主机上:

docker load < /path/to/images/alpine-sleep.tgz

关于linux - 只有部分本地构建的 Docker 镜像无法在远程服务器上运行(错误 : "No command specified"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44569873/

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