본문 바로가기
자바 , 기타 공부/클라우드 공부

Docker, Docker를 활용해 상대방의 image를 보고 container를 생성

by 임지혁코딩 2024. 2. 3.

Docker는 컨테이너 형성에 도움을 주는 것임을 기억하자. 

 

컨테이너는 linux 전체를 포함한다. ubuntu,application등을 포함한다. 

 

남이 처음 생성한 application은, 내 컴퓨터에서 바로 작동되지 않는 경우가 많다.

해당 application의 서버가 내 컴퓨터에 설치 되어 있지 않거나, tomcat과 같은 것이 설치되어 있지

않을 경우가 있다. 또, python의 버전이 다를 수도 있다.

 

(이전, 동기형에게 mysql server를 설치하지 않아도 된다.. 라는 의미를 물어봤을때

너가 application을 만들고 이를 배포하였는데, 사용하는 사람이 mysql이 깔려있지 않다면 

해당 mysql이 없기때문에 동작하지 않을 것이다 라고 얘기했던 내용을 기억하자)

 

이때 container는, 이러한 mysql과 같이 필요한 것들, 그리고 python과 같은 언어의 버전(형상) 통일

등의 동작을 진행한다. 

 

image는, container를 정의한다.  software의 버전, 설정, 환경등을 정의한 것이다. 

작업 노드들이 이 image를 보고 container를 설치하는 역할을 한다. 

IMAGE에는 APPLICATION에 필요한 모든 (중요하다 , 모든 것이다.)것을 정의한다 .

 

이 IMAGE파일에 따라 동작하는 한개의 단위를 CONTAINER라고 볼 수도 있다. 

 

 <DOCKER SERVER의 동작을 진행해보자> 

 

내 컴퓨터에 저장된, image파일들을 확인해보자. 

 

이 동작 구조를 이해하면 좋은데

[DOCKER COMMAND LINE]에 docker 명령어를 넣는다. 그 이후 [DOCKER DEMON PROCESS]를 사용해 해당 명령어를 읽는다.

(DOCKER DEMON은 LINUX로 동작한다.(졸업 작품에서 LINUX의 활용을 강조한 이유)) 

 

LINUX가 없다면, DOCKERCOMMANDLINE->(가상머신의 ) DOCKER DEMON PROCESS를 읽는다. 

MINIKUBE안에도 DOCKER DAEMON이 존재한다. 

MINIKUBE로 DOCKER COMMAND LINE을 읽을 수도 있다는 것. 

즉 위에 저 사진은 , 나는 LINUX로 동작하여 쉽게 읽어냈지만 VM을 사용하는

MAC OR WINDOW 사용자들은 

minikube start -> minikube docker-env이후 명령어 copy -> docker image ls를 사용하면 된다. 

 

내가 가지고 있는 images들을 보면, minikube설치를 위한 iage등이다. 

 

<Docker hub로 image 실행하기> 

Dockerhub는 image version github로 생각하자. 

 

Dockerhub에 들어가서 확인할 수도 있지만, 공개된 image 파일을 활용하는 방법을 사용해보겠다.

 

파일을 완성하고 -> docker 파일로 image를 변환할 수 있다.

(해당 내용은 때에 따른 웹서핑을 활용하는 것이 현명할 것이다.)

 

 

가장 유명한 , image 파일을 pull 받아 내 지역 저장소에 가져왔다. 

:이후 는 사용자가 정의한 version을 표기하는 부분이다. 

 

 

잘 확인 되었다. 

 

*pull을 당기지 않고도, container 상에서 동작시킬수 있다. 즉 pull은 필수가 아니다. 

 

 

 

-p (외부 환경에 노출시킬 포트번호,즉 아무 번호나 논리상은 가능하다. 허나 내부적으로는 트래픽이 저장될 포트를 의미하기 떄문에 이떄 주의하자): (내부 포트번호) -d

d를 작성해줘야, 백그라운드에서 동작하고 다른 동작이 가능하다. 

 

이번 예제에서는, angular가 80번 port번호를 사용해야 하기 때문에 port 번호를 명시해준 것이다.

즉, container 내부의 특정 포트를 사용하는 존재를 위함이다. 

 

이후 나온 id는 , 해당 image id이다.

 

잘 동작한다.

 

*결과에서 주요하게 볼 것은 

난 angular에 대해서 설치해본 적이 없는데, 해당 angular를 사용하는 프로그램이 잘 동작한다. 

이것이 Docker의 존재 이유이다.

 

 

앞서 말한 외부 포트 번호를 8080으로 변경해보겠다. 

 

자세히 보면 알겠지만, 8080(어떤 번호등 상관 없음) -> 내부 에서 내부적으로 사용하는 port 번호임을 확인.

 

 

해당 container의 id 번호를 확인하고, 이를 stop시킬 수 있다. 

 

 

 

 

'자바 , 기타 공부 > 클라우드 공부' 카테고리의 다른 글

레플리카  (0) 2024.02.04
배포 실습/ 쿠버네티스를 활용한 배포  (0) 2024.02.04
K8S (쿠버네티스란?)  (0) 2024.02.03
명령어 실습  (0) 2024.01.31
3주차 - Kubernetes 설계  (1) 2024.01.10