컨테이너
- 어떤 코드를 실행하기 위한 환경과 코드가 들어있는 곳
- 하나의 일에만 집중함
- DB, Front, Backend 하나씩만 함
- Stateleess 함
- 안에 있는 정보가 휘발성임 이미지
- 컨테이너를 실행시키기 위한 파일
- 컨테이너는 이미지의 하나의 작은 레이어임
- 이미지는 만들어서 공유할 수 있고, 여러개의 컨테이너를 하나의 이미지로 만들 수 있음
- 코드와 환경이 들어있음
- 이미지는 변경되지 않음
docker build -t NAME:TAG .
- 해당 명령어를 사용하여 도커파일을 이미지로 만들 수 있음
- 이름과 태그를 설정하여 유니크하게 만들 수 있음
- 뒤에 .은 빌드할 파일이 있는 장소
docker run --name NAME --rm -d IMAGE
- 해당 명령어를 사용하면 이미지를 컨테이너로 실행시킬 수 있음
--name NAME
을 사용하면 컨테이너 이름을 설저할 수 있음--rm
을 사용하면 컨테이너를 종료하면 컨테이너 파일이 삭제됨-d
을 사용하면 Detached모드를 사용하여 cli와 상호작용 할 수 없음
docker push REPOSITORY/NAME:TAG
- 이 명령어를 사용하면 나의 도커허브 레포지스토리에 이미지를 올릴 수 있음
docker pull REPOSITORY/NAME:TAG
- 이 명령어를 사용하면 도커허브 레포지스토리에 이미지를 로컬로 가져올 수 있음
- Bind Mounts
- 컨테이너는 격리되어있지만 로컬에 똑같은 환경을 구성해서 데이터를 저장할 수 있게해줌
- 컨테이너는 격리되어있지만 로컬에 똑같은 환경을 구성해서 데이터를 저장할 수 있게해줌
- Volume
- 무상태인 컨테이너를 데이터를 저장할 수 있도록 해줌 근데 데이터가 어디에 저장되는진 알 수 없음
- 무상태인 컨테이너를 데이터를 저장할 수 있도록 해줌 근데 데이터가 어디에 저장되는진 알 수 없음
- Network
- 컨테이너가 사용하는 하나의 통신망이라고 보면됨 예를 들어 DB랑 Backend 컨테이너가 있으면 각각은 격리되어있으니까 둘이 통신을 못하는데 이걸 네트워크 망만 같이 쓸 수 있도록 도와줌
Docker Compose는 여러가지 이미지들을 하나에 파일로 관리해줌
- 로컬
- 격리되어있기 때문에 개발에 편함
- 다른 프로젝트간에 간섭을 없애줌
- 리모트
- 로컬이랑 리모트는 똑같은 기능적으론
- 하지만 어딘가 클라우드에 저장했기 때문에 배포할 때 씀
개발은 로컬, 배포는 리모트