-
리눅스 컨테이너의 미래The Future of Linux Container라는 제목을 가진 이 발표에서 솔로몬 하이크는 docker라는 어려운 명령어로 Hello world를 출력하는 아주 기묘한 데모를 시연한다.
그런데 굳이 이렇게 안하고 그냥 echo hello world 해도 결과물은 똑같다 ! ( 겉보기에는 )
차이점은 echo Hello world 가 실행되는 환경이 다르다는 것이다.
$ docker run busybox echo hello world
hello world
위의 경우엔, busybox 라는 이미지위( 환경 )에서 컨테이너가 돌고, 이 안에서 명령어를 실행한다.
$ echo hello world
hello world
반면에 위의 경우엔, 호스트 환경 ( 루트 파일 시스템 ) 에서 명령어가 실행된다.
$ docker run -it ubuntu:latest bash
라는 명령어를 실행하면 이런 화면을 만날 수 있다. 하나씩 뜯어보자
- $ docker run -it ubuntu:latest bash : docker 를 이용해서 ubuntu:latest 라는 이미지를 컨테이너로 생성해라. 후에 bash 를 실행해라. ( 이때 컨테이너 이름은 랜덤으로 부여된다 )
- --it : 사실 -i -t 라는 옵션인데 리눅스에서 한글자 명령어의 경우엔 붙여쓸 수 있어서 간단하게 -it로 많이 사용한다. 이 옵션을 사용하면 실행된 bash 에 입출력을 할 수 있다. 이게 무슨말이냐면...
이렇게 -it 라는 옵션을 빼고 bash 를 실행시키면 컨테이너는 진짜 단순히 bash 를 '실행만' 시키고 바로 종료한다.
그래서 bash 를 계속 살려두면서 입출력을 하고싶으면 -it 라는 옵션을 써줘야 한다.
- Unable to find image 'ubuntu:latest' locally : 난 ubuntu:latest 라는 이미지를 처음깔기 때문에 local에서 찾을 수 없다고 뜬다. 그리고 밑에보면 자동으로 해당 image 를 pull 해서 가져오는것도 확인할 수 있다.
Pull
만약 image 로 컨테이너를 생성하지않고 단순히 image 만 pull 하고싶은경우
$ docker pull ubuntu:latest
이렇게 사용하면 된다.
image 확인
내 docker 에 깔려있는 images 를 확인하고싶으면 아래 명령어를 이용하면 된다.
$ docker images
우리가 방금 설치한 ubuntu:latest 이미지에서 커널과 배포판 정보를 확인해보면
그렇단다.
이제 다른 이미지인 centOs 에서 정보를 확인해보자
이렇단다.
먼저, 배포판이 다르다는 것을 알 수 있다. 고로 위에서 실행한 2개의 docker 컨테이너는 분명히 다른 환경에서 실행하고 있다.
그러나 uname -a 의 출력 결과는 동일하다. 따라서 서로 다른 환경(이미지)에서 컨테이너가 실행되었음에도 커널은 같은 것을 알 수 있다.
댓글