我想对我的RHEL环境进行原始的“虚拟化”。这是因为我不得不运行几个二进制文件,它们的路径都是硬核的,指向例如。/etc/conf目录有几个不同的二进制文件实际上需要不同的、冲突的配置放在同一个dir中。
因此,我想运行从/etc/conf读取conf的应用程序A,运行从/mnt/etc/conf读取conf但实际上“相信”它是从/etc/conf读取的应用程序B,它提供了一个将当前/ dir位置“更改”为/mnt的脚本。
我已经告诉你,对于这种操作,你可以用fakechroot来做,但是它已经不再可用了。对吗?是否有更好的方法来提供此功能?
发布于 2017-02-20 16:28:06
你可以试着用码头集装箱。要做到这一点(所以您不必学习Dockerfile语法),最简单的方法是安装docker然后docker run -it centos:<version> (编写这些实用程序的版本),然后从容器内部设置所有的二进制文件和可执行文件,退出shell/容器并使用docker ps查找容器ID。
例如:
[root@website ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
42f454cc1c71 centos:latest "/bin/bash" About an hour ago Up About an hour sick_davinci然后使用docker commit保存图像:
docker commit 42f454cc1c71 baseImage然后运行firstUtil (或它称为什么):
docker run -it --rm -v /srv/configs/firstUtil:/etc/conf baseImage /path/to/firstUtil然后运行secondUtil:
docker run -it --rm -v /srv/configs/secondUtil:/etc/conf baseImage /path/to/secondUtil等等
在上述每个docker run命令中,它将根据所设置的映像在容器中运行该命令,然后在给定命令退出后,--rm将使其被拆除。--rm是有用的,这样该实用程序的一次运行不会影响下一次,除非该实用程序修改了/etc/conf内部的一些内容,因为每次运行该命令时,都是容器中第一次运行任何内容。
您可以将这些docker run命令放在脚本或shell别名中,如果这样可以更容易地键入。
请注意,默认情况下,docker将尝试修改主机上的防火墙和路由表。
https://unix.stackexchange.com/questions/346317
复制相似问题