Docker는 지나가면서 들어보기만하고 직접 사용해본적은 없었다. 그저 VMware처럼 가상 OS를 사용하는 환경이겠거니 했다. 그러다가 여기에 관심을 가지게된 계기가 공부하면서 RabbitMQ나 MongoDB, Flask 등 여러개의 서비스를 사용하게 되면서 입력해야 하는 명령어들이 점점 많아졌기 때문이다. 그리고, Linux에서만 지원하는 기능들도 있기 때문에 Docker가 필요하게 되었다. Docker를 이제 막 사용하기 시작했기 때문에 많이 부족하지만, 사용하면서 찾아본 내용들을 정리하는 포스트를 작성해 나갈 계획이다.
이 포스트는 Window 기반으로 작성되었음.
1. Docker란?
1-1. 리눅스의 응용 프로그램들을 Container 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트.
1-2. 격리된 OS에 Container를 적재하여 CentOS나 Ubuntu와 같은 Linux 환경을 가볍게 사용할 수 있음.
1-3. Image의 크기가 작기 때문에 배포하기가 쉬움.
- Image란 서비스에 필요한 응용 프로그램과 소스 코드 등이 Build된 하나의 형태.
- 이미 Build가 되어있기 때문에 받아서 바로 실행만 하면됨.
1-4. Docker HUB와 같은 Registry를 통해 전세계 사람들과 Image를 쉽고 빠르게 공유를 할 수 있음.
2. Docker와 VM의 차이
2-1. Docker는 OS를 가상화하여 Container를 적재하는 방식.
- Host의 OS를 Docker Engine을 통해 가상화하여 사용하기 때문에 리소스를 적게 차지함.
- Host의 커널을 공유하여 사용하기 때문에 Host가 해킹을 당하면 Container 전체가 해킹당해 보안에 취약함.
- 몇가지 명령어를 통해 쉽고 빠르게 제어할 수 있음.
- 가상화된 Image의 크기도 작아서 공유하기 쉬움.
2-2. VM은 가상화된 하드웨어에 Guest OS를 적재하는 방식
- 그림에서 보이는것 처럼 하나의 서버가 추가될 때마다 Guest OS가 필요하기 때문에 리소스를 많이 차지함.
- Host와 완전히 분리된 환경을 제공하기 때문에 Host가 해킹을 당해서 VM은 안전하게 보호됨.
- 가상화된 Image의 크기가 커서 공유하기 어려움.
3. Docker 설치.
3-1. 홈페이지 접속하여 회원가입 후 로그인.
3-2. OS에 맞는 버전을 Download - https://hub.docker.com/search/?type=edition&offering=community
- 우리는 Windows 버전을 다운로드.
3-3. 로그인 후 [ Get started with Docker Desktop ]을 클릭하면 상세 튜토리얼을 진행할 수 있음.
4. Docker Desktop 실행.
4-1. 설치가 완료되면 Docker Desktop을 실행.
4-2. 실행이 완료되면 작업표시줄에 Docker 아이콘이 생김.
- 실행이 완료되면 [ Docker Desktop is running ] 이라는 메시지가 뜸.
- 아이콘을 오른쪽 클릭을 통해 Docker를 관리할 수 있음.
5. Container 실행.
- 이전 포스트에서 Windows에 RabbitMQ를 설치했는데 gevent를 사용할 수 없어서 Docker로 갈아타려고함.
5-1. 명령 프롬프트 실행.
5-2. Docker Hub에서 RabbitMQ Image 검색.
> docker search rabbitmq
5-3. RabbitMQ Image 다운로드.
> docker pull rabbitmq:latest
- :latest는 가장 최신버전을 의미, 특정버전을 받고 싶은 경우 여기에 입력.
5-4. Image 설치 확인.
> docker images
5-5. RabbitMQ Container 생성 및 실행.
> docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=heo -e RABBITMQ_DEFAULT_PASS=heo rabbitmq
- docker run [옵션] 이미지명.
- [ --name ]: Container의 이름으로 중복되지 않게 지어야함.
- [ -d ]: Background로 실행, 생략하면 실행화면이 출력.
- [ -p ]: 포워딩할 Port 지정. [HostPort]:[ContainerPort], Host에서 5672로 접속하면 Container의 5672로 연결.
- [ -e ]: 환경변수 설정
* 미리 Image를 받지않아도 run 명령어를 실행했을때 해당 Image가 없는 경우 찾아서 자동으로 설치해줌.
5-6. 실행확인.
> docker ps
- [ -a ] 옵션을 사용하면 실행, 대기 중인 모든 Conatiner를 확인할 수 있음.
5-7. 실행종료.
> docker stop rabbitmq
6. 마치며.
- 우선 간단하게 Docker에 대해서 알아보고 설치와 실행까지 해보았다. RabbitMQ는 별도의 설정을 하지않으면 육안으로 확인하기 어렵기 때문에 설치하고 실행, 종료까지만 해보았다.
- 다음 포스트에서는 RabbitMQ를 통해 Docker 명령어들을 살펴보겠다.
'Back-end > Docker' 카테고리의 다른 글
[Docker] 무작정 시작하기 (2) - 명령어 (0) | 2020.01.18 |
---|
댓글