💻 프로그래밍/K8s & Docker

local 개발환경 세팅부터 배포까지 - 1부(Docker 란?)

피트웨어 제이 (FitwareJay) 2019. 8. 11. 23:27

안녕하세요! 운동하는 개발자 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

 

[번역]시작하는 이들을 위한 컨테이너, VM, 그리고 도커에 대한 이야기

*이 글은 Preethi Kasireddy의 A Beginner-Friendly Introduction to Containers, VMs and Docker를 번역한 글입니다. 모든 저작권과 권리는 Preethi에게 있습니다. *This…

medium.com

 

 

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 hubhttps://hub.docker.com/_/ubuntu

 

ubuntu - Docker Hub

18.04, bionic-20190718, bionic, latest 18.10, cosmic-20190719, cosmic 19.04, disco-20190718, disco, rolling 19.10, eoan-20190717.1, eoan, devel 16.04, xenial-20190720, xenial Quick reference What is Ubuntu? Ubuntu is a Debian-based Linux operating system,

hub.docker.com

Image 다운은 정말 간단합니다.

명령어: docker pull ubuntu:16.04 

현재 설치된 docker image 목록

 

 

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 옵션으로 터미널 입력을 하겠다라는 의미입니다.

 

컨테이너에 접속,  os 버전 확인

컨테이너에 접속하면, 이렇게 실제 서버에 접속한 것 처럼 ubuntu:16.04를 사용할 수 있습니다. 

 

* Docker 문서(옵션)https://docs.docker.com/engine/reference/run/

 

| Docker Documentation

Docker run reference Docker runs processes in isolated containers. A container is a process which runs on a host. The host may be local or remote. When an operator executes...

docs.docker.com

 

 

4. 1부를 마치며...


1부에서는 로컬 개발환경을 세팅하기 위해 Docker에 대한 아주~~기초적인 내용을 알아봤습니다.

다음 2부에서는 docker-compose란 무엇인가?, ssh를 이용한 서버(컨테이너) 접속 에 대해 알아 보겠습니다.

사실 도커에 대해서 아주 기초적인 내용밖에 몰라, 많은 내용을 설명드리기는 힘드네요ㅠ

아래는 docker를 사용하면서 참고할 만한 내용이 있는 블로그입니다.

 

https://www.popit.kr/개발자가-처음-docker-접할때-오는-멘붕-몇가지/

 

개발자가 처음 Docker 접할때 오는 멘붕 몇가지 | Popit

이번 글은 Docker의 개념 보다는 Docker를 처음 접하게 되었을 때 혼란스러웠던 내용을 정리한 글이다. Docker 컨테이너를 사용하는 용도는 여러가지가 있겠지만 이 글에서는 개발자가 만든 애플리케이션을 Tomcat과 같은 애플리케이션 서버에 탑재해서 배포하는 경우 겪게 되었던 내용이다. Docker는 Virtual machine이 아니다! 처음 docker를 실행할 때 다음과 같은 명령을 실행하면 우분투 서버가 실행된다고 생각했다. 즉,  Vir

www.popit.kr