※ 이 글은 시작하세요! 도커/쿠버네티스(2020) 책의 1장을 개인적으로 정리하고 잡다한 것들을 추가한 글입니다.
※ 예제코드는 위키북스 링크에서 확인할 수 있습니다.
1. 들어가면서
어떤 프로그램이든 설치하려면 시스템 호환, 의존성 등이 문제가 된다.
이것들이 다 충족되어도 버전관리 및 배포할 때마다 힘들다.
과거에는 VMWare 등 가상 머신을 사용했지만, 항상 시스템 자원을 일정량 소모하는 단점이 있다.
이러한 문제점을 해결한 것이 프로세스 단위로 실행되는 컨테이너 개념이다.
가장 대표적인 것이 Docker다.
도커는 리눅스 환경에 가장 최적화되어있지만, 나는 윈도우를 사용중이므로 WSL2 우분투를 사용할 것이다.
WSL는 자연어 처리할 때 mecab이 안돌아가던가 하는 문제가 있던 것으로 기억한다.
완전한 리눅스 환경을 구축한 것은 아니니, 테스트용이 아니라면 리눅스 따로 설치하는 것이 좋다.
WSL2에서 문제가 해결됐는지 몰라도, 도커 테스트용으로는 충분하므로 넘어가도록 한다.
리눅스 설치를 위한 포스트가 아니므로 필요하다면 참조위치 남겨둔 것으로 대체한다.
프로그램을 도커로 운영할 일이 생겨서 학습차원으로 포스트 작성하게 되었다.
우분투 서버 환경에서 운영하기 때문에, GUI 툴을 사용하지 않고 커맨드 위주로 작성할 것이다.
환경: Windows 10, WSL2 Ubuntu 20.04.5 LTS
2. Docker설치
책이나 블로그에 많이들 적어놨지만, 오류 발생하는 경우가 많다.
공식 홈페이지 들어가서 설치 당일에도 되는 명령어를 적어두자.
2022.10.27 기준 다음과 같다.
- (기존에 설치한 경우) 이전 버전 삭제
$ sudo apt-get remove docker docker-engine docker.io containerd runc
- 관련 패키지 설치
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- 도커 공식 gpg 키 등록
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 저장소 세팅
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 도커 설치
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 서비스 실행 및 버전 확인
$ sudo service docker start
$ docker -v
WSL2 에서 sytemtctl 사용하려면 따로 설치하는 과정들이 있어서 sevice 명령으로 진행했다.
32비트, 구형 윈도우 등 구버전 환경만 아니라면 잘 돌아갈 것이다.애초에 WSL2 필요사양조차 충족하지 못했을 것
3. 기타 방법
우분투 CLI 환경 외, 사용할 수 있는 방법은 다음과 같다.
- Docker Toolbox
- 가상 머신을 생성해 그 내부에 도커 설치
- 외부 접근 시, 호스트-가상머신 사이에 포트 포워딩 별도로 필요
- Docker for Windows/Mac
- Linuxkit 사용하여 호스트 자체에 가상화 기술 적용
- Windows: Hyper-V
- Mac: whyve
- 호스트의 포트포워딩 설정만으로 외부 접근 용이
- Linuxkit 사용하여 호스트 자체에 가상화 기술 적용
- 별도 Linux 환경
- VirtualBox/VmWare
- 별도의 시스템 자원 소요.
- AWS EC2
- 클라우드 환경에서 제공받는 리눅스 환경
- WSL
- VirtualBox/VmWare