繁体   English   中英

如何通过Docker在同一主机上安装多个ubuntu镜像?

[英]How to install multiple ubuntu images in the same host via docker?

我需要通过主机中的数据分析软件来运行多线程。 但是我发现如果直接使用多线程,则得出的结果会相互冲突。 可能是因为共享了公共参数。

因此,我想多次安装该软件并同时运行这些软件。 我可以通过拉拉ubuntu

docker run -it ubuntu bash

并在此ubuntu中安装软件。

但是如何多次从存储库中拉ubuntu? 我需要真正安装在主机中的其他Ubuntu。 现在,一旦安装了第一个ubuntu,如果我再次使用docker run -it ubuntu bash ,只会生成一个新映像,而不是真正占用磁盘空间的系统。

容器是分开的,但是如果在主机中仅安装一次该软件,如何避免共参数问题? 如何在主机中真正安装该软件5次?

您可以:

  • 为要安装的每组应用程序创建一个Dockerfile并构建一个命名/标记映像。 这将更加整齐并且易于复制。

  • 或者,命名要创建的容器:

    docker运行--name app1 ubuntu / bin / bash

    泊坞窗运行--name app2 ubuntu / bin / bash

然后,您可以使用commit保存它们的图像。 如果需要,还可以启动,停止并输入。

Docker / OCI映像是不可变的对象。 将图像作为容器运行不会修改该图像,容器会将任何文件系统更改置于该图像之上。 您运行的每个容器都是一个单独的实体,并在其自身的文件系统更改下以其自己的名称空间运行。 每个容器都有唯一的ID参考。

在大多数情况下,您将创建一个Dockerfile来描述您在ubuntu之上所需的所有常见软件安装和配置。

FROM ubuntu:16.04
RUN apt-get update && apt-get install mydeps

您构建并标记的对象

$ docker build -t me/myapp .

然后,无论何时运行映像,都会创建一个与映像分开的新容器,并与正在运行的任何其他容器分开:

$ docker run -ti me/myapp bash
root@28cfd02a55b1:/# echo test > /test
root@28cfd02a55b1:/# cat /test
test

在第二个容器中,文件将不存在

$ docker run -ti me/myapp bash
root@39584fb744a9:/# cat /test
cat: /test: No such file or directory

在主机上,您可以看到带有docker ps每个容器实例:

$ docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED              STATUS              PORTS                    NAMES
39584fb744a9        me/myapp                     "bash"                   21 seconds ago       Up 20 seconds                                kind_brattain
28cfd02a55b1        me/myapp                     "bash"                   About a minute ago   Up About a minute                            blissful_thompson

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM