본문 바로가기
Dev/Network

『Network』 Docker 정리, 근데 좀 많이 긴

by 세대교체 2024. 11. 4.

Docker를 왜 쓸까

Docker를 사용하면 아래와 같은 장점이 있다.

  • 매번 귀찮은 설치 과정을 일일이 거치지 않아도 된다.
  • 항상 일관되게 프로그램을 설치할 수 있다. (버전, 환경 설정, 옵션, 운영 체제 등)
  • 각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않는다.

 

 

Docker 명령어를 실습하기 전에 알아야 되는 개념이 있다.

 

✅ IP : 특정 컴퓨터를 가리키는 주소

  • 예를 들어, 13.250.14.131

 

✅ Port : 실행되고 있는 특정 프로그램의 주소

  • 예를 들어, 13.250.14.131:3000
  • 3000 부분이 포트 번호를 의미한다.

 

 

Docker, Container, Image

Docker

  • 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴

Container

  • 하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념
    • 디스크 (저장 공간) : 각 컨테이너마다 서로 각자의 저장 공간을 가지고 있다.
    • 네트워크 (IP, Port) : 각 컨테이너마다 고유의 네트워크를 가지고 있다.
  • 컨테이너컨테이너를 포함하고 있는 컴퓨터를 구분하기 위해 컨테이너를 포함하고 있는 컴퓨터를 호스트(host) 컴퓨터라고 부른다.

Image

  • 프로그램을 실행하는 데 필요한 설치 과정, 설정, 버전 정보 등을 포함하고 있다.
  • 즉, 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있다.

 

 

Docker CLI를 한번 실습해 보자.

 

1. Nginx 이미지 다운로드

 

2. 다운로드된 이미지 확인하기

 

3. 이미지컨테이너에 올려 Nginx 서버 실행시키기

 

4. Nginx 서버가 잘 실행되는지 확인하기

  • 브라우저 or curl 명령어로 접근해 보기.

 

5. 실행되고 있는 모든 컨테이너 상태 확인하기

 

6. 특정 컨테이너 정지

 

 

놀랍게도 위 Docker CLI만 알아도 실무에서 Docker를 사용하는데 문제가 없다.

보통 Local에서 개발할 때 실행 중인 컨테이너 내부에 접속이 필요한 상황 있는데 아래와 같은 명령어를 입력하면 된다.

  • bash : 쉘(Shell)의 일종
  • -it : -it옵션을 사용해야 명령어를 입력하고 결과를 확인할 수 있다.
    • -it옵션을 적지 않으면 명령어를 1번만 실행시키고 종료되어 버린다.

 

 

Docker Volume

Docker를 활용하면 특정 프로그램을 컨테이너로 띄울 수 있다. 프로그램에 기능이 추가되면 새로운 이미지를 만들어서 컨테이너를 실행시켜야 한다. 이때, Docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고 새로운 컨테이너를 만들어서 통째로 갈아 끼우는 방식으로 교체를 한다.

 

이런 특징 때문에 기존 컨테이너를 새로운 컨테이너로 교체하면, 기존 컨테이너 내부에 있던 데이터도 같이 삭제된다. 만약 이 컨테이너가 MySQL을 실행시키는 컨테이너였다면 MySQL에 저장된 데이터도 같이 삭제 돼버린다.

 

따라서 컨테이너 내부에 저장된 데이터가 삭제되면 안 되는 경우에는 볼륨(Volume)이라는 개념을 활용해야 한다.

 

도커의 볼륨(Volume)이란 도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다.

볼륨(Volume)은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다.

 

 

  • [호스트의 디렉터리 절대 경로]에 디렉터리가 이미 존재할 경우,
    • 호스트의 디렉터리가 컨테이너의 디렉터리를 덮어씌운다.
  • [호스트의 디렉터리 절대 경로]에 디렉터리가 존재하지 않을 경우,
    • 호스트의 디렉터리 절대 경로에 디렉터리를 새로 만들고 컨테이너의 디렉터리에 있는 파일들을 호스트의 디렉터리로 복사해 온다.

 

 

Dockerfile

Dockerfile이란 Docker 이미지를 만들게 해주는 파일이다.

Dockerfile은 대표적인 명령어의 의미를 알고 있다면 읽는데 크게 문제없다.

명령어 설명
FROM 베이스 이미지 생성
COPY 파일 복사 (이동)
ENTRYPOINT 컨테이너가 시작할 때 실행되는 명령어
RUN 이미지를 생성하는 과정에서 사용할 명령문 실행
WORKDIR 작업 디렉토리를 지정
EXPOSE 컨테이너 내부에서 사용 중인 포트를 문서화

 

 

실습을 한번 해보자.

 

 

예제 Dockerfile

 

1. Dockerfile을 바탕으로 이미지 빌드

 

2. 이미지 생성 확인

 

3. 생성한 이미지를 컨테이너로 실행

 

4. 컨테이너 상태 확인

 

5. 실행시킨 컨테이너 중지, 삭제, 이미지 삭제

 


✅ 참고

윈도에 도커 데스크톱 설치

 

윈도우에 도커 데스크탑 설치

Install Docker Desktop on Windows Docker Desktop은 컨테이너화된 애플리케이션 및 마이크로서비스를 구축하고 공유할 수 있는 Mac, Linux, Windows 환경용 원클릭 설치 애플리케이션으로, 설치된 머신에서 컨테

myanjini.tistory.com

 

[Docker] Docker Desktop - Unexpected WSL error in Windows11 Home

 

[Docker] Docker Desktop - Unexpected WSL error in Windows11 Home

1. Docker 설치 후 아래와 같은 오류 메시지 발생provisioning docker WSL distros: ensuring main distro is deployed: deploying "docker-desktop": importing WSL distro "WSL2는 현재 컴퓨터 구성에서 지원되지 않습니다.\r\n\"가상

ohorange.tistory.com

 

[Docker] 맥 OS에 도커 설치하기(Install Docker on MacOS)

 

[Docker] 맥 OS에 도커 설치하기(Install Docker on MacOS)

맥 OS에 도커 설치하기이번에 MacBook(맥북)을 새로 설치하는 과정에서 Docker(도커)를 다시 설치하게 되어 설치하는 방법에 대해서 알아보도록 하자.우선 Docker(도커)를 설치하기 위해 공식 홈페이

happylie.tistory.com