我需要做一个多线程运行通过一个数据分析软件在主机。但是我发现如果我直接使用多线程,所得到的结果就会相互冲突。可能是因为公共参数是共享的。
所以我想要安装软件多次,并同时运行软件。我可以通过
docker run -it ubuntu bash
并将软件安装在这个ubuntu中。
但是,如何多次从存储库中提取ubuntu呢?我需要真正安装在主机上的不同的ubuntus。现在,一旦安装了第一个ubuntu,如果我再次使用docker run -it ubuntu bash
,只会生成一个新映像,而不是一个占用磁盘空间的实际系统。
容器是分开的,但是如果软件只在主机上安装一次,如何避免常见的参数问题?如何在主机上真正安装软件5次?
发布于 2018-01-27 13:16:37
你可以:
然后,您可以通过提交保存它们的映像。如果需要,也可以启动、停止和输入。
发布于 2018-01-27 22:58:50
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
https://stackoverflow.com/questions/48475611
复制相似问题