[도커] 도커의 기본, 이미지와 컨테이너
시작하세요! 도커/쿠버네티스를 읽고 나름대로 정리한 내용입니다.
도커란?
가상 머신과 비슷하지만 더 가벼운 엔진
도커를 쓰는 이유는 프로그램의 개발 환경과 배포 환경을 쉽게 똑같이 만들 수 있기 때문이다.
리눅스, 맥, 윈도우에서 모두 사용할 수 있다.
따라서 꼭 백엔드 서버를 위해서만 쓸 수 있는 건 아니다.
도커의 기본 단위는 이미지와 컨테이너다.
쉽게 말해 이미지라는 실행 파일이 있고, 이 이미지를 띄우면 하나의 컨테이너가 돌아간다.
이미지는 직접 만들수도 있고, 이미 누가 올려놓은 것을 클라우드에서 다운로드할 수도 있다.
이미지의 종류로는 내가 개발한 프론트엔드 서버, 백엔드 서버가 될 수 도 있고, 리눅스 같은 운영체제, mysql 같은 DB 등 다양하다.
보통 우리가 파일을 실행하면 한번에 하나의 프로그램밖에 띄우지 못하지만, 이미지는 하나의 이미지로 여러 개의 컨테이너를 띄울 수도 있다.
컨테이너 조작법
생성
컨테이너는 이미지를 실행시켜 만들 수 있다. (컴퓨터에 도커가 설치되어있다면) 터미널을 열어 우분투 이미지를 실행해보자.
docker run -i -t ubuntu:14.04
명령어를 살펴보면,
docker (도커 cli)
run : 도커 명령어 중 하나 (이미지 다운 → 컨테이너 생성 → 실행 → 컨테이너에 접속)을 한다.
-i -t : run 명령어에 붙는 옵션으로 컨테이너 실행 후 컨테이너에 접속하게 한다.
ubuntu:14.04 : 실행할 이미지 이름을 말한다.
우분투 이미지가 내 컴퓨터에 없기 때문에 깃허브 같은 도커 허브 클라우드에서 다운 받는다.
ls를 입력해보면 내 컴퓨터가 아닌 새로운 우분투 컴퓨터이기 때문에 내 컴퓨터와 다른 결과가 나온다.
ctrl + p + q 동시에 누르면 컨테이너 실행 상태를 유지하면서 쉘에서 빠져나올 수 있다.
앞서 run 명령어를 통해 (이미지 다운 → 컨테이너 생성 → 실행 → 컨테이너에 접속)을 모두 했지만,
pull 명령어를 통해 도커 이미지만 다운로드할 수도 있다.
docker pull centos:7
docker images
centos 이미지를 다운받고, 이미지가 잘 있나 확인해본다.
그 후, create 명령어에 --name 옵션을 줘서 mycentos라는 이름으로 컨테이너를 생성해 본다.
docker create -i -t --name mycentos centos:7
run과 create의 차이는 도커 이미지를 가지고 컨테이너를 만들어서 실행까지 하느냐, 생성만 하느냐 차이다.
이미 만들어둔 mycentos 컨테이너를 실행(start)하고, 접속(attach)해본다.
docker start mycentos
docker attach mycentos
attach 명령어와 exec 명령어의 차이
컨테이너에 접속한 후, exit 를 해서 나갈때 attach는 종료되고, exec는 종료되지 않음
-i -t 옵션을 이용해서 컨테이너를 생성하면 attach로 쉘에 들어갈 수 있고,
옵션 없이 생성하면 attach 명령어를 쓸 수 없고, exec -i -t로 쉘에 들어갈 수 있다.
조회
실행되고 있는 컨테이너를 확인할 수 있다.
docker ps
정지된 컨테이너를 포함해서 모든 컨테이너를 조회할 수도 있다.
docker ps -a
status로 컨테이너가 실행중인지를 알 수 있다 .
삭제
docker rm 컨테이너 이름 또는 아이디
rm 명령어로 특정 컨테이너를 삭제한다.
실행 중인 건 삭제할 수 없기 때문에 stop 명령어로 멈추고 삭제해준다.
docker stop 컨테이너 이름 또는 아이디