Container
1 도커 컨테 이너
- 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 켬퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어 표준 단위이다.
- 이미지로 컨테이너를 생성하면 파일 시스템, 격리된 시스템 자원, 네트워크를 사용할 수 있는 독립된 공간이 생성된다.
- 컨테이너는 이미지를 읽기 전용으로 사용하고 이미지에서 변경된 사항만 Container Layer에 저장한다
- 따라서 컨테이너에서 무엇을 하든지 원래 이미지는 영향을 받지 않는다
- 호스트와 독립된 파일시스템을 제공받으면 호스트와 분리되어 있어 호스트에 영향을 끼치지 않는다.
- 컨테이너에서 기본 사용자는 root이고 호스트 이름은 무작위 16진수 해시값이다.
1.1 왜 컨테이너를 쓸까?
- 개발환경과 프로덕션 환경이 다른 경우
개발환경과 프로덕션 환경이 다른경우 예를 들면 nodejs 애플리케이션을 만들고 await을 사용 했을 때 개발환경에선 문제가 없었다. 그러나 프로덕션 환경에서 실행 했을 때 문제가 발생했다. 이유는 노드 버전 14.3이상 에서만 await을 사용할 수 있었고 개발 환경에 노드 버전이 낮아 오류가 났다. 이런 상황에서 컨테이너를 사용했으면 완전히 동일한 환경에서 실행되기 때문에 문제가 없었을 것이다.
- 팀 내에서 개발 환경이 다른 경우
모든 팀 구성원들이 정확히 같은 환경에서 개발을 하기위해 필요하다.
- 프로젝트간 버전 충돌을 막기 위해
예를 들면 한 프로젝트는 파이썬2 를 사용하고 다른 프로젝트는 최신 버전의 파이썬을 사용한다고 했을 때 버전 충돌이 일어날 것이다. 따라서 프로젝트를 할 때 마다 잘못된 버전을 지우고 알맞은 버전을 설치하는 일을 반복해야한다.
2 컨테이너 생명주기
1.생성
docker create- 파일 스냅샷을 하드 디스크로 옮긴다.
2.시작
docker start- 실행 될 명령어를 컨테이너에 넣고 실행한다.
3.실행
docker run=docker pull(이미지가 없는 경우) +docker create+docker start
4.중지
docker stop- 하던 작업들을 완료하고 컨테이너를 중지 시킨다.
docker kill- 즉시 컨테이너를 중지 시킨다.
5.삭제
docker rm