Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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
Archives
Today
Total
관리 메뉴

JustDoEat

Docker란 무엇인가 와 Docker-Compose 아주 기초사용법 본문

카테고리 없음

Docker란 무엇인가 와 Docker-Compose 아주 기초사용법

kingmusung 2024. 1. 9. 00:23

인생에 있어 처음으로 제대로 된 프로젝트를 하게 되면서 6주라는 짦은 시간동안 공부해야 할 내용이 너무 많다.. ㅠㅠ 그중 하나가 도커인데 급하게 배우는 상황이라 너무 깊게는 아직 공부를 못하였고 맛만 본 상태이므로 기억이 휘발되지 않도록 나름 내 방식대로? 기록을 해보겠다.

+추가 사실 프로젝트를 해보니까 아래 내용을 사용하진 않았던거 같다. 도커 파일 만든 후 도커 컴포즈 파일로 한번에 슥삭..

그래도 이렇게나마 정리를 하니까 나중에 이해하기 수월했던거 같다.

 

🐳  도커란, 도커를 사용하는 이유

도커를 사용하는 이유는 내 컴퓨터에서 만든 프로그램을 다른 사람 컴퓨터에 그대로 이식 했을때 동작이 안될수도 있다, 이유는 각자 컴퓨터 환경이 다르기 때문인데(예를 들면 운영체제 등?) 이런 문제점을 해소하기 위해 도커를 사용하여 가상의 컴퓨터 환경을 만들어 줌으로 어느 컴퓨터에서 실행하던 동일한 환경에서 프로그램이 작동하도록 해주는 친구이다.

 

리눅스 기반이긴 한데. 리눅스가 아니여도 원래 운영채제 위에 가상머신을 설치 후 덮어서 해줌, 이로인해 속도저하는 있을 수 있음.

만약 리눅스가 운영체제면 거기서 바로 실행이 됨으로 속도가 훨씬 빠르다는 특징

 

🐳 도커를 공부하기 전 (내 기준)기본적인 용어.

🐬도커허브 :

앱스토어와 비슷한느낌, 이미지들을 쇼핑 할 수 있는 공간.

 

🐬이미지:

도커허브에서 쇼핑한 것들을 이미지라고함.(앱스토에서 어플 다운받는 느낌..?)

->예를 들어 컨테이너에, 아파치 서버, DB로는 mysql을 실행하고 싶다라고 가정을 하면 아파치 이미지, mysql 이미지를 도커 허브에서 다운받아서 컨테이너에서 실행을 함.

 

🐬컨테이너:

이미지를 실행하는곳을 컨테이너 라고 함.

 

🐬 pull :

도커허브에서 이미지를 다운받는 행위

 

🐬 run :

이미지를 실행시키는 작업.

 

🐬도커 호스트:

도커 컨테이너를 가지고 있는 컨테이너

->도커호스트 안에는 여러 컨테이너가 있을 수 있다.

 

🐬포드포딩:

docker run -p 80:80 httpd
도커 호스트에도 포트가 있는데, 앞에 80은 도커 호스트에서 80번 포트에 신호가 진입한다는 소리고 그뒤 :80 httpd 은 도커 호스트 안에있는 httpd컨테이너에 80번 포트로 간다는 말이다.

 

🐬볼륨:

-> 컨테이너는 한번 껏다키면 데이터가 사라진다고 보면 됌, 즉 도커라이징을 또 존내해야함. 컴테이너는 데이터를 영구적으로 저장을 하지 못함,
이 번거로운 과정을 해결하기 위해 나온 기술이 도커 볼륨
컨네이너와 로컬에 있는 폴더랑 맵핑을 하면 이 문제를 해결 가능함.

 

🐬도커컴포즈 :  추가적인 설치 필요. 지금은 안다룸.

->도커라이징을 한번에 많이 해주는 역할,  컨테이너 하나마다 전원을 다 켜줄 수 없으므로 일괄적으로 처리. 

->도커 컴포즈는 프로젝트 최상단에 있어야 하고(중요), 순서대로 꼭 넣어야함
프론트면 프론트 하나 백이면 백하나, 토커 컴포즈 하위 폴더에는 도커 관련된것들이 있어야 한다.
->db를 먼저 못잡으면 백엔드 서버는 죽음, 그래서 도커 컴포즈 할떄 db먼저 선언, 도커 컴포즈는 순서대로 실행시키기 때문에 선언 순서 중요하다고 함.

 

이부분은 강의 내용을 정리해놓은 부분이라. 추후에 도커파일을 작성하면서 중간중간 내용을 넣어보겠다.

 

 

 

🐋 기본적인 실행.

일단 DockerDesktop이 깔려있어야 하고, 실습은 httpd 아파치 이미지로 해보겠다.

 

https://hub.docker.com/ 도커허브에 들어가서 explor를 눌러 httpd 이미지를 누르면 설치하는 방법이 나온다.

docker pull httpd

(httpd 이미지를 다운받는 명령)

이렇게 하라고 나올텐데, 간단하게 cmd창을 열고 명령어를 입력하면 된다.

 

docker images

(컴퓨터에 어떤 이미지파일이 깔렸는지 보여주는 명령)

명령실행 후 잘 깔렸는지 확인.

docker run --name '컨테이너 이름' '실행시킬 이미지

예시)docker run --name ws1 httpd

(이미지파일을 실행시키는 명령)

이미지 실행

docker stop '컨테이너 이름' 
->정지를 하는거지 삭제를 해주는건 아님

docker start '컨테이너 이름' 
->다시 시작가능

docker rm '컨테이너 이름'
->삭제하는거임, 정지 후 삭제를 해야 오류가 안나온다.

docker rm --force '컨테이너 이름' 
-> 정지안하고 바로삭제

docker rmi '이미지 이름' 
-> 이미지 삭제

(정지, 시작, 삭제 명령)

+추가적으로 필요하면 사용.

docker run --name '컨테이너 이름' -p 8081:80 http

(포트포딩까지 해서 컨테이너 만드는 명령)

 

docker exec '컨테이너 이름' pwd

(컨테이너 내부로 진입하는 명령)

 

여기까지, 다 따라했으면 컨테이너가 2개가 있을것이다, 그냥처음에 만든 컨테이너, 포드포딩 한 컨테이너.

 

🐋 아래로 더 내려가기전 추가적으로 참고해보기.

컨테이너의 덕목은 용량이 작아야 한다, 그러므로 컨테이너를 작동해도 초기에는 apt, nano라던지 아무 기능도 없다, 이러한 이유로 내가 필요한 부분은 컨테이너에 다시 한번 깔아줘야 한다.

 

docker exec -it "컨테이너 이름" /bin/sh 또는 /bin/bash

(컨테이너와 지속적인 연결요청 명령)

->sh와 bash는 shell이름이고 bash가 상대적으로 좋은 shell인데 안가지고 있는 컨테이너도 있으므로, 없으면 sh를 사용.

 

-it는 -i, -t 라는 옵션을 합쳐놓은것인데. 도커닥스라는곳에 reference에 들어가면 자세한 명령어 및 옵션들에 대한 설명이 있다.

 

정리를 하고,

docker exec -it "컨테이너 이름" /bin/sh 또는 /bin/bash

이부분까지 실행을 완료했다면 컨테이너에 진입을 한 상태이고

usr/local/apache2/htdocs/

이 부분까지 실행을 시켜주면...? 아무일도 일어나지 않는다, 이유는 컨테이너 용량때문에 필요한 무언가가 없기때문..

-> 도커에서  이미지 파일을 받기위해 명령어를 알아보러 들어가는 페이지 아래부분을 보면 저런 경로가 있는데 무엇이나면.  웹 서버가 호스팅하는 웹 페이지의 기본 위치로 사용되고. Apache를 설치하고 기본 설정을 사용하면, 이 디렉토리에 위치한 파일들이 웹 서버를 통해 접근 가능하게 된다 !

 

apt update

apt install nano

 

위 명령어를 사용 시스템 패키지 목록을 최신화 시켜주고, nano(텍스트 편집기)를 설치해주면 콘솔창에서 html문서를 만들고 편집 후 컨테이너에 넣어 줄 수 있다.

( 이 아래부분으로 콘솔창에서 html문서를 만들어서 컨테이너에 user/local/apache2/htdocs 라는 폴더에 넣어서 실행을 시킬 수 있는데 굳이 인거 같아서. )

->여기서 문제점은 컨테이너가 꺼지면 컨테이너 내부에서 작업하고,편집하고,생성,삭제 한 모든 내용이 날아간다.

위에서 기설명 하였듯 로컬폴더랑 컨테이너랑 맵핑을 하면 이런 걱정이 사라진다.

 

 

 

 

docker run -p 8888:80 -v ~/Desktop/test:/user/local/apache2/htdocs/ httpd

(로컬과 컨테이너 소스루트와 맵핑하는 명령)

 

해석을 하자면 8888호스트 포트로 들어가면 컨테이너에 80번 포트로 신호가 간다는소리고. -v는 볼륨(맵핑)을 실행 할 경로를 입력, 내 컴퓨터에는 바탕화면에 test라는 폴더를 맵핑 시킨다는 이야기, : 이후 경로는 위에 설명한 경로이고 뒤에 httpd는 이미지 파일.

 

🐋도커데스크톱 사용

도커데스크톱은 사용에 있어서 크게 어려움이 없었다.. 직관적으로 보고 직관적으로 쓸 수 있다. 위에 실습을 다 해보니까 어렵지 않게 쓸 수 있었다.