실전프로젝트 7일차! 진행속도가 생각보다 빠르다. 잘 진행되어가는 것 같다. 오늘은 처음써본 Docker에 대해 정리하고자 한다.
컨테이너 : 어플리케이션이 구동되는 환경까지 감싸서 외부로부터 격리된 공간에서 실행할 수 있도록 하는 기술. 어플리케이션을 표준화되게 패키징하여 어디서든 동일한 방법으로 실행 및 배포할 수 있도록 해주는 기술이다. 컨테이너 안에서 프로그램은 독립적으로 실행된다.
이미지 : 컨테이너 실행에 필요한 파일과 설정을 포함한 환경까지 묶어서 배포한 것. 이걸 받아 실행시키면 컨테이너로 돌아가게된다. 같은 이미지에서 여러개의 컨테이너를 만들 수 있고, 컨테이너가 바뀌거나 삭제되어도 이미지는 변하지 않는다. 가상머신에 비해 용량이 작다. 읽기만 가능하고 상태값을 가지지 않고 변하지 않는다(immutable).
컨테이너 런타임 : 컨테이너를 다루는 도구. 컨테이너를 쉽게 내려받거나 공유하고 구동할 수 있게 해준다. 가장 유명한 것이 도커.
컨테이너 오케스트레이션 : 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위. 여러 서버(노드)에 컨테이너를 분산해서 배치하거나 컨테이너 교체, 컨테이너 환경 설정 등을 한다. 여러대의 서버와 여러 서비스를 관리하여 자동화하는 기술이다. 소분류로는 스케쥴링, 서비스 디스커버리(ip,포트 자동 매칭), 모니터링, 로깅 등이 있다. 대표적으로 쿠버네티스가 있다.
도커는 컨테이너 런타임중 가장 널리 쓰이고 업계표준으로 쓰이는 도구이다. 리눅스 컨테이너 기술이다. 도커를 통해 어플리케이션을 쉽고 빠르게 구축, 공유, 실행할 수 있다. 프로젝트마다 환경이 바뀌어도 세팅을 다시 할 필요가 없다. 가상머신 배포 방식과 달리 프로세스 격리로 동작하므로 성능 저하가 거의 없다.
FROM 이미지_이름
COPY 원본_경로 대상_경로
RUN 리눅스_명령어
...
docker images #현재 Host에 다운 받은 이미지 목록 출력
docker image rm <image ID> #해당 이미지 삭제
docker pull [이미지 이름]:[태그] #이미지 받기 태그 생략시 최신버전 다운
docker rmi $(docker images -q) -f #모든 이미지 삭제
docker exec -it <컨테이너이름> /bin/bash #컨테이너 접속
ctrl+d (or exit) #컨테이너 종료하면서 빠져나오기
ctrl+p 입력후 q #컨테이너 가동을 안끄면서 접속만 빠져나오기
docker ps #실행중인 컨테이너 목록 출력
docker ps -a #실행했던 컨테이너 목록 출력
docker rm <컨테이너이름> #컨테이너 삭제
docker start <컨테이너이름> #컨테이너 실행
docker stop <컨테이너이름> #컨테이너 종료
그외 세부 명령어는 여기참고