local 개발환경 세팅부터 배포까지 - 1부(Docker 란?)
안녕하세요! 운동하는 개발자 Jay 입니다!
local 개발환경 세팅부터 배포까지는 시리즈(?)로 포스팅 할 예정이며, docker로 개발환경 구축, fabric을 이용한 배포 까지 다룰 것 입니다.
오늘은 개발서버, 실서버 배포 전 로컬에서 테스트 할 수 있는 개발환경을 세팅에 대해 알아 보겠습니다.
1. local 개발 환경의 필요성
보통 자신의 로컬에서 개발을 하게되면 실제 서비스가 돌아가는 서버, 혹은 실서비스 전 개발서버에 배포를 하여 서비스의 동작을 확인합니다. 하지만, 아무런 테스트 없이 바로 개발서버, 실서버에 서비스를 배포하게 된다면 예기치 못한 장애와 버그들에 정신적 스트레스를 받을 수 있습니다.
그렇기에 로컬에서 우리가 만든 서비스를 테스트 할 수 있는 개발환경을 구성해야 합니다.
우리가 배포해야할 서버는 Ubuntu일수도 있고 CentOS일수도 있으며, 1대 혹은 여러대 일 수도 있습니다. 하지만, 개발자마다 OS가 다르고 여러대의 로컬 컴퓨터를 가진다는 건 불가능(불필요) 한 이야기죠?ㅎㅎ
다행히 Virtual Machine(가상머신) 혹은 Container(컨테이너)라는 걸 이용해서 로컬에서 서비스를 배포하고 테스트를 할 수 있습니다. 이번 local 개발환경 세팅부터 배포까지 시리즈에서는 Container를 이용하는 Docker를 사용해 개발환경을 세팅해 보겠습니다.
* VB vs Container(Docker)에 관한 자세한 내용(Jiwon Yeom님 블로그):
https://medium.com/@jwyeom63/시작하는-이들을-위한-컨테이너-vm-그리고-도커에-대한-이야기-3a04c000cb5c
2. Docker 설치 및 Image 다운
Docker 설치: https://docs.docker.com/docker-for-mac/
Docker 설치가 완료 되었으면, 배포할 서버와 같은 환경으로 구성해 줍니다. 저는 Ubuntu 16.04를 설치해 보겠습니다.
Ubuntu를 설치하기 위해 Docker Image를 다운받아야 합니다.
* Image: 애플리케이션과 실행 파일, 환경 설정 등을 설치할 수 있는 파일
Docker가 편한 점은 GitHub처럼 DockerHub에서 다양한 환경의 Image들을 쉽게 다운받을 수 있습니다. Ubuntu 공식 DockerHub에 보면 설치방법과 내용을 확인할 수 있습니다.
* ubuntu docker hub: https://hub.docker.com/_/ubuntu
Image 다운은 정말 간단합니다.
명령어: docker pull ubuntu:16.04
3. Docker 컨테이너 실행
Docker로 Ubuntu 컨테이너를 실행하기 전 몇가지 option 들을 알아보고 가겠습니다.
(더 많은 옵션은 아래 도커 문서에서 확인 가능합니다)
- -d : Detached mode로서 Background로 실행
- --name: container 이름 설정
- -rm : 프로세스 종료시 containger 제거
- -it : 터미널 입력을 위한 옵션 (t: 터미널 할당, i: 터미널 입력)
컨테이너는 docker run "옵션" "이미지:버전" 으로 실행 할 수 있습니다.
특별히 이름을 지정해 주지 않으면 자동으로 입력됩니다. 현재 ubuntu:16.04 컨테이너가 실행 중입니다.
컨테이너에 접속하는 명령어는 docker exec -it "컨테이너 이름" /bin/bash 입니다
- exec : 실행중인 컨테이너에 명령어 전달
- /bin/bash : bash shell
/bin/bash 는 default로 사용(?) 하는 bash shell 인데, 위 명령어는 exec로 컨테이너의 /bin/bash 를 실행, -it 옵션으로 터미널 입력을 하겠다라는 의미입니다.
컨테이너에 접속하면, 이렇게 실제 서버에 접속한 것 처럼 ubuntu:16.04를 사용할 수 있습니다.
* Docker 문서(옵션) : https://docs.docker.com/engine/reference/run/
4. 1부를 마치며...
1부에서는 로컬 개발환경을 세팅하기 위해 Docker에 대한 아주~~기초적인 내용을 알아봤습니다.
다음 2부에서는 docker-compose란 무엇인가?, ssh를 이용한 서버(컨테이너) 접속 에 대해 알아 보겠습니다.
사실 도커에 대해서 아주 기초적인 내용밖에 몰라, 많은 내용을 설명드리기는 힘드네요ㅠ
아래는 docker를 사용하면서 참고할 만한 내용이 있는 블로그입니다.
https://www.popit.kr/개발자가-처음-docker-접할때-오는-멘붕-몇가지/