배운 것

1. 도커 컴포즈

한 호스트 안에 여러 개의 컨테이너를 담아서 한번에 띄울 수 있게 해준다.


2. 컴포즈로 띄운 컨테이너를 개별로 삭제할 수 있을까?

sudo docker rm {컨테이너 ID}으로 삭제하면 된다. 쿠버네티스는 의존성 있는 컨테이너라면 스케줄러가 돌면서 다시 살려내지만, 도커는 다른 컨테이너와의 의존성과는 관계 없이 삭제할 수 있다. 참고로 컴포즈로 올린 컨테이너를 다시 내리려면 sudo docker-compose down 명령어를 사용하면 된다.


3. 개별 컨테이너의 확장은 가능한가?

scale-up은 스펙을 올리는 것, scale-out은 확장하는 것. 하지만 수평적인 확장, 즉 오케스트레이션은 불가능하다.


4. docker-compose.yml파일은 어떻게 관리할까?

도커 이미지 파일은 도커 허브에 올려서 관리할 수 있다. 그럼 yml파일을 어디에 관리할까? 프로젝트 파일들과 함께 git, svn에 올려서 함께 관리한다.


5. 다른 호스트에 있는 컨테이너를 컴포즈로 같이 띄우는 건 가능할까?

도커에서 한 호스트에 여러 컨테이너를 올리는 것은 가능하다. 반대로 다른 호스트에 있는 컨테이너를 같이 띄우는 건 불가능하다. 쿠버네티스는 가능하다.


6. docker-compose.yml 파일 안의 volumes 항목

데이터를 도커에 저장시키지 않고 내 실제 저장소에 저장시킬 수 있도록 참조 경로를 적는다.


7. DSL(Domain Specific Language)

도메인 특화 언어. 특정 도메인(산업, 분야의 특정 영역)에 특화된 언어이다. 도커 컴포즈 yml파일에 쓰는 것도 DSL의 일종이라고 한다. C의 Makefile이나 도커 컴포즈의 yml파일같은 DSL은 실행할 때 코드 반복을 줄여주고, 코드로 쉽게 관리할 수 있게 해준다.


8. sudo docker-compose --version

우분투는 도커를 깔면 컴포즈도 같이 자동으로 설치되는 경우도 있지만, 대부분은 도커와는 따로 컴포즈를 설치해야 한다. 설치는 이 포스팅 참고


9. docker-compose up -ddocker-compose up -d --build의 차이

후자는 컨테이너를 추가한다거나, 수정하는 등 이미지 파일을 수정하여 재빌드할 때 사용한다. 전자는 이미지파일을 재빌드하지 않고 컨테이너를 올린다. 처음 실행할 때는 전자를, 수정 후에 실행할 때는 후자를 쓴다. 주의! 개발 코드만 바뀔 때는 컨테이너 속성과는 별개이기 때문에 전자를 쓰면 된다.



다음 스터디

도커 swarm에 대해 공부해오기. 도커 스웜은 쿠버네티스의 요약판이다. 다음주는 스웜을 공부하고, 다다음주부터는 쿠버네티스를 공부한다.