Docker를 사용하기 위해 리눅스를 조금이라도 알아야 한다.
OS종류는 윈도우,맥,유닉스 ,리눅스 등이 있다.
리눅스 배포판은 Debian(Ubuntu), RedHat, Slackware 등이 있다.
리눅스는, GUI(Graphic User Interface 우분투) // CLI가 있는데,
GUI는 보통 실무에서 사용하지 않기 때문에, 커맨드 라인 사용에 익숙해야 한다.
Docker
-> 서버 운영 체제를 가상화 한다.
-> 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행 하는 기술
Docker는 컨테이너를 위한 운영 체제
가상 머신이 서버 하드웨어를 가상화하는 방식과 비슷하게
(ex Vmware 느낌 ? 직접 관리해야 하는 필요성 제거)
(1) Build : Docker 이미지를 만드는 기능
-> 애플리케이션 실행에 필요한 라이브러리, 미들웨어 , OS , 네트워크 설정 등
하나로 모아 Docker이미지 생성
(2) Ship : Docker 이미지를 공유
-> Docker 이미지는 Docker 레지스트리에서 공유 가능 (Docker Hub)
(3) Run : Docker 이미지를 작동시키는 기능
-> Docker는 Linux상에서 컨테이너 단위로 서버 작동
-> Docker가 설치된 환경에서 Docker 이미지를 가지고 어디서든 컨테이너 작동 가능 ~~
namespace
(1) PID namespace : PID와 프로세스 격리
(2) Network namespace : 네트워크 디바이스
(3) UID namespace UID : 사용자ID
(4) Mount namespace 마운트 조작을 하면 namespace안에 격리된 파일 시스템 트리 생성
(5) UTS namespace : namespace 별로 호스트나 도메인을 가질 수 있음
(6) IPC namespace : 프로세스 간 통신 오브젝트를 namespace 별로 독립적으로 가질 수 있음