도커파일은 도커 이미지를 생성하기 위한 설정 파일로, 애플리케이션과 그에 필요한 의존성을 정의하고 배포하는 과정을 자동화할 수 있습니다. 이번 글에서는 도커파일의 활용방법과 이점에 대해 알아보겠습니다. 도커 파일을 직접 만들어서 이해를 해보겠습니다.

 

도커라는 디렉토리를 만들어서 여기에서 작업을 하도록 하겠습니다.

도커파일을 하나 만들겠습니다.

 

  • FROM : 아래 이미지를 관리합니다. 도커 이미지를  기반이 되는 파일 시스템을 정의합니다.
  • LABEL : 사용하는 이유는 나중에 표시를 하기 위해서 사용합니다.
  • CMD : 컨테이너 실행 시 실행될 명령어

도커파일을 사용하면 애플리케이션의 개발, 배포, 실행 환경을 일관되게 공유할 수 있습니다. 모든 설정과 연속성이 있는 도커파일에 소중하므로 여러 환경에서 도일한 이미지를 사용할 수 있습니다.

 

설정한 도커파일을빌드를 해보겠습니다.

마지막에 있는 점은 현재 디렉토리에 있는 도커파일을 사용하겠다란 의미 입니다.

이미지 리스트를 보면 빌드한 이미지를 볼 수 있습니다.

정의한 것이 실행되는 것을 볼 수 있습니다.

도커파일은 도커 컨테이너를 구성하고 배포하기 위한 중요한 도구입니다. 도커파일을 효과적으로 작성하고 관리함으로써 애플리케이션의 배포 과정을 자동화하고 일관성을 유지할 수 있습니다. 도커파일은 팀협업, 지속적인 통합 및 배포, 확장성, 클라우드 통합 등 다양한 장점을 제공합니다. 따라서 도커파일을 활용하여 애플리케에션을 컨테이너화하고 배포하는 것은 현대적인 개발 및 운영 방법으로 널리 사용되고 있습니다.

도커는 컨테이너화된 애플리케이션을 실행하기 위한 플랫폼이며, 로드 밸런싱은 도커 환경에서 여러 개의 컨테이너로 구성된 애플리케이션의 트래픽을 분산시키는 중요한 기능입니다. 로드 밸런싱은 애플리케이션의 가용성과 확장성을 향상시키며, 트래픽 부하를 균형있게 분산하여 서비스의 성능을 최적화합니다.

 

로드 밸런싱을 하기 위해서 3개의 컨테이너를 만들었습니다.

다른 웹 페이지 확인하기 위해서 페이지를 변경해주었습니다.

외부에서 접속을 할 때 처음에는 칼리리눅스의 네트워크에 접속을 합니다. 80포트가 열려있는데 이것을 nginx로 구축을 할 것 입니다. nginx에서 설정을 변경하여 web01,web02,web03으로 로드 밸런싱을 하게 될 것 입니다.

nginx 설정 파일을 수정해 줄 생각입니다.

사진에 보이는 코드 빼고는 다 주석처리하는 것을 권장합니다.

나중에 천천히 오류가 있는지 확인을 하면서 풀어보는것을 추천합니다.

설정을 수정하였으니깐 서버를 리셋 해줍니다.

sudo service nginx restart

설정을 수정하였으니깐 서버를 리셋 해줍니다.

80포트로 접속하는데 새로고침을 하면 변경되는 것을 확인할 수 있습니다.

도커 컨테이너를 실행하고 정보를 확인하는 방법에 대해 알아보겠습니다.

 

도커 컨테이너를 실행하기 전에 해당 컨테이너를 위한 도커 이미지를 다운로드하거나 빌드해야 합니다.

(생각이 나지 않으면 이전 글을 보고 오세요)

 

 

 

이미지의 이름은 중복이 되면 안됩니다.

 

'run' 명령어는 해당 이미지를 사용하여 컨테이너를 실행합니다.

  • -i 옵션 : 컨테이너와 상호작용하기 위해 표준 입력을 열어줍니다. 이 옵션을 사용하면 컨테이너 내부의 명령어 실행이나 프로세스의 상호작용에 사용할 수 있는 표준 입력이 활성화됩니다. (컨테이너내부에서 키보드 입력이 가능함)
  • -t 옵션 : 가상 터미널을 할당합니다. 이 옵션을 사용하면 컨테이너와 상호작용할 때 터미널과 유사한 인터페이스를 제공합니다. 이를 통해 컨테이너 내부의 출력을 볼 수 있고, 터미널 명령어를 실행하거나 상호작용할 수 있습니다.
  • -d 옵션 : 컨테이너를 백그라운드에서 실행합니다. 일반적으로 도커 컨테이너는 기존적으로 프론트그라운드에서 실행되며, 컨테이너의 출력을 실시간으로 확인할 수 있습니다. 하지만 '-d' 옵션을 추가하면 컨테이너가 백그라운드에서 실행되며, 컨테이너의 출력은 로긍로 확인할 수 있습니다.

--name=webapp : 도커 컨테이너를 실행할 때 컨테이너에 이름을 지정하는 옵션입니다.

 

-p [호스트 포트]:[컨테이너 포트]

'-p' 옵션을 통해 호스트의 특정 포트와 컨테이너의 포트를 연결하여 외부와 내부의 통신을 가능하게 할 수 있습니다. 이를 통해 외부에서 호스트의 특징 포트로 접근하면 해당 요청이 컨테이너의 포트로 전달되어 컨테이너 내부의 애플리케이션에 도달할 수 있습니다.

 

  • CONTAINER ID : 컨테이너의 고유한 식별자인 컨테이너 ID입니다.
  • IMAGE : 컨테이너가 실행되기 위한 사용된 도커 이미지의 이름입니다.
  • COMMAND : 컨테이너가 실행 중인 명령어입니다.
  • CREATED : 컨테이너가 생성된 시간입니다.
  • STATUS : 컨테이너의 상태입니다.
  • PORTS : 컨테이너와 호스트 간의 포트 매핑 정보입니다.
  • NAMES : 컨테이너에 지정된 이름 입니다.

 

'nginx' 이미지를 기반으로 컨테이너가 실행되며, 호스트의 80번 포트와 컨테이너의 80포트가 매핑됩니다. 이제 호스트에서 블라우저를 열어 'localhost:80'에 접속하면 컨테이너 내부의 웹 서버에 접근할 수 있습니다.

(컨테이너에 설정된 내부IP를 가지고도 동작할 수 있습니다)

 

'docker inspect' 명령어는 도커 컨테이너나 이미지에 대한 상세한 정보를 확인하는 데 사용되는 명령어입니다.

JSON 혁싱으로 구성된 상세한 정보가 출력됩니다. 이 정보는 컨테이너 또는 이미지의 모든 속성을 포함하며, 여러가지 정보를 확인할 수 있습니다.

도커는 애플리케이션을 컨테이너로 묶어서 실행할 수 있는 오픈 소스 플랫폼으로, 개발과 배포를 효율적으로 관리할 수 있도록 도와줍니다.

 

도커 설치

첫번째로 해야할 일은 도커를 설치하는 것입니다. 리눅스에서는 아래에서 있는 명령어로 다운로드하면 도커 컨테이너를 사용할 수 있습니다.

 

 

도커를 다운로드하는데 오류가 있으면 업데이트를 하면 됩니다.

sudo apt update

도커 환경에 대한 정보를 확인하려면 'docker info' 명령어를 사용할 수 있습니다. 이 명령어는 도커 서버의 정보, 컨테이너 수, 이미지 수, 스토리지 드라이버 등 다양한 정보를 확인할 수 있습니다.

도커 컨테이너를 동작 시키면 로그가 남는 공간이 'Docker Root Dir' 입니다.

지금 VM의 메모리 용량이 2GB로 설정이 되어 있으면 도커 컨테이너가 제대로 활동을 안 할 수 있어서 용량을 늘려주는 것을 추천합니다.

적어도 4GB 정도는 필요하다고 생각을 합니다.

도커 이미지는 컨테이너를 생성하는데 사용되는 템플릿입니다. 도커 허브에서 공개된 이미지를 다운로드하여 사용할 수 있습니다. 도커 허브에서 원하는 이미지를 검색하고, 다운로드 할 수 있습니다.

'search'라는 명령어는 'docker hub'라는 공간에서 이미지를 검색하는 것 하고 동일 결과를 볼 수 있습니다.

원하는 이미지를 찾았다면, 해당 이미지를 다운로드하세요.

다운로드 이미지를 확인하는 명령어 입니다.

+ Recent posts