왜 쉘 스크립트를 이용하나요?
저번시간에 했었던, telnet을 보면 데몬을 실행시키기 위해서
/etc/init.d/xinetd restart 명령어를 실행시켜줘야하는 과정이 필요했습니다.
telnet을 이용할 때마다, 이렇게 할려면 명령어도 복잡하고 귀찮으니 이것을 쉘 스크립트를 이용해서 컨테이너를 실행하면 자동으로 같이 실행되도록 하는 것입니다.
/usr/bin 디렉토리 위치에 bash파일이 존재하기 때문에 이곳에 docker_bash라는 파일을 생성해서 쉘 스크립트를 만들도록 합니다. (파일 이름은 상관없음)
$ vi docker_bash
docker_bash
#! /bin/sh
/etc/init.d/xinetd restart
export LANGUAGE=ko
LC_ALL=ko_KR.UTF-8 bash
docker_bash에 위의 내용을 추가해줍니다.
데몬을 실행시키고, 언어는 한글로 그리고 bash를 실행한다는 쉘 스크립트입니다.
그러면 이제는 쉘 스크립트 작성이 끝났으니, 현제의 컨테이너의 내용을 다시 이미지로 commit하고 ,
그 이미지를 이용해서 쉘 스크립트를 활용한 새로운 컨테이너를 생성하는 과정이 필요합니다.
Image 생성
$ docker commit ubt ubt_shell
기존 container 삭제
$ docker container rm ubt
container는 생략이 가능하고, 기존의 container를 삭제시키는 이유는 디스크 용량을 확보하기 위해서입니다.
많은 컨테이너를 계속 가지고 있다보면 성능이 저하될 수 있기 때문입니다.
ub_telnet 이미지를 이용하여 신규 컨테이너 생성 및 구동
$ docker run -itd --restart=always --name ub_telnet -p 23:23 ub_telnet /bin/docker_bash
--restart=always 옵션은 docker를 처음 실행했을 때, 아니면 사용중인 container를 빠져나왔을 때에도 container가 항상 실행되있는 상태로 유지하도록 하는 옵션 (stop으로 멈추기 전까지는 계속 실행)
/bin/docker_bash 는 실행될 명령어로써 container가 실행하면 위에서 생성한 docker_bash의 쉘 스크립트가 동작하도록 명령어가 실행됩니다. (그러면 쉘 스크립트가 동작해 자동으로 telnet 데몬 실행)
docker ps를 통해 container가 실행중인 것을 확인할 수 있다.
telnet 실행
$ telnet localhost
정상적으로 동작하는 것을 확인할 수 있습니다.
참고문헌
'IT 공부 > Linux' 카테고리의 다른 글
[ Linux ] shell script (2) (0) | 2021.06.02 |
---|---|
[ Linux ] shell script기초(1) (0) | 2021.06.01 |
[ Linux ] putty 와 telnet 설치 (0) | 2021.05.30 |
ubuntu에서 vim 에디터 사용하기 (0) | 2021.05.27 |
[ Linux ] 명령어 (0) | 2021.05.26 |