AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 757210
Accepted
Greendrake
Greendrake
Asked: 2016-02-15 21:09:53 +0800 CST2016-02-15 21:09:53 +0800 CST 2016-02-15 21:09:53 +0800 CST

来自重新导入的 docker 映像/容器的“未指定命令”

  • 772

我试图从一台机器上获取一个 docker 容器并在另一台机器上运行它并遇到此错误:“来自守护进程的错误响应:未指定命令”。

下面是一个显示问题的简化示例:

docker --version
Docker version 1.10.1, build 9e83765
docker pull ubuntu
docker run --name u1 -dit ubuntu:latest
docker export -o exported u1
docker stop u1
docker rm u1
docker import exported ubuntu:imported
docker run --name u1 -dit ubuntu:imported
docker: Error response from daemon: No command specified.

在该示例中,我们首先拉取一个映像(ubuntu)并u1从中成功创建/运行容器。然后我们将该容器导出到文件(exported),停止/删除容器,将文件导入新图像(ubuntu:imported)并尝试从中运行新容器。它失败。

docker
  • 6 6 个回答
  • 93726 Views

6 个回答

  • Voted
  1. Best Answer
    Greendrake
    2016-08-19T01:42:11+08:002016-08-19T01:42:11+08:00

    docker export不会导出关于容器的所有内容——只是文件系统。因此,当将转储导入新的 docker 映像时,需要指定额外的标志来重新创建上下文。

    例如,如果原始容器运行良好,因为用于创建其映像的 Dockerfile 包含在其中,则以CMD ["/usr/bin/supervisord"]这种方式导入您的转储:

    docker import \
    --change 'CMD ["/usr/bin/supervisord"]' \
    path/to/dump.tar imagename:tagname
    
    • 33
  2. Jian Pei
    2018-05-17T18:58:55+08:002018-05-17T18:58:55+08:00

    您可以使用docker load命令从存档文件加载图像。此命令将一起导入图像文件和 args。

    • 23
  3. Ogglas
    2018-10-13T03:32:33+08:002018-10-13T03:32:33+08:00

    尝试导出和导入 docker 时出现此错误microsoft/mssql-server-linux。

    https://hub.docker.com/r/microsoft/mssql-server-linux/

    导出和导入命令:

    docker export --output "C:\Users\oscar\Desktop\sqlTestMS.tar" msSQL
    
    docker import "C:\Users\oscar\Desktop\sqlTestMS.tar" mssql
    

    但是我们找不到运行它的命令。解决方案是列出导出机器上的所有容器并查看运行的命令。

    docker ps
    

    在此处输入图像描述

    从那里我们可以找到如何运行正确的命令:

    docker run --name msSQL -p 1401:1433 -d mssql:latest /opt/mssql/bin/sqlservr
    
    • 2
  4. pmoksuz
    2016-04-12T13:11:24+08:002016-04-12T13:11:24+08:00

    当您导出容器时,它会丢失包含图像层和元数据的自己的历史记录。所以你的容器失去了它的 pid 状态。

    每个容器都应该有一个初始(根)进程。您将 dockerfile 上的默认入口点覆盖为 bash。[已编辑] 我认为即使您不覆盖它也使用默认值,而不是在 ubuntu 基础映像中定义。因此,您应该使用 cmd 命令开始您的初始过程。我认为没有错误。它是一个可重用的 dockerfile 功能。

    • 1
  5. 030
    2017-02-21T06:23:34+08:002017-02-21T06:23:34+08:00

    得到它与这些额外的步骤一起工作:

    1. 创建 Dockerfile 如下:

      FROM ubuntu:imported
      ENTRYPOINT ["/bin/bash"]
      
    2. 构建新图像:

      docker build -t ubuntu:importedwithdockerfile .
      
    3. 现在它将运行:

      docker run --name u1 -dit ubuntu:importedwithdockerfile
      

    但是,目前还不清楚为什么简单地导出然后导入的图像不能立即工作。这是一个错误吗?

    • 1
  6. Shakiba Moshiri
    2022-01-12T12:50:52+08:002022-01-12T12:50:52+08:00

    如果使用import

    docker save nginx:alpine | ssh rmeote-host docker import -
    sha256:f6098fc18511abbbfe9e52ed0d0ccc1fbe4f7b018ee1cd85392999aa92ebba1b
    
    # we see errors
    docker container run -d -p 2020:80  nginx:alpine
    docker: Error response from daemon: No command specified.
    See 'docker run --help'.
    

    如果使用load

    docker save nginx:alpine | ssh remote-host "cat - | docker load"
    Loaded image: nginx:alpine
    
    docker container run --name nginx -dp 2020:80 nginx:alpine
    7cc8836bef1e276f8aa986a09186e9e227542be3b094b082b9ab1f6d3c290a99
    docker ps
    CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS        PORTS                                   NAMES
    7cc8836bef1e   nginx:alpine   "/docker-entrypoint.…"   2 seconds ago   Up 1 second   0.0.0.0:2020->80/tcp, :::2020->80/tcp   nginx
    
    • 0

相关问题

  • 创建后立即启动 Docker 容器?

  • 如何在不指定命令的情况下在 Docker 容器中运行完整的操作系统?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve