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 |