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 / 问题 / 573378
Accepted
mikemaccana
mikemaccana
Asked: 2014-02-06 06:51:00 +0800 CST2014-02-06 06:51:00 +0800 CST 2014-02-06 06:51:00 +0800 CST

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

  • 772

我正在关注CoreOS Docker 文档,它提到使用以下命令启动容器:

docker run someImageName /bin/somebinary

哪里someImageName有图。当 /bin/somebinary 退出时,图像将不再运行。

我只想运行一个图像,而不指定要运行的任何二进制文件。相反,我只想运行通常在映像 OS 中运行的服务(例如 systemd / sysvinit)。

这似乎是任何人都想用 Docker 做的最常见的事情,但是尝试在没有命令的情况下运行映像会返回:

2014/02/05 14:49:19 Error: create: No command specified

如何启动 Docker 容器并运行完整的操作系统,而不是指定命令?

docker
  • 4 4 个回答
  • 61539 Views

4 个回答

  • Voted
  1. Best Answer
    Fred the Magic Wonder Dog
    2014-02-06T07:15:55+08:002014-02-06T07:15:55+08:00

    如此处所述,您只需/sbin/init像从单用户模式到多用户模式的任何其他 unix 引导一样以命令运行。

    https://stackoverflow.com/questions/19332662/start-full-container-in-docker

    容器可以是成熟的操作系统,但它们不一定是(虚拟机也不是,只是配置和管理更复杂)。

    我想说 Docker 的全部意义在于让应用程序容器变得简单,这样你只需要配置一个应用程序,而不是整个操作系统。

    • 26
  2. EEAA
    2014-02-06T06:53:54+08:002014-02-06T06:53:54+08:00

    Docker 是一个用于管理和部署应用程序容器的系统,而不是操作系统容器。似乎您将运行 docker 容器与引导操作系统混为一谈。

    您的 Docker 容器应该是单一用途、范围非常狭窄的应用程序,可以使用单个命令启动。如果您正在寻找比这更复杂的东西,那么 Docker 不是您正在寻找的解决方案。在这种情况下,请查看 KVM、ESXi、OpenVZ、LXD等。

    如果您只是在寻找如何为您的容器指定默认值CMD,ENTRYPOINT您可以在构建时使用 Dockerfile 执行此操作。

    • 12
  3. Markus Miller
    2017-02-17T13:58:55+08:002017-02-17T13:58:55+08:00

    要在容器中运行完整的操作系统,请创建以下 Dockerfile:

    FROM fedora:25
    
    CMD /sbin/init
    

    然后构建并启动容器并在其中输入一个 shell 以探索其中运行的服务:

    docker build -t os .
    docker run -d --privileged --name os os
    docker exec -it os bash
    

    容器内的完整系统服务。美丽的。

    • 7
  4. DimiDak
    2019-06-13T04:50:41+08:002019-06-13T04:50:41+08:00
    docker pull ubuntu
    

    只需根据需要多次从同一图像运行。将创建新容器,然后可以启动和停止它们,每个容器都保存自己的配置。为了您的方便,最好给每个容器一个带有“--name”的名称。

    菲:

    docker run --name MyContainer1 <ubuntu image>
    docker run --name MyContainer2 <ubuntu image>
    docker run --name MyContainer3 <ubuntu image>
    

    而已。

    $ docker ps
    CONTAINER ID        IMAGE            CREATED          STATUS               NAMES
    a7e789711e62        67759a80360c   12 hours ago     Up 2 minutes         MyContainer1
    87ae9c5c3f84        67759a80360c   12 hours ago     Up About a minute    MyContainer2
    c1524520d864        67759a80360c   12 hours ago     Up About a minute    MyContainer3
    

    之后,您将永久创建容器,并且可以像 VM 一样启动和停止它们。

    docker start MyContainer1
    

    进入容器并做你想做的事:

    docker exec -it MyContainer1 bash
    
    • 3

相关问题

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