-
[2019.05.12] 컨테이너 방식 독립환경 - Docker 개념개발 블로깅/기타 개념 2019. 5. 12. 21:50
개발을 하다 보면 하나의 환경에 여러 가지 기술을 쓰게 되는 경우가 많다. mysql을 돌리며 node를 돌리는 것과 같이...
그러나 이렇게 하나의 환경에 실행시키는 것보다, 환경을 서로 분리시켜서 따로따로 돌릴 수 있다면 어떨까?
서로 돌아가는 환경의 의존성이 사라지고, 개발환경 구성을 더욱 최적화 시킬 수 있을 것이다.
Docker는 이러한 독립적인 환경으로 돌릴 수 있는 기술을 제공해준다.
하나하나의 환경을 컨테이너처럼 독립적인 환경으로 만들어서 사용할 수 있다.
# 컨테이너
Docker에서는 각 각의 가상 환경을 컨테이너라고 부른다. 어떻게 보면 VMware나 VirtualBox와 같이 가상 OS를 생성하여 독립적인 개발환경을 만드는 것과 같다고 볼 수도 있다.
컨테이너와 가상OS의 차이
우선 가상OS는 말 그대로, 하나의 OS 환경을 구축하는 것이다.
하나의 가상OS 환경을 만들 때마다, OS 구축에 필요로 한 모든 구성품을 전부 갖춰야 하므로 사이즈가 커질 수 있다.
반면에, 컨테이너는 단순히 OS안에서 독립적으로 돌아갈 가상 환경만 만들어주는 것이다. 하나의 OS환경에서는 여러개의 컨테이너를 가질 수 있다.
그러므로 여러개의 독립적인 환경이 필요로 하면, 가상 OS를 일일이 만드는 것보다, Docker의 컨테이너를 사용하는 것으로 서버 환경의 최적화를 시킬 수도 있다.
그렇다고 무조건 가상환경이 필요하다고 Docker가 답인 것은 아니다.
컨테이너는 단순히 독립적인 환경일 뿐이지, OS는 아니다. 실제 OS환경이 필요로 하다면 가상 OS를 선택해야 하는 경우도 있다.
# Docker 설치
도커는 리눅스, 맥, 윈도우 환경마다 설치법이 다르다. 여기서는 맥 환경의 설치법만 다룬다.
https://docs.docker.com/docker-for-mac/
위 링크에서 Docker 회원가입을 하고 Download 및 설치를 하면 된다.
그러면 위처럼 상단 메뉴바에 고래 모양이 생긴다.
Preference를 클릭하면, 위처럼 Docker를 돌리는 데에 여러 가지 옵션을 설정할 수 있다.
# image
image는 Docker에서 '환경 타입'이라고 생각하면 된다.
이 이미지로 실행을 시키면, 해당 이미지 환경에 맞는 하나의 컨테이너를 만드는 것이다.
# 컨테이너 실행
docker run으로 이미지를 실행시키면 하나의 컨테이너가 생성되면 독립적인 환경을 사용할 수 있다.
위처럼 ubuntu 이미지로 bash shell을 실행시키는 명령어를 입력하니, 해당 ubuntu이미지를 자동으로 다운로드하고(기존에 이미지가 존재하면 다운로드하지 않음) 실행되어, ubuntu 환경이 나타난 것을 확인할 수 있다.
다음에 Docker 다루는 법이나 명령어들은 더 자세하게 다시 블로깅을 해야겠다. (아직 공부 중이므로..)
사실 도커는 이전 회사에서도 쓰고는 있어서 이름만 알고 있었지 뭐하는 녀석인지는 자세히 몰랐었다.
근데 이렇게나 좋은 기술이 이였다니..Docker를 다뤄보면서 처음에 ubuntu 환경이 켜졌을 때, 진짜 '우와~!' 했다..ㅋㅋㅋ
VMware 같은 것을 사용한 것도 아니고, 단순히 도커 안에서 이렇게 가벼운 우분투 환경을 하나 구현한다는 게..
그 이후에 mysql 환경도 만들어보고, 웹 서버도 따로 환경을 구축해서 올려봤다. 진짜 써보면서 엄청 유용하게 쓸 수 있을 것 같다는 생각이 들었다.
(2주 프로젝트 때 써먹을 수 있을까..?)
반응형'개발 블로깅 > 기타 개념' 카테고리의 다른 글
[2019.06.25] AWS ACM(Certificate Manager)이란? (0) 2019.06.25 [2019.06.25] AWS CloudWatch - AWS 서비스를 모니터링 해보자 (0) 2019.06.25 [2019.05.10] JWT-Token 방식의 정보 인증 [사용법] (1) 2019.05.10 [2019.05.07] Sequelize - 조회,삽입,수정, 삭제 사용법 (0) 2019.05.07 [2019.05.06] 불필요한 github 업로드 방지 - gitignore 설정 (0) 2019.05.06