본문 바로가기

MLOps & DevOps/Kubernetes & Docker

[Kubernetes & Docker] 쿠인액 읽고 공부 (1) _ Docker 컨테이너 이미지 생성, 실행, 공유

👋 Intro

안녕하세요, 유블린입니다.

이 시리즈에서는 Kubernetes와 Docker에 대해 공부해 보려고 합니다.

 

이번글에서는 Docker 컨테이너 이미지를 생성하고 실행하고 공유하는 실습을 해보려 합니다.

1. Docker 컨테이너 이미지 생성
2. Docker 컨테이너 이미지 실행
3. Docker 컨테이너 이미지 공유

😝 Docker 컨테이너 이미지 생성

모든 실습은 MacOS에서 이루어 졌습니다. (도커의 설치는 이루진 상태라고 가정합니다.)

 

 

도커를 설치하고 처음으로 docker로 시작하는 명령어를 실행하면 아래와 같은 오류를 만날 수 있습니다.

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

위 오류의 해결책은 이 글에서 다뤘습니다.

 

[docker] docker daemon오류 해결법, dockerd의 개념, socket과의 관계

👋 Intro 안녕하세요, 유블린입니다. 이 글에서는 Dockerd에 대해 공부해 보려고 합니다. 도커를 처음 설치하고 docker로 시작하는 커맨드 라인을 쳐봤을때 발생하는 오류를 종종 보신적이 있으실

yuevelyne.tistory.com

 

오류가 나지 않는다면, Hello World를 출력하는 컨테이너를 실행시켜 봅시다.

docker run busybox echo "Hello World"

busybox라는 이미지가 다운로드 되고 실행 되어 Hello World를 출력하는 것을 확인 할 수 있습니다.

 

 

docker run에서 오류나면 다시 docker login

도커 컨테이너의 상세정보를 json 형식으로 보려면 아래 명령어

docker inspect <container-name>

애플리케이션 실행

컨테이너 내부에서 셸 실행

-i 옵션: 

-t 옵션:

내부 컨테이너 탐색 (컨테이너 내부에 실행 중인 프로세스 조회)

세개의 프로세스만 조회 되고 호스트 운영체제(여기서는 MacOS)의 다른 프로세스는 볼 수 없음

하지만 새로운 터미널에서 동일한 명령어를 치면 호스트 운영체제에서 실행중인 프로세스 + 컨테이너 내에서 실행중인 프로세스 모두 조회가 가능하다. 이는 즉, 컨테이너에서 실행중인 프로세스가 호스트 운영체제에서 실행중이라는것을 증명한다. 

ps aux | grep app.js

위 명령어로 컨테이너 내부의 js 프로세스도 동작 중임을 확인 가능

셸 빠져나가기는 exit

컨테이너 중지

docker stop <container-name>

컨테이너 삭제

docker rm <container-name>

 

이미지를 도커 허브에 푸시하기 

docker tag <image-name> <dockerhub user-id>/<image-name>
docker tag kiada <dockerhub user-id>/kiada

시스템에 저장된 이미지 조회

docker images | head

도커 허브에 이미지 푸시

docker push <dockerhub user-id>/<image-name>

다른 머신에서 이미지 실행

docker run -p 8080:8080 -d <dockerhub user-id>/<image-name>

 


저도 공부하면서 정리하다보니 틀린 내용이 있을 수 있습니다. 내용 오류에 대한 피드백은 언제나 환영입니다 :)

미래의 저와 다른 분들께 도움이 되었길 바라며 이만 줄이겠습니다.


References

https://github.com/Yuri-Kim/kubernetes-in-action-2nd-edition/tree/master/Chapter02

dockered document