
RHEL環境の生の「仮想化」を行いたい。これは、ハードコアパスが次のような複数のバイナリを実行する必要があるためです。/etc/conf
目次。実際には、同じディレクトリに配置する必要があるさまざまな構成が競合するいくつかのバイナリがあります。
したがって、confを読み取るアプリケーションAを実行したい/etc/conf
、confを読み取るアプリケーションBを実行したいが、実際には現在の項目を「変更」するスクリプトを提供して現在の項目を読んでいると「/mnt/etc/conf
信じます」。読み取るディレクトリの場所を指定して1つを選択します。/etc/conf
/
/mnt
このタイプのタスクはfakechrootを使用して実行できると思いましたが、もう使用できません。そうですか?この機能を提供するより良い方法はありますか?
答え1
ドッカーコンテナを試してみてください。最も簡単な方法(構文を学ぶ必要はありませんDockerfile
)は、dockerをインストールしてからdocker run -it centos:<version>
(このユーティリティはRHELバージョン用に書かれている)コンテナ内のすべてのバイナリと実行可能ファイルを設定することです。必要に応じてシェル/コンテナを終了し、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
これらのコマンドをスクリプトまたはシェルエイリアスに入れることができます(入力がより簡単な場合)。
デフォルトでは、Dockerはホストのファイアウォールとルーティングテーブルも変更しようとします。