-
-
[docker] 기본 개념 및 설치 방법 (feat. m1 mac에 homebrew로 설치하기)
intro : docker의 기본 개념 및 m1 mac에 homebrew로 설치 방법에 대해서 알아보자.
Docker를 배우는 이유
Docker의 가장 큰 장점은 이식성이다. 이식성이란 특정 프로그램을 다른 환경으로 쉽게 옮겨 설치하고 실행할 수 있는 특성을 의미한다. 이를 통해 복잡하고 번거로운 설치 과정을 반복하지 않아도 되고, 필요한 환경을 즉시 실행할 수 있다는 장점이 있다. 또한, Docker는 운영 체제, 버전, 환경 설정, 옵션 등에 상관없이 항상 동일한 환경을 제공하여, 환경 차이로 인한 오류를 방지할 수 있다. 더불어, Docker의 컨테이너는 각 프로그램이 독립된 환경에서 실행되도록 보장하기 때문에, 서로 다른 프로그램 간의 충돌을 방지할 수 있다. 이러한 특성은 개발, 테스트, 배포 과정에서 일관성과 효율성을 높여 주며, Docker가 많은 개발자들에게 필수 도구로 자리 잡게 된 이유 중 하나이다.
Docker란?
컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴이다.
컨테이너(Container)란?
하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념이다. 하나의 컴퓨터 환경 내에서 여러개의 미니 컴퓨터 환경을 구성할 수 있는 형태이다. 여기서 얘기하는 미니 컴퓨터를 보고 Docker에서는 컨테이너(Container)라고 부른다.
컨테이너(Container)의 독립성
컨테이너는 독립적인 컴퓨터 환경 이라고 말할 수 있다. 그렇다면 구체적으로 어떤 부분들이 독립적으로 관리되는지 알아두는 것이 중요하다. 우선, 저장 공간이 독립적이다. 각 컨테이너는 자신만의 저장 공간을 가지며, 일반적으로 A 컨테이너 내부에서 B 컨테이너 내부의 파일에 접근할 수 없다. 또한, 네트워크 역시 독립적입니다. 각 컨테이너는 고유한 네트워크를 가지며, 자신만의 IP 주소를 사용한다. 이러한 특성 덕분에 컨테이너 간의 충돌 없이 독립적인 환경에서 안전하게 애플리케이션을 실행할 수 있다.
(컨테이너의 독립성의 이해를 돕는 이미지)
이미지란?
Docker에서 이미지(Image)는 닌텐도의 칩처럼 특정 프로그램을 실행하기 위한 모든 요소를 포함하는 개념이다. 이미지는 프로그램 실행에 필요한 설치 과정, 설정, 버전 정보 등을 모두 담고 있어, 이를 기반으로 컨테이너(Container)를 실행할 수 있습니다. 예를 들어, Node.js 기반의 Express.js 서버 프로젝트를 이미지로 만들면, 이 이미지를 실행하는 순간 컨테이너 환경에서 서버가 실행된다. 복잡한 설치 과정을 거치지 않고도 손쉽게 프로그램을 실행할 수 있다. 마찬가지로 MySQL 서버 이미지도 실행과 동시에 MySQL 데이터베이스 환경을 제공하므로, 설치 없이 즉시 사용이 가능하다. Docker 이미지는 프로그램 실행에 필요한 모든 것을 포함하여 손쉬운 배포와 실행 환경을 제공한다.
Homebrew로 Docker 설치하기
Step1. 터미널에 brew 명령어로 docker 설치하기
본인의 터미널에서 다음과 같은 명령어를 실행한다.
brew install --cask docker
그렇다면 다음과 같이 설치가 진행된다.
(본인은 기존에 설치되어있다가 다시 재 설치하는거라 화면이 조금 다를 수 있다.)
Step2. 설치된 docker 버전 확인하기
docker가 정상적으로 설치되었는지 확인하기 위해서, 본인의 터미널에서 다음과 같은 명령어를 실행한다.
docker --version
docker compose version
(다음과 같이 화면에 버전이 출력된다면, 정상적으로 설치가 완료된 것이다.)
Step3. Launchpad에서 Docker 실행하기
brew로 설치할때 --cask 옵션은 GUI 프로그램을 설치할때 사용하는 명령어 옵션 인데, Launchpad로 들어가보면 다음과 같이 Docker가 보일것이다. 설치된 Docker를 클릭하여 실행해보자.
(클릭하면 실행된다.)
Step4. docker desktop 실행하기
그럼 화면상단에 docker 모양의 로고가 생기는데 우측 마우스로 클릭하고, Go to The DashBoard 클릭허자.
(Go to The DashBoard 클릭하면 docker desktop이 열린다.)
docker desktop이 다음 이미지 처럼 열리게 된다.
(docker desktop이 열린 모습이다.)
docker를 설치하는 방법에는 다양한 방법이 존재하지만, 차후 쿠버네티스 설정을 쉽게 하기위해 docker desktop을 설치하는 방식으로 설치해 보았다. docker desktop에서 설정값 하나만 켜주면 쿠버네티스를 사용할 수 있다. (쿠버네티스 글에서 다룰 예정)
[번외] Docker를 사용하여 Nginx 설치 및 실행하기
위 방법으로 설치한 docker를 통해 nginx를 설치하고 실행해보자.
Step1. nginx image 다운받기
docker를 통해 컨테이너에 nginx를 실행하려면 가장 먼저 nginx 이미지를 다운받아야 한다. 다음과 같은 명령어를 통해 이미지를 다운받자.
docker pull nginx
(nginx image가 다운이 완료된 모습이다.)
Step2. nginx image 확인하기
docker를 통해 다운받은 image 목록을 조회할수 있는데 다음과 같은 명령어로 조회할 수 있다.
docker image ls
(docker를 통해 다운받은 image 목록이 조회되는 모습이다.)
Step3. docker 명령어를 통해 nginx 실행하기
다운받은 nginx 이미지를 다음과 같은 명령어를 통해 실행할 수 있다. 이 명령어는 이름이 webserver인 새로운 컨테이너를 생성하고, NGINX 이미지를 기반으로 백그라운드에서 실행하며, 컨테이너의 80번 포트를 호스트의 80번 포트와 연결하여 로컬 환경에서 http://localhost 를 통해 NGINX 웹 서버를 사용할 수 있도록 설정하는 뜻을 축약한 명령어 이다.
docker run --name webserver -d -p 80:80 nginx
(위 명령어를 실해한 후 터미널 모습이다.)
Step4. nginx 서버 잘 실행되는지 확인하기
http://localhost로 접근하면 다음과 같은 이미지처럼 화면이 나온다. 위 명령어에서 80번 포트로 접근시에 컨테이너의 80번 포트로 접근히기로 매핑이 되어있기 떄문에 정상적으로 접근이 된 모습이다.
(포트는 80번이기때문에 localhost로 접근만 하면 nginx 페이지가 나온다.)
Step5. 실행되고 있는 컨테이너 목록 확인하기
아래 명령어를 실행하면 기존에 nginx 를 실행하였던 컨테이너를 조회할 수 있다. 현재 실행중인 것을 알 수 있다.
docker ps
(nginx를 실행시킨 컨테이너 이름이 webserver 이다.)
Step6. 실행중인 nginx 컨테이너 정지하기
다음과 같은 명령어로 nginx 컨테이너를 정지할 수 있다. 기존에 실행하였던 nginx 컨테이너 이름을 webserver로 지정하였는데 해당 이름으로도 정지를 할 수 있다.
docker stop webserver
(webserver 컨테이너 정지)
Step7. 정지한 nginx 컨테이너 삭제하기
아래 명령어를 통해 위 단계에서 정지한 nginx 컨테이너를 삭제할 수 있다.
docker rm webserver
(webserver 컨테이너 삭제)
다음으로
이번 시간에는 Docker의 기본 개념을 학습하고, M1 Mac에서 Homebrew를 사용해 Docker Desktop을 설치한 뒤, NGINX를 실행해 보았다. 다음 시간에는 현업에서 자주 사용하는 CLI 명령어들을 학습해 볼 예정이다.
Touch background to close