본문 바로가기

Tech/Docker

docker 정의 정리

docker

  • docker 이미지 생성
    dockerfile을 만들어 생성한다.
  • 컨테이너는 프로세스이다.
    따라서, 컨테이너 안에서 실행중인 프로세스가 없다면 컨테이너는 종료된다.
  • docker 빌드
    docker build -t 'AppName'
    빌드명령을 수행하면, dockerfile에 정의한 내용이 line by line으로 실행된다.
    이때 각 line마다 이미지 레이어를 저장하게된다.(저장된 이미지는 이후, 재 빌드시 캐쉬개념으로 사용)
    이후, 다시 빌드했을 때 dockerfile의 변동사항이 없다면 이미 생성된 이미지를 사용하여 빌드의 최적화를 할 수 있다.
  • 도커 이미지 업데이트 방법
    docker에서 컨테이너 업데이트시, 기존의 이미지를 stop, rm 하고 새이미지를 실행한다.
    다만, 이때 유지해야 할 데이터가 있으면 데이터 볼륨을 컨테이너에 추가하여 저장 후, 컨테이너를 삭제한다.

    데이터볼륨은 컨테이너와 별도로 저장되기에 외부저장소 개념으로 사용할 수 있다.

  • docker compose
    도커의 설정을 관리하기 위해 YAML 형태의 Docker Compose Tool을 사용한다.
    설정 옵션과, 의존성을 docker-compose.yml에 저장하여 관리한다.
  • docker의 기본 네트워크 모드는 Bridge이다. 네트워크 성능이 중요한 프로그램일 경우 -net=host 옵션을 고려해야한다.
  • docker는 Docker hub, Docker Registry저장소를 만들어 이미지를 관리한다.
  • ? docker 업데이트 방식이 새 컨테이너를 만들고 이전 컨테이너를 삭제하는 매커니즘인데,
    서버로 동작중이며, 여러 클라이언트와 맞물려있는 경우 기존 세션을 유지하면서 옮길 수 있는가?

    전체 세션을 분할하여 옮기는 방법, 공유폴더(마운팅)을 통한 방법 등 여러 방법 존재함.

  • 이런 방식은 매우 단순하지만, 컨테이너가 멈추는 순간 실행 중인 프로세스가 종료되고 프로세스가 종료되면 고객들은 접속이 안 되고 접속이 안 되면 매출이 떨어지고 매출이 떨어지면 월급이 안나오기 때문에 무중단을 고려한 nginx나 HAProxy같은 로드 발란서Load Balancer와 2대 이상의 컨테이너를 사용해야 합니다.
  • 위 내용에 추가적으로 이미지(컨테이너) 업데이트는 위와 같은 방법으로 무중단 배포가 가능하다.
    하지만 도커 버전업을 할 경우에는 다 죽는다.

 

subicura.com/2017/01/19/docker-guide-for-beginners-1.html

#참고 자료

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
https://subicura.com/2017/02/10/docker-guide-for-beginners-create-image-and-deploy.html\
반응형

'Tech > Docker' 카테고리의 다른 글

[Docker]docker compose Extension fields  (0) 2022.03.08
docker volume 파일 우선순위  (0) 2021.05.04