관리 메뉴

A seeker after truth

데센프 6주차 본문

수업 필기/Docker, Kubernetes(20-1) - 공개글!

데센프 6주차

dr.meteor 2020. 4. 22. 14:33

[월: 도커 스토리지]

9. Docker에서 Storage 기능을 구현하는 방법 중 Volumes와 Bind mounts을 서로의 차이점 중심으로 비교하여 설명하시오.

도커가 운체 상관없이 다 돌아간다고 했지만 사실 좀 미묘함. 본인이 버그가 났을 때도 동작하지 않거나 예상하지 동작 안할 때에도 검색해야 하는 이유가 자기 운체 때문임. 윈도우에선 안되고 리눅스에선 되고 ... 이런 것들이 있다.

도커 스토리지처럼 저장 공간에 기능을 요청해서 써야한다고 함.

저번주까진 서비스->이미지로 맵핑됐고, 이걸 도커 컴포즈로 우리가 보여줬던.

스토리지는 데이터를 다루기 위한 부분

데이터 센터를 직접 경험하고 이것의 철학을 경험하는 것이 쉽지 않다. 

오늘은 컨테이너는 사라져도 데이터는 남아 있어야 하는 것에 대한 자료가 이번 읽을거리였다 함

 

6: 컨테이너 속 스토리지 -> 파일들을 저장하는 법에 대해 배울 것

컨테이너가 일을 마치면 그 증거같은 데이터...?가 있어야.->호스트 머신에 파일을 줄 것임.\

tmpfs는 temporal file system을 의미. 얘랑 아래에 있는건 옆에 써잇는 운체에서만 동작함.

컴 바깥 내용/안 내용에 똑같은 파일을 여기저기서 업데이트해도 양쪽에서 똑같이 볼 수 있는 것. 저번에 보여준 이게 볼륨의 기초였음

 

7: 호스트 운체 상관없이 동일한 결과를 얻을 것이다 -> 말이 쉬운거지, 도커 밑에서 얼마나 많은 일을 하겠느냐... 도커는 그렇게 대단한 것.

그 위에서 돌아가는 컨테이너 기술인 도커에는 그만큼 엄청나게 많은 노력, 시간이 들어갔따.

컨테이너와 같이 만들어진 데이터는 컨테이너와 생사를 같이함

진짜 가상 머신이 아니다...?

도커는 리눅스 철학 기반으로 만들어진 것이라 윈도우 도커를 돌리면 중간에 리눅스같은 프로세스가 많이 들어감. 반면 유닉스 위에서 돌리면, 리눅스와 유닉스가 좀 다르긴 하지만 그래도 윈도우만큼 복잡하게 뭐가 들어가진 않음. 즉, 플머가 봤을 떈 똑같은 도커지만 중간에 해주는게 많다 이게 7쪽 두번째에서 이야기하는 것. 호스트 머신과 밀결합되서 돌아가는 컨테이너인데, 그 호스트 머신의 환경이 매우 중요. 근데 이것을 따지기보단, 3번째 방법을 사용한다. 특히 강조할 volumes, bind 기술.

호스트 머신의 환경에 맞추길 원치 않는다는 것이다.

 

8:

볼륨 = 도커에 의해 관리되는 호스트 속 파일 시스템 도커는 컨테이너를 띄우는 그 기계의 호스트 머신인데 당연 도커가 사라지더라도 호스트 머신에 남겨야 함. 우리의 운체에 독립적이라고 생각하는게 지금은 쉬울 것이다.

어디에 이것을 저장해놨는지, 도커는 디렉토리 몇개 타고 들어가면 볼 수 있고, 유닉스나 윈도우는 이보다 더 복잡하게 찾고 찾으면 볼 수 있다.

바인드 마운트: 파일이 어디에 있든 읽게 한다는...? 연결해서 인식하게 한다. 이것이 본인의 디스크인 양 이해할 수 있게 해준다... 이해는 잘 안됨

volumes는 컨테이너가 사라져도 안없어짐. 도커 에리아라는게 호스트 안에 항시적으로 살아있는 파일 시스템 안에 만든 것이기 때문. 도커가 죽더라도 파일 시스템에 그대로 남아있게 된다.

도커 바깥에서 볼 일은 없다

 

9:볼륨

도커에 의해 호스트 상 파일 시스템이 관리될 것이다. 도커가 관리하는 영역을 굳이 보려 하지 말라. 볼 수는 있지만.

 

10: 볼륨 하나만 만들면 복수의 컨테이너에서 동시 사용 가능. 도커 컴포즈를 통해 여러 컨테이너, 심지어는 다른 이미지에서 나온 컨테이너들을 띄워도 동시에 이들이 자료를 다룰 수 있다.

두번째로 컨테이너가 없더라도, 일을 마치고 사라져도 볼륨은 살아있

세번째로 볼륨이 있는 컴이 아닌 다른 컴의 컨테이너에서도 이 볼륨에 액세스할 수 있음. 아마존 같은 클라우드 컴퓨팅에 내 스토리지 볼륨을 만든 뒤 내 컴퓨터에서 접속도 가능.

명령어 2개는 위에건 생성, 아래건 삭제 = prune

 

[볼륨 정리]

- 호스트 파일 시스템의 일부에 저장된다. 도커에 의해 관리되는 호스트 속 파일 시스템

 

바인드 마운트s

11: usb를 노트북에 꽃았을 때 노트북이 이를 인식해서 usb를 본인이 디스크의 하나로 용납...?하는 행위 이를 mounts라 한다. 이를 바인드한다는 것은 호스트컴에 이미 존재하는 디렉토리 혹은 파일을 내가 띄울 컨테이너와 연결하고 마치 컨테이너가 이것이 자신의 디스크인 양 접근할 수 있게 하는 것을 말함. 바인드마운트를 통해 컨테이너로 접근할 수 있게 함. 바인드 마운트 안에 있는 파일은 도커 컨테이너 아니어도 수정 가능하다(접때 보여준 그 내부에서 외부? 그 반대?와 대조됨. 운체 입장에서 접근하면 안되는 것들까지 접근 가능. 이건 세번쨰 불릿에 포함된 이야기

바인드마운트는 cli 명령이 없음. 이는 반드시 얌 파일 같은데서 저장을 해야함. 도커, 도커 컴포즈 등으로 작업이 일어나는 시점에 내가 IaaS로 저장을 해야만 함

두번째 불릿의 경우 좀 애매. 호스트 마운트에 있지만 나 모르게 쓰게 했다 이런게 볼륨의 철학이라면 바.마는 내가 눈으로 보는 그 지점, 파일에 연결해준다. 2-2의 경우는 그냥 도커도 호스트로 접근한다는걸 안다는 것의 방증.

- 호스트 시스템 전역에 저장되며 전역에서 접근 가능

- 볼륨보다 기능이 제한되어 있음(무슨 기능 제한이지,..)

- 중요 파일, 민감한 파일에도 접근 가능함

 

12: temporal file system. 리눅스에서만 동작. 도커가 살아나서 컨테이너가 띄워지면 memory mapped file system에 따라 컴의 ram을 마치 컴의 하드디스크인 것처럼 쓸 수 있다. 이런건 주로 빨리 처리하고 싶을 때 사용. 컨테이너가 램을 파일 시스템처럼 씀. 컨테이너 동작이 끝나면, 램은 휘발성 메모리다 보니 다 사라진다. 따라서 임시로 빠르게 데이터를 올려두고 종료되면 사라지게 하려고 쓰는 기법. 리눅스 위에서 동작하는 도커에선 이게 동작이 된다. 하지만 이야기한 것처럼 컨테이너가 사라지면 다 사라진다. 그리고 본인 컴에서만 접근할 수 있고, 다른 컴에선 접근이 불가능하니까 컨테이너 안에서 본인이 필요한 것만 한다.

 

13: 윈도우에서만 동작. 윈도우즈 위에서 도커를 띄우는 경우 네임드 파이프. 운영체제에 동일한 기법이 있고 이 방법을 차용함. 도커를 통해 띄워져 있는 컨테이너와 도커를 띄우고 있는 호스트 사이에 통신 경로를 뚫는 것. 마치 어플 투 어플로 통신 소웨가 돌아가고 있는 것처럼 컨테이너 바깥 아이와 안의 아이가 마치 파일처럼 생겼지만 파일이라기 보단 통신구멍 을 뚫고 정보를 주고받음. 이런게 있구나 정도로 알아두기. 나중에 얌으로 도커 스토리지를 만들 때 꼭 기억할 것

 

<실습>

docker volume inspect (볼륨명): 볼륨 정보 알 수 있음. 살펴본다는 뜻이니께

젠킨스는 CI를 가능하게 하는 도구. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌 방지를 위해 각자 작업한 내용을 공유 영역에 있는 git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하게 해준다. 개발자들이 만든 소스코드 같은 것을 묶어서 테스트도 하고 빌드도 하는 프로그램.

우리는 젠킨스와 상관없이 항상 있을 볼륨을 만들고, 젠킨스가 관리하고자 하는 데이터는 우리의 볼륨을 사용하게 할 것이다.

젠킨스 새 버전도 설치해볼건데 데이터는 앞 버전에 설치되어있는, 컨테이너와 상관없이 만든 볼륨즈를 그대로 사용할 것임.

심지어 젠킨스가 하나 떠서 보륨즈 데이터를 읽고쓸건데 다른 컴에서 또다른 젠킨스를 띄워서 그 볼륨즈의 데이터를 보는 작업도 해보려고 한다.

8080:8080 했을 때 왼쪽이 바깥, 오른쪽이 바깥에서 봤을 떄 안에 있는거...

젠킨스가 있는 컨테이너는 어떻게 한다? myvol-1:/var/jenkins_home으로 한다. 왜냐면 젠킨스 플램이 돌아가면서 내가 써야할 데이터를 저 디렉토리 즉 루트/var/jenkins_home이란 곳에서 자기 데이터를 찾게 되어있따고 한다. 그래서 이렇게 맵핑. 이것이 도커 명령임을 잊지 말아야 함.

Jenkins initial setup is required. An admin user has been created and a password generated.

Please use the following password to proceed to installation:

 

d7dbf7f198824a1fbbad902d3fdabffa

 

젠킨스 깔면서 빨간불 나오는건 뭔가? 이게 올드 버전이라서 최신 버전에 있고 여기에 없는거...?는 안깔리는듯한 그런 뭐...

아니 본체는 깔렸는데 플러그인들은 실패한 것. 이유는 있다가 알아보는 것으로 한다.

명령어 뭐시구머ㅣ시기 \<=역슬래시를 이렇게 입력하면

>

요런 프롬프트창이 뜨면서 긴 명령어를 여러줄에 걸쳐 알아보기 쉽게 입력 가능

 

글고 무슨 빌드 같은 작업 시키는 실습 하는데 난 젠킨스 아뒤 비번 까먹어서 못들어감 하...

 

37: 우리가 긴 명령어로 했던걸 여기 나온 IaaS 도커 컴포즈 파일을 만들어서 해볼 수도 있음.

38:컨테이너너한테 데이터 줄수도ㅡ, 받을수도 있게됨

 

 

[수: 도커 머신]

10. Docker Machine은 왜 필요하고 어떤 기능을 수행하는지 설명하시오.

미리 원하는 데이터를 집어 넣고 컴터에게 "야 이거써!" 하는게 바인드 마운트???라고 함. 둘이 크게 차이 없긴 함.

볼륨즈는 명령도 있고 동적으로 실행하는 것이지만 바인드마운트는 그냥 넣어놓고 사용만 하는 거라서 볼륨즈 위주로 설명하신 것이라 함

 

7: 도커 머신을 통해 다른 컴퓨터(물리적 다른 컴, 가상머신, 회사 네트워크, 데이터 센터, 클라우드 제공 측 서버/호스트... 등)에 원격으로 도커 엔진을 설치하고 커맨드로 호스트 상에 명령 줄수 있

 

8: 내가 추가적으로 배울 것은, 내가 필요한 추가적인 가상 호스트 즉 원격 호스트를 시작, 관리, 멈추고 재사용하고 죽이는 등의 작업, 업그레이드, configure하는 작업들...을 할 것이고

 

- 호스트 시작, 종료, 재시작

- 도커 클라이언트와 데몬 업그레이드

- Configure a Docker client to talk to your host

 

10: 놀고있는 컴들에 도커를 돌린다.

 

11: 사실은 한 컴 안에서 Rest api를 통해 도커 데몬이라는 서버에 접속. 내 명령을 실제로 실행할 도커 데몬 서버와 클라이언트가 존재. 이 둘이 찢어져있다는 것이 핵심. cli는 내 컴의 도커 데몬에 접속해도 되지만 이 cli는 내 컴이 아닌 다른 도커 데몬에 접속해도 아무 문제가 없

 

12: 결국 우린 왼쪽에 있는 것처럼 커맨드라인 인터페이스를 사용하여 명령을 주지만 rest api가 명령을 실행해달라하는 것은 내 컴이 아니고 원격 컴의 도커 데몬이 되는 것! -> 놀고있는 컴 위에 도커를 띄워달라 요청을 하게 되는 것

 

13: 버추얼 박스 ... 젠장! 

이거 여러번 시도해봤는데 맥에선 진짜 어떻게 해도 안된다 그냥 포기했음

 

21: inspect명령으로 정보를 아주아주아주 자세히 볼 수 이씀

글고 ssh secure shell ... 운체를 커맨드라인 인터페이스로 제어하라는 프로그램이 이런 것

docker-machine ssh default(=virtual host) docker version

 

22:

busybox = 리눅스, 유닉스에서 사용하는 명령들을 설치하지 않고도 사용할 수 있게 한 귀여운 프로그램

docker run hello world보다 여기 나온 명령이 좀더 세련된.

docker-machine ssh default(=virtual host) (평범한 도커 명령)

심지어 이 평범한 도커 명령은 양식도 똑같이 docker image ~ 와 같으 것을 주는 것이다!

 

24: 근데 위와 같이 명령어를 입력하면 하도 장황하니까 d-m env default와 같이 입력하면 도커 머신에 입력하는 모든 명령을 디폴트로 돌려버린다. 무슨 디폴트냐? 도커머신을 실행하는 환경 자체를 디폴트로 돌려버린다... 이후로 실행하는 모든 타이핑 명령은 다 디폴트에게 보내버린다.

 

27: 이제 디폴트 버전 나오고 원래대로 나옴. d-m ls 해보면 액티브 부분이 꺼져있거든

 

28: 버추얼 박스 띄우려 하는데 노트북 성능이 안되는 경우는 도커 인 도커. 또는 노트북 2개 이상 아닌 사람

컴이 잘 되면 vm을 여러개 띄워보라 하심.

 

 

 

'수업 필기 > Docker, Kubernetes(20-1) - 공개글!' 카테고리의 다른 글

데센프 8주차 5/4, 5/6(중간고사)  (0) 2020.05.05
데센프 7주차 4/27,29  (0) 2020.04.30
데센프 5주차 필기 & 영상 과제  (0) 2020.04.19
데센프 4주차  (0) 2020.04.06
데센프 3주차  (0) 2020.03.30