도커는 컨테이너이미지 만드는데 주로 쓰고있고
컨테이너 이미지 실행하는 단계는 쿠버네티스쪽에서 하는데
반드시 다수의 컴퓨터위에서 띄우려면 쿠버네티스가 필수인가? 그렇진않음
cpu코어가 수천개가 되면 kubernetes
cpu코어가 천개 넘어가는 회사는 그렇게 많지 않음
그래서 쿠버네티스는 1억개 정도도 하는데
도커는 컨테이너 이미지를 만듦과 동시에 쿠버네티스의 역할 cpu disk network물리적 자원 가상화해서 필요한만큼을 띄우는 역할도 도커에서 제공한다
그게 docker swarm이다 ⇒ 고래들이 떼거지로 컨테이너 실행
도커도 multi cpu disk network묶어서 띄우는 역할을 할 수 있다
docker swarm기능으로 200개정도 묶어서 상용서비스 돌리기도 한다
두개이상의 컴퓨터가 묶여서 논리적인 하나의 자원처럼 묶여서 컨테이너 실행 = docker swarm
두개이상의 컴퓨터를 묶는 방법 그리고 컨테이너 실행하는것 해보고 쿠버네티스로 넘어감
컨테이너의 원초적 장점 cpu 운영체제 독릷적으로 다운로드해서 실행하고 삭제할 수 있다
서버를 구축하고 cpu network 디스크자원 묶는게 아니라도 꽤 많이 사용된다
docker on Raspberry pi, kubernetes on Rbpi
굉장히 큰 서버에서만 돌아가는게 아니라 라즈베리 파이 위에서도 충분히 돌아간다
라즈베리 파이에 도커를 설치해서 컨테이너 실행
대형처리로만 쓰이는게 아니라 정말 작은 컴퓨터에서도 돌아갈 정도로 경량화되어있다. 라즈베리파이에 쿠버네티스 설치해서 클러스터 만드는 법 보여줌
세 대를 적층해놓고 쿠버네티스로 관리
교수님은 우울하면 라즈베리파이를 40개묶어서 클러스터링함 120만원
마스터 하나에 슬레이브 2개 있었던것처럼 configuration
Intel NUC 아주작은 컴퓨터 보조기억장치와 램이 없어서 꽂아서 본인이 원하는 os설치한다
라즈베리 파이가 시장을 너무 많이 차지해서 만들었다 근데 인텔에 윈도우보다 라지베리가 더 싸다
책상위에키오스크는 라즈베리 파이에 리눅스 올라가있고
네트워크에 연결되어잇으니 필요할때 프로그램 실행하고 죽이는 등
라즈베리 리눅스 컨테이너 관리하는 기능
노트북 더하기 라즈베리파이를 하면 학교에 들고와서 실습할때 두대의 물리적인 컴퓨터로 실행할수있다
들고다니면서 물리적으로 멀티노드하고싶으면 라즈베리파이
백엔드 물리적인 서비스 미니pc와 노트북으로 실습
두개이상의 멀티노드 구축하는 방법의 예이다!
윈도우는 wsl2가 도커 데스크탑을 수행하는데
맥북있는사람은 윈도우 노트북 들고와야함
virtual machine에서 뭔가를 하는거랑 real machine이랑은 다르다
usb에 iso구워보고 부팅해보고.. 그런 과정을 못해본다
wsl2안에서 돌아가는데 docker desktop이
라즈베리 파이
라즈베리파이에 리눅스올리고 키보드 모니터 연결
미니컴퓨터가 필요한곳에 투입되고 있다
ai카메라 탑재된것도 있고 안테나 붙은것도 있고 프로세서나 ssd도 따로 판다 라즈베리파이용으로
5는 arm프로세서 쿼드코어 2.4ghz 성능좋다
요즘 각광받는 미니 컴퓨터의 일종
피지컬로도 구현하고 싶으면 라즈베리파이를 써라!
싱글보드 컴퓨터 컴퓨터를 보드한장에 올린다
nvidia jetson edge로 ai돌리기 위한 것
컴퓨터에 연결해서 사용하는 gpu기반의 것
nvidia jetson cloud native
로봇 자동차 임베디드 장치 등을 수행하기 위해서
도커 컨테이너를 사용하고 있다
신용카드 크기의 모듈 위에서 프로그램을 수행시키는데
도커엔진 컨테이너에 기반한 테크놀로지로 우분투 위엥 cuda tensor등을 올려서
피지컬 로드로 로봇비전이나 데이터 사이언스 관심있으면 jetson 사용
docker compose를 사용해서 gpu에도 접근할 수 있따
서버를 묶어서 orchestration하는거에 사용도 되지만
로봇이나 임베디드에 관심있으면 사용해보면 된다
수업에서는 안함
컨테이너 기술은 주변에서 많이 사용되고 서버 개발할때 100개의 cpu도 없으면? 50개만 있으면 된다고 하면
그럼 개발을 안하고 synology nas쓰면 된다
하드디스크가 많이 꽂혀있고 cpu하나 들어가고 하드디스크 정보 저장해서 제공 cpu는 컴퓨터에 붙여서 하드웨어쓰는게 아니라 네트워크에 붙여서 원격으로 가져가고 하는것 리눅스 os에 cpu있고 디스크내용을 네트워크로 주고받는데
가격이 싸고 퍼포먼스 좋은 cpu많아지니
synology에서는 파일서버 웹서버 데이터베이스 서버
synology nas에 도커가 들어감
제일 좋은 개발은 하지 않는것
synology nas모든 프로그램은 도커로 돌리고 있다 그냥 프로그램 설치 삭제 편하니까 그렇게 하는거임
클러스터링이 아닌 용도로 많이 쓴다!!
이상한 기술도 있음 docker in docker
도커 컨테이너 안에서 도커 컨테이너 실행
권하지 않는다. 도커 컨테이너 안에 도커 컨테이너를 실행하는 기법
왜 하느냐 운영체제를 만들수 있는 언어면 전세계 시스템 개발자들은 인정한다
거의 없다 assembly c, objective c rust
c언어로 c컴파일러를 만들고 러스트로 러스트 컴파일러 만들고…
처음에는 다른 언어로 만들었던 컴파일러를 대체
play with docker
옛날에는 vm이었는데 웹브라우저로 접속하면 서버에 있는 컴퓨팅 자원을 vm으로 쓰는 기법 결국은 안좋으니까 부하가 크고 웹사이트 접속해서 하려면 더 심하고
새로운 프로그래밍 언어 배우려면 대부분의 사이트들이 실행환경을 브라우저로 제공을 하는데 playground vm이 아니다 빠르다 훨씬
내부적으로 docker in docker를 사용
idx구글이 만든 새로운 web based개발도구
이런것들 다 컨테이너를 띄운다
vm이 떴어야 했던 기술을 컨테이너 안에서 컨테이너 띄우거나
원래목적은 컨테이너 디버그 위한것
원래는 vm뜨는거에 컨테이너위에 컨테이너 띄워서 서버쪽에서 가져야할 비용적 부담을 절감할 수 있다.
결국은 이런애들이 구글의 cpu자원을 갉아먹는데 컨테이너 인 컨테이너 쓴다
Docker Machine
도커 swarm은 컨테이너 오케스트레이션보다 개발도구로 있기를 원함
클러스터 중단하기 시작했고 도커 머신은 지원 중단하고 있다
오픈소스라서 소프트웨어가 태어나서 필요없다고 했을때 필요한 사람이 있으면 죽을 이유가 없다 대를 이을 수있다
세가지 옵션
두대이상의 컴퓨터
1.
물리적으로 두대이상의 컴퓨터를 확보 (두대에다가 다 docker와 os 설치)
2.
물리적인거 한대랑 vm하나
2-1 도커머신 윈도우하면 문제없을것
2-2 도커데스크탑 + vm(내가직접설치하고 도커데스크탑 설치) m1,m2도커머신 안돌아가서 그런거임
도커머신이 뭘까
2022년도에 m시리즈 맥북 나오고 윈도우 11나오고 wsl2가 강화됨
virtualbox가 못따라갔다 그래서 deprecated된 부분이 많았음
강의자료 1안은 도커머신 git site 도커머신은 아직 잇다 deprecated됐어도
여분의 컴퓨터 확보하고 왼쪽에 있는 도커 데스크탑에 니가 종으로 들어가라
오른쪽에 있는 컴퓨터가 부팅되고 리눅스 돌아가고 도커엔진 실행되고 docker swarm에서의 명령을 치면 노예로 들어가게 할 수 있다
master daemon에게 slave daemon으로 끼워넣는것
ssh 원격으로 터미널에서 서버에 접속하는것
도커머신 다운하면 vm다운되고 두개의 컴퓨터가 본인의 컴퓨터에서 돌아가는것처럼 속인다.
도커머신이란
도커도 swarm이라는 소프트웨어 추가로 동작해서 두개이상의 멀티노드 수행할수있는데 멀티노드가 있어야 함
도커머신은 도커엔진을 virtual host에 install하고 그리고 manage
도커로 컨테이너를 만들고 이거를 클러스터링 되어있는 컴퓨터 위에서 돌려보고싶었는데 내가 개발자로서 처음으로 컨테이너와 오케스트레이터 접하는데 쓸수있는 개발용 컴퓨터가 하나인 경우에 두개이상의 클러스터링 효과를 느껴보고싶으면 사용함
노트북에서 vm을 사용자 모르게 띄우고 거기위에 리눅스도 깔고 그 위에 도커까지 깔아버리는 도구를 만들자! 도커로 만든 머신
실제로 버추얼머신으로 머신 효과를 가지고 운영체제도 설치되고 도커까지 깔아버림
내 컴퓨터에서 운영체제에 도커엔진 다운되어있는거를 n개 띄운다
그게 되도록 프로그램을 짰다
내컴퓨터에서 hypervisor를 이용해서 vm들을 필요한만큼 만들고 운영체제설치하고 도커까지 깔아놓는다 그냥 손으로 하던걸 편하게 만들어놨다
그렇게 멀티노드 구축해서 orchestraction해본것
근데이제 쿠버네티스같은 전문툴로 위축되니까 클러스터링 관련된 기술을 중단하기 시작함 하지만 오픈소스니까 아직도 쓸수있는거다
공식적으로 deprecated됐어도 github에서 삭제되지는 않는다
퍼블릭클라우드에서 vm뛰우고 데몬띄워서 네트워크로 연결하는것도 된다
컨테이너를 start stop inspect
원격으로 접속할수 있기때문에 public클라우드에 만든다음에 관리한다던지
새로운 머신들 위에 운영체제 깔고 도커 설치
이걸자동화하면 docker machine
세개를 띄우는거 할거임
4개를 클러스터링할거다
도커머신인 경우에는 나의 통제하에 만들어진 vm 그위에 도커서버까지있다
내컴퓨터의 command line으로 수행하면 별도의 컴퓨터에 있는 애를 접속하는거
virtualbox필요함
도커머신이 시작할때 virtualbox로 했다 다른걸로도 찾아보면 있다
docker-machine ls 내가 만든 vm들이 보인다
virtualbox를 드라이버로 myvm1이라는 이름의 vm만든다
윈도우라면 virtualbox대신 하이퍼바이저쓸수있다
docker-machine —driver hypervisor
애시당초 부팅되는 머신은 도커 띄우기 위한거다
virtualbox실행하고 원격접속 ssh설치하고 ip도 설정하고 docker-machine ls하면 나온다 ip address port번호까지
머신을 만들고 virtualbox로 그다음 os설치하고 boot2docker이 os임
iso는 os이미지 말하는거
나는 한줄쳤는데 virtualbox들어가보면 다 설치되어있는 애가 생김
vm에 원격접속해보면
tinycorelinux 도커실행 위한최소한의 리눅스 알파인보다 작게
이짓을 왜했느냐
docker-machine ssh default docker version
원격 컴퓨터에게 머신의 이름을 쓰고 실행할 명령어 쓰면 된다
내컴퓨터가 아니라 default컴퓨터에서
내가만든 default컴퓨터 위에서 실행이 된다
도커머신 명령에 성공하면 편할것..
virtualbox위에 버추얼머신 만들어서 boot2docker올려주고..
나는 dockermachinessh만 하면 원격의 컴퓨터에게 실행시킬 수 있다
맥북에서 도커머신 안되면 버추얼박스 아닌 utm띄워서 해보는것 권장
리눅스를 설치하고 도커엔진을 설치하거나 도커데스크탑을 설치해서
그다음 ssh설정해서 맥터미널에서 접근해보면 된다
맥북 vm-리눅스-도커엔진 그다음 docker swarm실습