기술공부/인프라

[Docker] 1. Docker 시작하기 - 설치

봉두두 2022. 3. 19. 14:23
728x90

Docker에 대해서 들어본 건 꽤 오래 전 일이지만 그저 회사에서 적용하기 힘든 기술이거니, 생각하고 넘겼더랬다. 그런데 이제는 어딜가나 Docker가 보인다. 왜일까? 늦었지만 궁금해서 공부해보려고 한다.

그니까 빨리해.

Docker란?

갑자기 인터스텔라의 명장면이 떠오른다.

“Cooper what are you doing?”
“Docking”

 

도커 웹페이지에서 Docker의 정의를 살펴보면 이런 의미에서 이름이 Docker이지 않을까 싶어진다. 도커는 정확히 뭘까?

도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.

 

그러니까 Docker는 Container와 Local 환경을 연결해주는 연결고리다. Local은 내 개발 환경인 PC이고 Container는 프로세스인데, 말 그대로 Container이므로 프로세스만 달랑 있지는 않고 해당 프로세스가 잘 구동될 수 있도록 환경까지 잘 갖추고 있다. 그래서 Container끼리 묶어서 DB-Back-Front 삼종세트로 서비스를 구동할 수가 있다. 진짜 대단하다. 세상에는 똑똑한 사람들이 정말 많아..

Virtural machine을 만들고, 프로그램 개발에 필요한 환경세팅을 하나씩 하나씩 수행하고(생각만큼 순탄하지 않다.) 하던 숱한 날들은 이제 필요없어지는건가? 그래도 분명 장단점은 존재하겠지. 그렇지만 얼핏 보기에도 뭔가 엄청 간편하고 혁신적인 것 같다.

Hello Docker,

그래서 나도 해볼래. 일단 설치부터..

나는 Window환경에서 Hello world를 해볼거니까 Docker Window 먼저 설치했다. Docker getting started를 따라하면 어렵지않게 설치할 수 있다.

내 주요 IDE는 VS code니까 여기에서 시작한다. 첫 걸음마는 얄코님께 배웠다. 영상을 짧고 굵게 핵심을 콕콕 짚어서 만드신다. 역시 세상에는 똑똑한 사람들이 많아

나는 Node.js도, MySQL도 구경해본게 거의 전부였지만 그래도 코드를 보고있으면 익숙한 언어나 환경이 아니더라도 나름 어디에서 뭘 수행하는건지 느낌이 온다. 톱니바퀴 잘 설치하고 스위치 연결하니까 하나로 잘 돌아간다. 나는 그냥 톱니바퀴만 틀에 꽂고 스위치만 켜면 된다. 진짜 편하다.

아래는 내가 보고 기억하려고 하는 메모.

Docker 명령어

Docker stop $(docker ps -a -q)
	# 현재 실행중인 컨테이너 모두 중지
Docker rm $(docker ps -a -q)
	# 모든 컨테이너 삭제
Docker image prune -a
	# unused image 삭제
Docker-compose up / Docker-compose down
	# Compose 실행/종료
Docker volume rm $(docker volume ls -q)
	# volume 모두 삭제

일부 명령어에서 container run 또는 compose up 수행시 -d 로 실행하면 demon, background에서 수행한다.

Docker run --name [container name] -v $(pwd):[containerAppPath] -p [LocalPort]:[ContainerPort] [ImageFile]
	# -v : Volume의 약어로서 Localpath를 container의 관련 경로와 docking하기 위한 옵션값이다.
	# -p : publish의 약어인데 Docking할 포트넘버를 지정하면 된다.

여기에서 잠깐 헤맸는데, 구글링해보니 $(pwd)는 window powershell 기반에서 수행하면 Invalid reference format 에러가 발생하는 듯 하다. 그래서 ${pwd}로 알맞게 입력해주어야 한다.

 

 

내일은 Docker Hub도 구경가야겠다.

728x90
728x90