티스토리 뷰

도커!

안녕하세요.

요즘 날이 엄청 춥네요.

자취방이 너무 추워서 도저히 잠이 안 옵니다...

그래서 보일러를 켰더니 온도가 오르는 속도가 너무 느리네요.

따뜻해지기를 기다릴 겸사겸사,

이번 글에서는 제 나름대로 도커를 이용해서 윈도우 컴퓨터에서 개발환경을 구성하는 과정에서 얻었던 나름의 미세팁들을 공유하고자 합니다. 

 

도커를 왜 쓰는지, 혹은 도커의 유용함 자체는 이미 많이 알려진 상태이고, 또한 많은 곳에서 사용중이기에 굳이 여기서까지 적을 필요는 없을 것 같습니다. 그런 걸 알고 싶으시면 구글에 도커를 검색하세요.

 

다만 저는 개발환경을 구성하는 데 도커를 사용했기에, 개발환경 측면에서의 이점만 간단하게 말씀드리겠습니다. 

 

  1. 서버 컴퓨터를 구매할(혹은 대여할) 필요가 없다. 

    예를 들어서 윈도우에서 도커를 사용해 우분투 컨테이너를 운영할 경우, 따로 리눅스 서버를 클라우드에서 빌리거나 하지 않고도 개발용 컴퓨터 안에서 서버 개발이 가능해집니다. 물론 VMware나 VirtualBox 등의 가상머신을 사용하는 방법도 있지만, 속도나 메모리 측면에서 상대가 되질 않습니다. 또한 도커 내부의 서버와 윈도우의 코드 디렉토리를 연결하면 윈도우의 코드 수정이 바로바로 도커 서버에 적용됨으로써 빠른 개발이 가능해집니다. 

  2. 윈도우와 리눅스의 차이로 인한 문제를 방지한다.

    이 문제는 제가 직접 겪어본 문제는 아닙니다만, 윈도우와 리눅스는 OS를 구성하는 커널 자체가 다릅니다. 때문에 개발용 컴퓨터의 윈도우에서는 제대로 동작하던 소스 코드가 실제 서버 OS인 리눅스에서는 동작하지 않는 경우가 종종 있습니다. 이 때 개발용으로 도커를 사용하면 윈도우 내의 리눅스를 사용하게 되므로 위와 같은 문제는 일어날 일이 없게 됩니다. 처음부터 리눅스 환경을 사용하니까요.

  3. 서버 환경의 버전 관리가 가능해진다. 

    서비스를 운영하다 보면 운영중인 실제 서버에 무언가를 설치하는 것이 상당히 부담스럽습니다. 새로 설치한 패키지 혹은 파일이 서비스에 어떤 영향을 미칠 지 모르기 때문이죠. 하지만 도커를 사용하면 컨테이너의 현재 상태를 도커파일의 형태로 기록할 수 있습니다. 때문에 서버 컨테이너에 새로운 프로그램을 설치하기 전에 미리 도커파일로 만들어두고 작업을 하면, 문제가 발생하더라도 이전의 서버 구성 기록이 남아있기 때문에 쉽게 롤백할 수 있다는 장점이 있습니다. 이는 서버의 가장 중요 포인트 중 하나인 안정성에 큰 뒷받침을 하게 됩니다.

이외에도 도커의 장점은 무궁무진합니다. 만. 

 

이제 제가 개발환경을 구성할 때 어떻게 사용했는지, 그리고 관련한 팁들을 두서없이 적어보겠습니다. 

(사실 구성한 지 한 달 좀 더 지나서 기억이 단편적으로 남아있습니다)

 

  1. 도커는 윈도우에서 사용하려면 Windows 10 Pro 이상의 버전이 필요합니다. 

    처음에 제 노트북이 Home 버전이었어서 제대로 동작하지 않는 사태가 시작하자마자 벌어졌었습니다. 때문에 윈도우 버전을 Pro로 새로 구매했습니다. 여러분은 Pro로 시작하시는 게 좋을 것 같습니다. 

  2. 윈도우에서 도커를 run하려면 커맨드를 쳐야 하는데, 이 때 커맨드툴은 cmd보다 PowerShell을 쓰는 게 좋습니다. 

    저는 CLI 환경을 리눅스에서 주로 사용해서 윈도우에서 새로운 명령어들을 또 따로 배우는 게 굉장한 스트레스였는데, PowerShell을 써보니 리눅스에서 사용가능한 명령어들을 상당히 많이 지원하고 있어서 굉장히 편했습니다. 사실상 대부분의 작업은 윈도우 안의 도커 컨테이너 안의 리눅스에서 작업을 하기 때문에, 따로 윈도우의 명령어들을 거의 공부하지 않고도 PowerShell에서는 원활하게 작업이 가능했습니다. 다른 선택으로 Git Bash, 혹은 Cygwin도 가능합니다만 저는 PowerShell이 가장 좋은 것 같습니다. (색깔이 좀 맘에 안 듭니다 ㅎ.ㅎ)

  3. 도커에 순정 우분투를 설치하게 되면 생각보다 안되는 게 많습니다. 

    처음에 도커에 순정 우분투를 설치했을 때(v18.04) 당황했던 것이 당연하다고 생각했던 기능들이 대부분 탑재가 안 되어 있다는 것이었습니다. (ex. netstat 등등) 물론 대부분이 apt-get 으로 설치 가능하지만 그 apt-get 이랑 ls 빼고는 없는 게 상당히 많다고 보시면 됩니다. 때문에 많은 문서에서 튜토리얼로 알려주는 ubuntu 16.04를 그대로 설치하기 보다는 다른 프로그램들이 동봉되어 있는 도커 이미지를 받아 사용하는 것이 불필요한 비용을 줄이는 데 도움이 될 것 같습니다.   

  4. 다음은 제가 작업할 때 사용했던 도커 명령어들입니다. 

도커 컨테이너 run 시 : 

docker run --name chase -i -t -p 8888:8888 -v C:\development\chase:/home/ubuntu/chase ubuntu:18.04

위 커맨드는 도커 컨테이너를 생성하고 (docker run)

해당 컨테이너의 별명은 chase, (--name chase)

해당 컨테이너가 사용자의 키보드 입력을 인식하게 하고 (-i -t)

윈도우 상의 포트와 도커 내부의 운영체제의 포트를 연결하고 (-p 8888:8888)

윈도우 상의 디렉토리와 도커 내부의 운영체제의 디렉토리를 연결해주고, (마운트라고도 합니다)

(-v C:\development\chase:/home/ubuntu/chase ==> : (콜론)을 기준으로 왼쪽이 윈도우, 오른쪽이 리눅스)

그리고 해당 컨테이너에 Ubuntu 18.04 를 설치하는 명령어입니다. 

 

한 줄의 커맨드지만 상당히 많은 의미를 담고 있고, 사실상 한 대의 훌륭한 리눅스 서버를 만들 수도 있습니다.

 

도커 컨테이너 전체 삭제 시  :

docker rm $(docker ps -qa)

 

도커를 써보다 보면 시행착오를 거치면서 컨테이너를 생성했다 지웠다 하는 작업을 반복하게 됩니다. 저는 초반에는 도커를 하나하나 선택해서 지우기도 귀찮아서 전부 날려버리는 커맨드를 자주 쓰게 되더군요.

 

도커 컨테이너 조회

docker ps -a 

 

현재 존재하는 모든 도커 컨테이너들을 조회합니다. 

 

컨테이너 내부에서 작업하려고 할 때 컨테이너 시작 및 접속

docker chase start (컨테이너 시작)

docker chase attach (컨테이너 접속)

 

일반적으로 컴퓨터를 껐다가 켜면 도커 프로세스도 Exit된 상태가 많습니다. 때문에 작업을 하려면 우선 컨테이너를 켜주고 접속해야 하는데, 위 명령어를 연속으로 사용하면 됩니다(여기서 chase처럼 별칭을 붙여놓으면 편합니다).

 

잘못된 점 알려주시면 수정 가능합니다. 

감사합니다.

-끝-

 

출처 : https://chisu.tistory.com/3

 

윈도우에서 도커로 개발환경 구성하기

안녕하세요. 요즘 날이 엄청 춥네요. 자취방이 너무 추워서 도저히 잠이 안 옵니다... 그래서 보일러를 켰더니 온도가 오르는 속도가 너무 느리네요. 따뜻해지기를 기다릴 겸사겸사, 이번 글에서는 제 나름대로..

chisu.tistory.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함