목록[Infra]/[도커] (6)
개발자로 후회없는 삶 살기
서론 앞에서 도커의 기본이 되는 내용은 전부 배웠습니다. 이것으로 어떻게 도커 기반으로 서비스 개발을 하는지 알아보겠습니다. 본론 만들어볼 서비스는 다음과 같이 몽고 db 데이터를 플라스크로 웹에 출력하는 것입니다. 차이점은 이 모든 것을 도커 이미지로 불러와 컨테이너로 실행한다는 것입니다. 원래 같으면 서비스할 코드를 작성하고 톰캣같은 서버를 실제로 다운받고 로컬에서 flask 작성하고 몽고 DB 서버 띄어서 진행하겠지만 이번에는 이미지 외에는 물리적으로 다운 받는게 없습니다. > 브릿지로 서브넷을 만들고 서브넷 안에 db 서버와 프로그램을 실행할 것입니다. 몽고 db 이미지를 통해서 서버를 실행시키고 플라스크 웹 서비스를 만들어서 배포할 것입니다. 도커 기반 어플리케이션이므로 플라스크도 컨테이너로 띄..
서론 도커 컴포즈에 대해 알아보고 사용해 보겠습니다. 본론 - 도커 컴포즈란? 컨테이너를 실행하는데 커맨드에서 하면 옵션이 많아지면 어렵고 관리하기가 간단하지 않습니다. 그리고 매번 명령어를 치는 것이 귀찮습니다. 따라서 도커 컴포즈라는 파일을 만들고 실행시키면 파일에 적혀져 있는 대로 명령어가 실행됩니다. 실습으로 몽고 DB 이미지를 컴포즈로 불러와보겠습니다. - docker-compose.yaml 파일 version: "3.7" # 컴포즈 버전으로 버전별로 파일에 적히는 내용이 달라짐 services: # 몽고 DB, 몽고 익스프레스 서비스 총 2개를 만들겠다. mongodb: image: mongo # 실행할 이미지의 도커 허브 레포지토리 명 networks: # 브릿지 - mongo_net por..
서론 도커 이미지를 사용해 보면서 life cycle이 어떻게 되나 확인해 보고 이미지란 어떤 것이었나 복기해보는 시간을 가져보겠습니다. 본론 - 실습 서론에서 말한 것처럼 이미지를 사용해보겠습니다. 새로 레이어를 쌓아서 하는 것이 아닌 이미 만들어진 이미지를 가져와서 사용해 보겠습니다. 1. pull docker pull httpd:latest 이미 만들어진 이미지를 가져옵니다. 이미지를 보면 경로가 비어있는 이미지들이 있고 경로가 붙은 이미지들이 있습니다. public repository의 경우 앞이 비어있고 private repository의 경우 private의 도메인 : 통신할 때 사용할 포트번호/이름: 태그입니다. 2. run # 백그라운드로 실행 docker run -d httpd pull로..
서론 iptables를 도커, CNI, 쿠버네티스가 어떻게 쓰는지 조사하기 위해 iptables의 개요를 익힙니다. 본론 - iptables란 필자가 생각하기는 별도의 네트워크를 하게 해주는 것인데, 방화벽입니다. ip랑 포트에 쉽게 접근하지 못하게 하는 접근 제어 방화벽입니다. IP 패킷이 시스템에 도착했을 때 그들이 어떤 행동을 취해야 하는지 결정하는 유틸리티입니다. 예를들어, 특정 IP 주소에서 오는 모든 트래픽을 차단하거나, 특정 포트로 들어오는 모든 트래픽을 허용하는 등의 규칙을 설정할 수 있습니다. - iptables 명령어 1. -nL 실행 결과 리눅스를 처음 설치하면 아무것도 없습니다. 이러면 외부에서 전부 다 접근 가능합니다. (= 필자의 호스트 OS에서 vm 리눅스에 접근 가능!) 위 ..
서론 루트 파일 시스템이 새로 생기면 새롭게 setting되는 환경변수에 대해 알아보겠습니다. 본론 - 환경변수란? 1. 프로세스가 동작하는 방식에 영향을 미치는, 동적인 값들입니다. 2. ★ 응용프로그램을 쉽게 꺼내 쓰기 위해서 미리 변수로 등록해 놓는 것 = 일반화입니다. 3. OS에서 자식 프로세스들을 생성할 때 '참조'하는 변수들입니다. 프로세스들은 전부 os라는 프로그램에 의해 실행되는 자식 프로세스들인데 os입장에서 해당 프로세스를 실행시키기 위해 참조하는 변수 > e.g. PATH : OS가 어떤 프로세스를 실행시킬 때, 그 경로를 찾는데 이용됩니다. - 왜 써야 할까요? ex) 프로그램을 설치할 때 "windir에 설치해라" vs "C:\\windows"에 설치해라 -> windir에 설치..
서론 - 가상머신과 컨테이너의 차이 -> 가상머신 : OS위에서 하드웨어 자원을 SW형식으로 돌립니다. 다시 그 위에 프로세스를 실행합니다. -> 컨테이너 : OS 위에 하드웨어를 올리지 않습니다.. 독립된 환경에서 프로세스를 실행합니다. > 호스트 OS의 컨테이너 : 가상머신 위의 새로운 OS위에 올린 프로세스가 아니고 호스트 OS위에서 실행되는 다른 일반 프로세스 ( ex) 오피스, 검색 등등 ) 와 같은 계층입니다. - 컨테이너의 구현 컨테이너를 구현하기 위해서 가장 기본이 되는 일이 실행되는 루트를 변경하는 일이 필요합니다! + 기존의 프로세스들이 실행되는 루트는 그래로 두고 격리된 다른 루트를 만들어 컨테이너를 다른 루트에 격리시켜서 실행하겠다는 의미입니다. 본론 - chroot 40년 된 기술..