티스토리 뷰

Docker & VM

[Docker] 도커(docker) 딥 다이브 #2

whatisyourname 2022. 11. 28. 00:14
반응형

[※ 주의 ※] 아래를 이해하지 않고 이 글을 볼 경우, 이해가 되지 않는 부분이 있을 수 있습니다.

 

1. [Docker] 도커(Docker) 딥 다이브 #1


지난 글에 간단하게 도커의 구조를 알아보았다. 이번에는 직접 도커를 사용해보며 도커에 대한 감을 익혀보자.

도커 이미지를 직접 컨테이너화시켜보자!

1. Push & Pull

도커는 이미지를 통해 컨테이너를 생성하고 실행한다. 이미지는 도커가 직접 운영하는 docker-hub에서 받을 수도 있고, 혹은 서드 파티 허브인 github packages, AWS ECR, GCP CR, local registry 등등 여러 곳에서 받을 수 있다.

 

docker에서 이미지를 받기 위해선 다음 명령어를 사용한다.

docker pull <img:tag>

만약 dockerhub가 아닌 레지스트리에서 다운받기 위해선 다음 명령어를 사용해야 한다.

docker tag

이제, 다운로드 받은 도커 이미지를 컨테이너에 올리고 실행하기 위해선 다음 명령어를 사용한다.

docker start <img:tag>

이 과정을 한 번에 하고 싶다면 다음 명령어를 사용하면 된다.

docker run <img:tag>

이후 내가 수정하거나 만든 이미지를 dockerhub 올리기 위해선 다음 명령어를 사용하면 된다.

docker push <img:tag>

Dockerhub에 내 이미지를 public으로 올리면 무제한이지만, private으로 올리면 한 계정당 최대 1개까지 밖에 올리지 못한다. 따라서, 여러 개의 private한 이미지를 push 하고 싶다면 요금제를 활용하거나 AWS ECR같은 서드 파티 허브를 사용해야 한다.

 

이 경우 docker export/import, save/load 와 I/O 관련 연산자(>, <)를 활용하여 압축해서 이미지를 올리든, 이미지 그대로 올리든 요령껏 올려보자.

 

2. Image Layering

pull 명령어를 하면 레이어가 저장되는 모습을 볼 수 있다.

docker pull 명령어를 사용하면 마치 여러 조각이 분할되어 pull 되는 것처럼 보인다. 이는 도커 이미지가 여러

층(레이어) 별로 관리되고, 하나의 컨테이너는 여러 개의 레이어가 모여 구성이 된다. 

 

레이어는 도키 이미지를 build할 때 Dockerfile에 정의된 instruction에 따라 순서대로 실행하며 생성되고, 각 레이어는 독립적으로 저장된다. 또한, 각 레이어는 읽기 전용으로 저장되기에 수정할 수 없다. 이럴 경우 컨테이너 내부 혹은 상태를 저장할 수 없으므로 컨테이너 실행 시 이미지의 최상단에는 쓰기가 가능한 writable layer를 하나 쌓는다. 중요한 점은, 이 writable layer에 데이터가 쌓이고, 각 컨테이너 실행 시 writable layer는 새로 쌓이기 때문에 컨테이너가 종료되면 모두! 날아간다.

 

이를 정리하면 컨테이너 실행 시 다음과 같은 순서로 쌓인다고 할 수 있다.

도커 컨테이너 실행 시 레이어를 쌓을 때 이미 사용된 레이어는 캐시되어 재사용된다.
실제 MariaDB 안의 layer들. 총 7개의 layer를 관찰할 수 있다.

그럼, 진행상황을 저장하고 싶으면 어떻게 해야할까.

 

3. docker commit

약간의 짱구를 굴려보면, 위에 writable layer도 묶어서 read-only layer로 만들어버리면 되지 않나! 이를 위하여 docker에서는 다음과 같은 명령어가 있다.

docker commit <containerID> <ImageName:tag>

위 명령을 입력하면 종료된 도커 컨테이너의 상태 그대로 이미지로 구워버린다. 이후 docker run을 통해 컨테이너를 돌리면 그때 그 상태를 유지하면서 컨테이너를 돌릴 수 있다.

반응형

'Docker & VM' 카테고리의 다른 글

[Docker] 도커(Docker) 딥 다이브 #1  (0) 2022.11.27
댓글
Total
Today
Yesterday
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함