도커가 각각 독립된 형태로 환경을 구성하고
각각의 이미지들이 immutable 하게 되어있고 매번 새 배포시 이미지가 교체된다고 이해했습니다.
궁금한 점은
서비스를 배포할 때, 하나의 컨테이너 안에
db + 서버(jar) +기타 등등redis 을 하나의 이미지로 만든 뒤에 실행하는 것이 맞나요?
맞다면 db 버전이나 db생성, 테이블 생성과 같은 부분들이 필요할 것 같은데 그런 절차를 안보이고 docker compose? 와 같은 것으로 사용하더라구요 도커 파일 하나로 저런 디테일한게 가능한가요? 이 부분이 이해가 안되서 질문드립니다.
아 그리고 도커를 사용하면 독립된 환경이므로 제가 이해한 게 맞다면 하나의 서버(pc)에서 여러 다른 유형의 서비스를 동시에 운영이 가능한 게 맞을까요? db를 독립적으로 가져갈 수 있는 것 같은데 애매해서 질문드립니다.
ex 이미지 1 : 서비스1서버, 서비스1db 등등
이미지 2: 서비스 2 서버 서비스2db
각 이미지 끼리는 서로 공유하는 내용이 없다고 이해했습니다.
//
좀 더 찾아보니 docker compose는 여러개의 이미지를 하나로 합치는 것 같습니다
서버 이미지 + db이미지 + 기타등등 이미지를 compose 하면
배포 가능한 큰 이미지 하나를 만드는 것 같습니다
- dc official App
잘못 찾아본듯 기본적으로 컨테이너는 프로세스 단위라고 생각하면 됨 물론 실제로는 네임스페이스 개념이 있어서 하나의 컨테이너가 반드시 하나의 프로세스임을 의미하지는 않지만.. 니가 쓰는 데이터베이스나 레디스는 하나의 프로세스 니가 만든 서버도 프로세스 도커를 쓰던 안쓰던 프로세스간 통신을 통해서 데이터를 주고받음 그냥 그 프로세스를 도커로 한번 래핑을 한거고. 도커파일은 이미지를 정의하고 빌드하기 위한 목적이지만 도커 컴포즈는 그게아님
컴포즈는 뭐랄까..이미지들의 컨테이너화를 돕기 위해 사용하는것임
여러 이미지를 하나로 합치지 않음 여러 이미지를 동시에 또는 순차적으로 컨테이너화 하는 스크립트의 일종으로 보는게 맞을듯
디비 테이블 생성이나 변경같은건 보통 너가 사용하는 프레임워크나 도구들의 마이그레이션 기능을 통해서 변경점을 기록하는 무언가를 만들고, 서버가 시작될때 해당 내용을 디비에 반영하도록 앱을 수정하던 어쩌던 하는것
아무튼 도커랑 컴포즈를 전혀 잘못 이해하고 있는듯하니 다시 차근차근 찾아보면 좋을듯
정말 감사합니다!! 컨테이너화 한다고 해서 vmware 이미지 처럼 생각했었네요 실제로 컨테이너화가 되어도 통신을 통해서 다 주고받는군요 외부의 환경에 영향을 받지 않는 프로세스 정도라고 이해하고 좀 더 찾아보겠습니다 감사합니다! - dc App
반대임 볼륨 마운트같은걸 하지 않는 이상 외부에 영향을 못줌
영향을 못 주는군요 아 다르고 어 다르네요 좀 더 찾아보겠습니다 감사합니다!
Dockerfile과 docker-compose.yml 의 각 역할을 찾아보셈 그리고 컨테이너의 이해는 녹스나 블루스택 여러개 켜서 독립적으로 동일한 게임을 실행시키는거라 이해하면 될거같음 - dc App
감사합니다. 제가 컴포즈 하면 하나로 합치는 건 줄 알았는데 아니었네요;;
도커 컨테이너는 독립된 환경임. jar, db는 두 개의 컨테이너로 분리해서 띄우는게 좋음. 그런데 그 두 개가 혼자 돌진 않잖슴. 같이 돌아서 하나의 서비스가 되는거지. 이렇게 독립된 여러 도커 컨테이너를 한번에 관리할 수 있는게 도커 컴포즈임. db 데이터같은건 도커 컨테이너에서 호스트에 마운트하면 됨. 마지막에, 도커 컴포즈는 이미지를 합치는게 아니라 그룹으로 관리할 수 있게 해준다고 생각하면 됨.
감사합니다. 그룹으로 관리하면 docker ps 로는 하나의 컨테이너로 잡히나요? 아니면 여러개의 컨테이너로 잡히는데 그룹으로 관리되는 건가 해서요 직접 돌려본는게 확실한데 바로 바로 해보기가 어렵네요;;
gpt에게 물어보니 일단 컨테이너가 여러개로 잡힌다네요, 좀 더 찾아보겠습니다 감사합니다!
따로 잡힘. 컴포즈로 띄우고 docker ps하면 각각 띄워진걸 볼 수 있고 그 중 하나만 내려버릴 수도 있음
이제 완전히 이해한 것 같습니다 감사합니다!! 덕분에 빠르게 이해했어요 - dc App
빠르게 이해됐다니, 감사용