RHEL/CentOS 7에서 chroot를 가짜로 만드는 방법

RHEL/CentOS 7에서 chroot를 가짜로 만드는 방법

RHEL 환경의 원시 "가상화"를 수행하고 싶습니다. 이는 하드코어 경로가 예를 들어 다음을 가리키는 여러 바이너리를 실행해야 하기 때문입니다. /etc/conf목차. 실제로 동일한 디렉터리에 배치해야 하는 서로 다른 구성이 충돌하는 여러 가지 바이너리가 있습니다.

따라서 conf를 읽는 애플리케이션 A를 실행하고 싶고 /etc/conf, conf를 읽는 애플리케이션 B를 실행하고 싶지만 실제로는 현재 항목을 "변경"하는 스크립트를 제공하여 현재 항목을 읽고 있다고 /mnt/etc/conf"믿습니다". 읽을 디렉터리 위치를 제공하여 하나를 선택합니다 ./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는 호스트의 방화벽 및 라우팅 테이블도 수정하려고 시도합니다.

관련 정보