가상환경 접속(UTM 사용해서 리눅스로)
Docker의 이미지 레이어와 저장 구조를 깊이 이해하기 위한 실습
특정 Docker 이미지(여기서는 nginx)의 레이어 구조를 보여주고 있습니다.
docker image inspect nginx | jq '.[].RootFS'
# 저장된 layerdb의 경로를 확인

최상단의 a5290e2b0bfb2a71e247f493855ba693328f0282541cc1e26236184b035daae1 가
오버레이 마운트 시 제일 하단에 위치하는 베이스 레이어
SHA256 해시 값으로 폴더들이 나열되어 있습니다.
# 아래의 경로에 layerdb에 저장된 폴더들을 확인해봅니다.
ls /var/lib/docker/image/overlay2/layerdb/sha256

최상단에 있는 해시값과 캐시id를 확인하고 코드에 넣어줍니다.
sudo cat /var/lib/docker/image/overlay2/layerdb/sha256/<해시값>/cache-id

그러면 해당경로의 파일 시스템 구조 확인이 가능합니다.


tmux new -s test #새로운 tmux 세션을 'test'라는 이름으로 생성합니다.
tmux attach -t test #'test' 이름의 tmux 세션에 다시 연결합니다.
strace ls #ls 명령어 실행 시 시스템 콜을 추적합니다.
strace -c ls #ls 명령어의 시스템 콜 사용량을 요약해서 보여줍니다.
capsh --print #현재 프로세스의 capabilities를 출력합니다.
#호스트의 PID 네임스페이스를 공유하고, 추적 기능을 가진 Ubuntu 컨테이너를 실행합니다.
docker run -it --pid=host --cap-add=SYS_PTRACE --security-opt apparmor=unconfined ubuntu /bin/bash
tail -f [filepath] #지정된 파일의 끝부분을 실시간으로 모니터링합니다.
history -> !xxxx: #명령어 히스토리에서 xxxx 번째 명령어를 다시 실행합니다.
MicroK8s는 Kubernetes의 복잡성을 줄이고 간편하게 사용할 수 있도록 만든 경량화된 Kubernetes 배포판
설치해보기
sudo snap install microk8s --classic --channel=1.30
cd /var/snap/microk8s/
microk8s status
microk8s가 실행되고 있음을 확인

Docker의 이미지 레이어와 저장 구조를 깊이 이해할 수 있게 되었고, 추후 쿠버네티스 실습을 위한 MicroK8s를 설치 및 활용을 하기 위한 준비를 할 수 있었다.
또한 Docker와 관련된 다양한 명령어와 도구들을 실습을 통해 익히고, 참고 자료를 통해 개념을 더 깊이 이해할 수 있도록 도움을 많이 받았다.
아직은 CLI 위주의 개발 환경이 익숙하지 않은데, 앞으로를 위해서라도 리눅스와 CLI 환경에 대해 계속해서 익숙해져야겠다.
https://tech.kakaoenterprise.com/171
https://www.44bits.io/ko/post/is-docker-container-a-virtual-machine-or-a-process
https://www.44bits.io/ko/post/building-docker-image-basic-commit-diff-and-dockerfile