![[Study Jam] Introduce to Docker (도커 입문) - 2. Debug, Publish](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FprT6P%2Fbtrw8Pz8Cxp%2FvSAxyYKSinkLqK8oyxY6J0%2Fimg.png)
앞선 실습으로 컨테이너 구축 및 실행에 대해 배웠으니 몇가지 디버깅 실무에 대해 실습해보자 !
✔️ Debug
docker logs [container_id]를 사용하여 컨테이너 로그를 볼 수 있다.
컨테이너가 실행 중일 때 로그 출력을 추적하려면 -f 옵션을 사용한다.
docker logs -f [container_id]
실행 중인 컨테이너 내에서 대화형 Bash 세션을 시작할 수 있다.
docker exec을 사용하여 이 작업을 수행할 수 있다.
다른 터미널을 열고 다음 명령을 입력해보자
docker exec -it [container_id] bash
-it 플래그를 사용하면 pseudo-tty를 할당하고 stdin을 열린 상태로 유지하여 컨테이너와 상호 작용할 수 있다.
bash가 Docker 파일에 지정된 WORKDIR 디렉토리(/app)에서 실행되었다는 것에 주의해보자
여기서부터 컨테이너 내부에 interactive shell session이 디버깅된다.
디렉토리를 확인해보자
ls
Bash 세션 종료
exit
Docker inspect를 사용하여 Docker에서 컨테이너의 메타데이터를 확인할 수 있다.
docker inspect [container_id]
반환된 JSON에서 특정 필드를 검사하려면 --format을 사용한다.
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [container_id]
docker inspect
docker inspect: Docker inspect provides detailed information on constructs controlled by Docker. By default, `docker inspect` will render results in a JSON array.
docs.docker.com
docker exec
docker exec: The `docker exec` command runs a new command in a running container. The command started using `docker exec` only runs while the container's primary process (`PID 1`) is...
docs.docker.com
✔️ Publish
이제 이미지를 Google 컨테이너 레지스트리(GCR)로 푸시한다.
그런 다음 모든 컨테이너와 이미지를 제거하여 새로운 환경을 시뮬레이션한 다음 컨테이너를 끌어다 실행한다.
이를 통해 도커 컨테이너의 휴대성을 확인할 수 있다.
이미지를 gcr에서 호스트하는 개인 레지스트리에 푸시하려면 이미지에 레지스트리 이름을 태그해야 한다.
형식은 [hostname]/[project-id]/[image]:[tag]. 이다.
gcr의 경우:
- [hostname]= gcr.io
- [project-id]= your project's ID
- [image]= your image name
- [tag]= any string tag of your choice. If unspecified, it defaults to "latest".
다음 명령으로 실행 중에 project ID를 확인할 수 있다.
gcloud config list project
[project-id] 부분을 내 configuration으로 변경한다.
docker tag node-app:0.2 gcr.io/[project-id]/node-app:0.2
docker images
이미지를 pcr로 푸시한다. 변경한 project-id를 기억해두자
docker push gcr.io/[project-id]/node-app:0.2
웹 브라우저의 이미지 레지스트리에 접속하여 이미지가 gcr에 존재하는지 확인한다.
콘솔에서 [Navigation]메뉴 > [Container Registry]으로 이동하여 [node-app]를 클릭하거나 http://gcr.io/[project-id]/node-app 로 이동한다.
이 이미지를 테스트해 보자. 새 VM을 시작하고 해당 VM에 SSH한 후 gcloud를 설치할 수 있다.
단순화를 위해 모든 컨테이너와 이미지를 제거하고 새로운 환경을 시뮬레이션한다.
모든 컨테이너를 중지하고 제거한다.
docker stop $(docker ps -q)
docker rm $(docker ps -aq)
노드 이미지를 제거하기 전에 (node:6) 하위 이미지를 제거해야 한다.
docker rmi node-app:0.2 gcr.io/[project-id]/node-app node-app:0.1
docker rmi node:6
docker rmi $(docker images -aq) # remove remaining images
docker images
이 시점에서 pseudo-fresh 환경이 필요하다. 이미지를 꺼내서 실행한다.
docker pull gcr.io/[project-id]/node-app:0.2
docker run -p 4000:80 -d gcr.io/[project-id]/node-app:0.2
curl http://localhost:4000
변경한 문구가 출력되었다 !
SKILL 획득 ! ㅋ_ㅋ
'Study > Study Jam' 카테고리의 다른 글
[Study Jam] Managing Deployments Using Kubernetes Engine - 2 (0) | 2022.03.24 |
---|---|
[Study Jam] Managing Deployments Using Kubernetes Engine - 1 (0) | 2022.03.24 |
[Study Jam] Introduce to Docker (도커 입문) - 1. Build, Run (0) | 2022.03.24 |
[Study Jam] Orchestrating the Cloud with Kubernetes - 2 (0) | 2022.03.24 |
[Study Jam] Orchestrating the Cloud with Kubernetes - 1 (0) | 2022.03.23 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!