Host OS: Ubuntu 16.04 (amd64)
lxc version: 2.0.4
Linux Container에 외부(즉 Host)에서 명령어를 주입하는 방법은 Container 시작할 때 명령어 같이 실행하는 방법과 이미 실행중일 때 명령어를 실행하는 방법으로 나뉜다.
일단 시작하지 않은(stop 또는 lxc-create만 해둔 상태) container는 lxc-start 또는 lxc-execute를 통해서 특정 명령어를 같이 실행할 수 있다.
# lxc-execute -n 컨테이너_이름 -- 실행할_명령어
그런데 이미 실행중인 container에 대해서 lxc-execute를 하면 이미 실행중이라는 에러가 나면서 실행되지 않는다. 이 때에는 lxc-attach를 쓰면 된다.
# lxc-attach -n 컨테이너_이름 -- 실행할_명령어
lxc-attach를 추가 명령어 없이 실행하면 해당 노드의 프롬프트로 바뀌어 버리는데, 실행할 명령어를 추가하게 되면 container의 프롬프트로 바뀌지 않은 채 명령어만 실행하고 Host의 쉘을 유지하게 된다. 이렇게 함으로써 host가 여러 개의 container에 대해서 같은 명령어를 일괄 실행할 수 있는 장점이 있다.
예를 들어, node4라는 이름의 container에 default route를 추가하는 명령어를 실행한 결과가 아래 그림과 같다. 원래 실행중인 container에 없던 default 경로가, lxc-attach와 함께 실행하는 route 명령어를 통해서 새로 추가되었음을 확인할 수 있다. 그리고 프롬프트가 바뀌지 않는 것도 확인할 수 있다.
다만 프롬프트만 바뀌지 않을 뿐, 실행 결과에 대한 출력은 host의 쉘에 모두 표시되므로 에러 여부도 판별할 수 있다.
<참고자료>
[1] "9.6 Starting a Command Inside a Running Container",
https://docs.oracle.com/cd/E37670_01/E37355/html/ol_attach_containers.html
'IT > Linux' 카테고리의 다른 글
Linux Container(LXC)에서 add-apt-repository: command not found 해결 (0) | 2016.10.10 |
---|---|
Ubuntu apt-get install에서 install-info 처리 중 에러 발생 시 해결법 (0) | 2016.10.10 |
Linux Container (LXC) 생성 직후에 환경변수 설정 (0) | 2016.09.29 |
Linux Container (LXC)에서 만든 container를 인터넷에 연결하기 (0) | 2016.09.29 |
Vim에서 Home, End, Page Up, Page Down 키가 안될 때 (0) | 2016.09.29 |