본문 바로가기
Server/Ubuntu

docker 기본 사용법

by 유주원 2015. 9. 3.

Docker를 설치했다면 이번에는 실제로 Docker를 사용해보자.


나같은 경우에는 spark에 흥미가 있어 spark가 설치된 docker image를 받아와서 설치해보기로 하였다.


우선 spark docker image를 찾기 위해서 docker hub 접속!



따로 가입은 하지 않아도 되며, 위의 빨간 박스의 search에서 spark를 입력하고 검색을 하면 spark와 관련된 docker image들이 리스트로 나타난다.



official이 docker hub에서 공식적으로 지원하는 image인데 spark 같은 경우에는 official 이미지가 따로 없는 관계로 3번째 bigdatauniversity/spark를 다운 받기로 하였다.


물론 터미널에서 search 명령을 통해 image들을 찾을 수 있지만, 아무래도 ui가 있는 편이 더 편한 관계로...



이제 pull 명령을 통해 찾은 docker image를 내 컴퓨터로 받아보자.

항상 docker를 사용하기 위해서는 sudo 관리자 권한을 가지고 있어야 한다.

pull 명령은 sudo docker pull [저장소 이름]:[태그] 이 순서대로 써주면 된다.

[태그] 같은 경우에는 default가 latest이기 때문에 최신 버전을 받고자 한다면 구지 안써줘도 된다.


$> sudo docker pull bigdatauniversity/spark 


위와 같이 한 후 내가 받은 이미지를 확인해 보자.


$>sudo docker images


위와 같이 입력하면 내가 docker를 통해 받았던 이미지 목록들이 다 나타나게 된다. 지금은 bigdatauniversity/spark 하나만 받았으니 하나만 나타날 것이다.


이제 이미지를 컨테이너에 담은 후 실행해 보자. run 명령을 입력하면 실행할 수가 있다.


$>sudo docker run -it --name bdu_spark -P bigdatauniversity/spark:latest /etc/bootstrap.sh -bash


몇 가지 옵션이 보이는데 -it 옵션을 넣으면 실행된 bash 쉘에 입력 및 출력을 할 수 있게 된다.

--name은 컨테이너의 이름을 사용자가 지정할 수 있다. 만약에 이름을 지정하지 않으면 docker가 자동으로 이름을 지정한다.

-P는 열려 있는 모든 포트들을 랜덤으로 매칭시켜주도록 하는 옵션이다. 소문자 p를 쓴다면 사용자가 해당 포트를 지정할 수가 있다.

그 다음으로는 실행하고자 하는 이미지 파일 이름과 태그를 넣어준다.

bigdatauniversity/spark 이미지를 컨테이너로 생성한 후, 이미지 안에 있는 /etc/bootstrap.sh를 실행한다.

마지막 -bash는 실행과 동시에 해당 이미지 터미널로 들어갈 수가 있다.



해당 터미널에서 exit를 입력하면 해당 터미널은 종료되고 원래 터미널로 돌아올 수가 있다. 물론 docker 컨테이너도 stop 상태가 된다.


그럼 이번에는 docker ps를 통해 현재 실행 중인 컨테이너의 목록을 확인해보자


$> sudo docker ps


아마 아무것도 나타나지 않을 것이다. 위의 명령은 현재 실행 중인 컨테이너의 목록만을 나타내고 있으며, -a 옵션을 주면 실행중인 컨테이너와 중지 중인 컨테이너 목록 모두를 확인할 수가 있다.


$> sudo docker ps -a


startstop, restart 명령을 통해 컨테이너를 시작하거나 중지, 재시작 할 수가 있다.


$> sudo docker start bdu_spark

$> sudo docker stop bdu_spark

$> sudo docker restart bdu_spark


attach 명령은 해당 컨테이너의 터미널로 접속할 수가 있다.


$> sudo docker attach bdu_spark


exec 명령은 외부에서 해당 컨테이너 안의 명령을 실행할 수가 있다.


$> sudo docker exec bdu_spark echo "hello world"


rm 명령으로 생성된 컨테이너들을 삭제할 수 있다.


$> sudo docker rm bdu_spark


컨테이너가 삭제된 것이지 해당 이미지는 그대로 남아 있다. docker images를 통해 해당 이미지는 그대로 남아 있음을 확인할 수 있다.


rmi 명령은 해당 이미지를 삭제할 때 사용한다.


$> sudo docker rmi bigdatauniversity/spark:latest


docker images를 해보면 아무것도 남아 있지 않음을 확인할 수 있다.


Docker File이 존재한다면 Docker File을 통한 이미지 빌드도 가능하다. Docker File이 존재하는 폴더로 이동한 후 아래와 같이 입력해 주면 Docker File에 해당하는 이미지를 빌드해 준다.

$> sudo docker build --tag [이미지이름]:[tag] .