lxc-unshare(1) lxc-unshare(1)

lxc-unshare - 새로운 네임스페이스 내에서 태스크 실행


lxc-unshare
{-s, --namespaces namespaces} [-u, --user user] [-H, --hostname hostname] [-i, --ifname ifname] [-d, --daemon] [-M, --remount] {command}

설명

lxc-unshare는 복제된 네임스페이스 내에서 태스크를 실행한다. 이 명령어는 주로 테스트 목적으로 사용된다. 이러한 이름에도 불구하고, 새 네임스페이스에 새로운 태스크를 생성하기 위해 unshare 대신 clone을 사용한다. 테스트 중인 커널 버전이 낮아지지 않는다면, 별 차이는 없다.

옵션

붙일 네임스페이스를 지정한다. NETWORK|IPC와 같이 파이프(|)로 구분된 리스트를 사용할 수 있다. 허용되는 값은 MOUNT, PID, UTSNAME, IPC, USER , NETWORK이다. 이를 사용하여, 컨테이너의 네트워크 네임스페이스를 사용하면서도 다른 네임스페이스는 호스트의 것을 그대로 사용하는 등의 조작이 가능하다. (파이프 기호는 MOUNT\|PID처럼 \로 처리를 해주거나, "MOUNT|PID"처럼 따옴표를 붙여야 한다.)
새로운 태스크를 실행할 사용자를 지정한다.
새로운 컨테이너의 호스트이름을 지정한다. UTS 네임스페이스가 설정되었을 때만 가능하다.
지정한 이름의 네트워크 인터페이스를 컨테이너 내부로 옮긴다. NETWORK 네임스페이스가 설정되었을 때만 가능하다. 여러개의 인터페이스를 옮기기 위해 여러번 이 인수를 지정하는 것도 가능하다.
데몬화 한다. (컨테이너가 종료되기 전까지 기다리지 않는다)
컨테이너 내부에 (/proc /dev/shm and /dev/mqueue)같은 기본 파일 시스템들을 마운트 한다. MOUNT 네임스페이스가 설정되었을 때만 가능하다.

예제

자신만의 UTS(hostname) 네임스페이스를 갖는 새로운 쉘을 실행하려면 아래처럼 하면 된다.

          lxc-unshare -s UTSNAME /bin/bash

만약, 그 쉘에서 호스트이름이 변경되어도 호스트에는 영향을 끼치지 않는다.

새로운 네트워크, PID, 마운트 네임스페이스 내에 쉘을 실행하려면, 아래처럼 하면 된다.

          lxc-unshare -s "NETWORK|PID|MOUNT" /bin/bash

그 결과 생긴 쉘은 1번 pid를 갖는다. 그리고 네트워크 인터페이스는 없다. 이 쉘에서 아래처럼 /proc을 다시 마운트하고

          mount -t proc proc /proc

ps 명령어를 입력하면, 네임스페이스 내에서 다른 프로세스들은 보이지 않을 것이다.

새로운 네트워크, PID, 마운트 그리고 호스트 이름(UTS) 네임스페이스 내에 쉘을 실행하려면, 아래처럼 하면 된다.

          lxc-unshare -s "NETWORK|PID|MOUNT|UTSNAME" -M -H myhostname -i veth1 /bin/bash

그 결과 생긴 쉘은 1번 pid를 갖는다. 그리고 2개의 네트워크 인터페이스(lo와 veth1)를 갖는다. 호스트 이름은 "myhostname"이고, /proc은 다시 마운트 된다. ps 명령어를 입력하면, 네임스페이스 내에서 다른 프로세스들은 보이지 않을 것이다.

참조

lxc(7), lxc-create(1), lxc-copy(1), lxc-destroy(1), lxc-start(1), lxc-stop(1), lxc-execute(1), lxc-console(1), lxc-monitor(1), lxc-wait(1), lxc-cgroup(1), lxc-ls(1), lxc-info(1), lxc-freeze(1), lxc-unfreeze(1), lxc-attach(1), lxc.conf(5)

2024-09-16