웹 개발에 필요한 도커(Docker) 정리

웹 개발에 필요한 도커(Docker) 정리

반응형

웹 개발자를 위한 도커에 대해 알아보기 위해 이 첫 번째 섹션에 오신 것을 환영합니다.

지금까지 이야기:- 실제 사용 사례를 살펴봅시다. 두 팀이 있다고 가정해 봅시다. A팀과 B팀. 현재 두 팀은 동일한 인프라를 공유하고 있습니다. 과거에는 동일한 버전의 JDK와 Tomcat을 사용할 수 있는 요구 사항이 있었습니다. 따라서 서로 다른 포트를 노출하고 동일한 인프라를 사용하여 운영 환경에서 애플리케이션을 실행할 수 있었습니다. 그래서 그들은 어떠한 문제도 가지지 않았다.

현재 이야기의 반전은 :- 이제 문제는 다음과 같다.

A팀에는 Mac OSX에서 소프트웨어를 개발하려는 엔지니어가 있습니다. 그러나 생산 중인 애플리케이션은 JDK 1.7과 Tomcat 7이 포함된 Ubuntu 16에서 실행될 예정이지만 QA 팀은 Mac OSX에서 개발되고 Ubuntu에서 테스트되는 소프트웨어를 제공하는 아이디어를 좋아하지 않습니다.

반면 B팀은 QA 환경에서 JDK를 1.8로, Tomcat 8로 업그레이드하여 앱을 테스트하고자 합니다.

이제 문제의 요약은 어떻게 하면 JDK 1.7과 1.8의 두 기원을 실행하는 동일한 하드웨어 버전을 가질 수 있는가 하는 것입니다. 그 이유는 소프트웨어가 다른 하드웨어와 운영 체제에서 개발되고 있고 일단 생산에 들어가면 그 환경은 완전히 다르기 때문입니다.

문제 해결 방법: - Docker가 이 문제를 해결하는 방법을 살펴보겠습니다. 여기 있습니다.

인프라 또는 서버는 맨 아래에 있습니다.

인프라 위에 호스트 운영 체제가 설치됩니다. 윈도우 맥 OSX, 리눅스 등이 될 수 있습니다.

여기에 도커 엔진이 장착되고 도커 엔진이 다양한 컨테이너를 산란시킵니다. 도커 엔진이 하는 일은 여러 개의 컨테이너를 생산하는 것입니다.

도커엔진이란 무엇인가?

도커 컨테이너란 무엇인가:- 컨테이너가 새로운 가상 PC만큼 훌륭하지만 자체 메모리 처리 능력이 있고 운영 체제에 자체 볼륨을 탑재할 수 있으며 볼륨을 공유할 수도 있다고 상상해 보십시오. 이러한 컨테이너는 자체:-

처리 능력.

기억력.

OS에 마운트된 볼륨입니다.

이러한 컨테이너는 호스트 운영 체제 또는 호스트 운영 체제의 파일과 상호 작용할 수 있습니다.

사진에서 볼 수 있듯이 도커 엔진은 호스트 머신 위에 있으며 여러 컨테이너를 산란시키는 역할을 합니다.

첫 번째 컨테이너는 Tomcat-7 및 JDK 1.7에서 호스팅되는 포트 80에서 실행됩니다.

두 번째 컨테이너는 Tomcat-8 및 JDK 1.8에서 호스팅되는 포트 80에서 실행됩니다.

이제 포트 80이 두 컨테이너 간에 어떻게 공유되는지 궁금하실 수 있습니다. 이 두 가지는 PC 내에서 실행되는 PC만큼 좋은 가상 머신이라는 것을 기억하십시오.

백 투 솔류드 스토리

Team-A는 로컬 MacOSX에 도커를 설치하고 JDK 1.7 및 Tomcat-7을 사용하여 소프트웨어를 개발합니다. 이 환경은 모든 환경에서 일관됩니다.

B팀은 A팀과 서버를 공유하더라도 JDK 1.8과 Tomcat-8을 사용하게 된다.

반면 QA는 동일한 OS(프로드의 OS)를 사용하여 개발된 애플리케이션을 테스트할 수 있기 때문에 만족합니다.

도커 도입 마무리 :-

MAC에 도커 설치 :- 여기서는 도커 서버와 클라이언트가 모두 시스템에 설치되었음을 확인할 수 있습니다. 아래의 출력은 도커 대몬에 제공되었습니다.

이제 도커 기본 설정으로 넘어가 보겠습니다. 도커에 RAM 2GB를 할당하고 CPU 4개를 할당했습니다.

터미널로 가서 첫 번째 컨테이너를 설치합시다.

하드웨어에도 도커 구성품이 설치되어 있습니다.

Use-Case-1 :- Apache httpd 웹 서버에서 웹 사이트를 호스팅하는 첫 번째 사용 사례를 살펴보겠습니다. 우리가 할 일은 다음과 같다.

이 사용 사례의 흐름은 다음과 같습니다.-

이것이 우리의 고정 웹사이트의 모습입니다. 우리는 도커 컨테이너 안에서 호스팅할 것입니다:-

1단계 :- 아래 도커 파일:-

2단계:- 도커 빌드 이 명령은 도커 파일과 "컨텍스트"에서 도커 이미지를 빌드합니다. 빌드의 컨텍스트는 지정된 PATH 또는 URL에 있는 파일 집합입니다. 빌드 프로세스는 컨텍스트에 있는 모든 파일을 참조할 수 있습니다.

--tag , -t는 이름 과 선택적으로 이름:태그 형식의 태그를 가지라고 호출합니다.

3단계:-도커 이미지 이 명령 도커 이미지는 모든 최상위 이미지, 저장소 및 태그, 크기를 표시합니다. 도커 이미지에는 재사용성을 높이고 디스크 사용량을 줄이며 각 단계를 캐시할 수 있어 도커 빌드 속도를 높이는 중간 계층이 있습니다. 이러한 중간 계층은 기본적으로 표시되지 않습니다. SIZE는 이미지와 모든 상위 이미지가 차지하는 누적 공간입니다. 이것은 이미지를 도킹할 때 만들어진 Tar 파일의 내용에 사용되는 디스크 공간이기도 합니다. 리포지토리 이름 또는 태그가 여러 개인 경우 이미지가 두 번 이상 나열됩니다. 이 단일 이미지(IME ID 일치로 식별 가능)는 나열된 SIZE를 한 번만 사용합니다.

#4:- 도커 검사 이 명령 검사는 도커가 제어하는 시공물에 대한 자세한 정보를 제공합니다. 기본적으로 는 결과를 JSON 배열로 렌더링합니다.

#5 단계:- 도커 실행 이 명령은 지정된 이미지에서 컨테이너를 만들고 지정된 명령을 사용하여 컨테이너를 시작합니다. 도커 작업을 시작할 때 가장 먼저 숙지해야 할 명령 중 하나입니다.

-i : STDIN이 붙어 있지 않더라도 열어 둔다.

-d : 분리 모드에서 이 모드를 실행하지 않으면 컨테이너 수명이 실행 중인 터미널의 수명이 됩니다.

-p : 호스트-포트와 컨테이너-포트 매핑을 나타냅니다. -P로 대체하면 도커에 의해 임의 포트가 할당됩니다.

— 이름 : 컨테이너의 이름을 나타냅니다.

여기서, 우리는 동일한 기본 도커 이미지에서 2개의 다른 컨테이너를 발사할 것입니다:-

단계 #6:- 도커 ps -a이 명령은 현재 보유하고 있는 모든 컨테이너를 표시합니다:-

위의 출력은 컨테이너가 잘 작동하고 있으며 이제 액세스할 수 있음을 나타냅니다. 이제 브라우저로 이동하여 2개의 포트 5555에 액세스해 보겠습니다.

7단계:- 도커 로그 -ft <컨테이너_id>이 명령은 일반적으로 사례 디버깅에 유용합니다. 현재, 우리는 웹사이트에 접속하고 있고 로그의 진화를 하고 있다:-

단계 #8:- 도커 검사 <컨테이너_id>이 명령은 향후 디버깅을 통해 특정 컨테이너를 검사하는 데 유용합니다.

단계 #9:- 도커 정지 <컨테이너_id>이 명령은 현재 실행 중인 컨테이너를 중지합니다. 하드웨어 포트 5555에서 웹사이트를 호스팅하던 컨테이너를 중단하자.

이제 웹사이트를 살펴보자. 이것은 우리가 이 웹사이트에 전력을 공급하던 컨테이너를 멈춘 매우 명백한 이유 때문에 더 이상 접근할 수 없다.

9단계:- 도커 Exec -it 이 명령은 도커 컨테이너에 로그인하는 데 도움이 됩니다. 이전에 논의한 내용을 기억하십시오. 도커는 실제 컴퓨터 맨 위에 있는 가상 컴퓨터이기도 합니다.

#10 단계:- 이제 우리는 우리의 컨테이너가 Linux 기반 컴퓨터라는 것을 알고 있습니다. 이제 우리는 새로 출시된 이 컨테이너에 로그인했습니다. 먼저 ps 패키지를 설치하여 이 컨테이너 안에서 현재 실행 중인 모든 프로세스를 확인할 수 있습니다.

#11 단계:- 다음으로, 현재 이 컨테이너에서 실행 중인 모든 프로세스를 검사해 봅시다:-

이제 DockerHub에서 다운로드하는 모든 이미지 또는 사용자가 생성한 이미지에서 실행되는 기본 컨테이너 내의 기본 시작 스크립트에 해당하는 첫 번째 프로세스 ID를 갖게 된다는 점을 기억하십시오. 그래서 여기 우리의 경우 아파치 httpd를 실행했고 첫 번째 프로세스로 시작됐습니다.

11단계:- 다음으로, 우리의 아름다운 용기를 좀 더 살펴보자. DockerFile을 다시 방문하게 되어 기쁩니다. 기계(시스템)에서 Docker-container로 정적 웹 사이트를 복사하라는 지침을 넣었습니다. 아래 "Dockerfile" @ line #12에서 폴더 웹 사이트(이 폴더에는 로컬에서 개발한 정적 웹 사이트의 아티팩트가 들어 있음)를 컨테이너 안에 있는 "/usr/local/apache2/htdocs/aditya-web" 디렉터리에 복사해야 합니다.

따라서 이제 앞에서 언급한 디렉터리 경로를 도커 컨테이너로 변경할 수 있습니다.

전체 폴더 구조도 살펴보겠습니다.

또한 "httpd.conf" 파일을 재정의했습니다. @를 살펴보도록 하죠. 이 파일의 최근 타임스탬프는 최근에 변경되었음을 나타냅니다.

도커에 처음에는 4개의 CPU, 2GB의 RAM 및 59GB의 HDD를 할당했습니다. 우리의 초기 배정을 증명하는 동일한 것을 살펴보자.

단계 #12:- 도커 rm <용기_id>이 명령은 특정 컨테이너를 제거하는 데 도움이 됩니다. 참고로, 특정 컨테이너를 제거하려면 먼저 컨테이너를 중지한 다음 컨테이너만 제거할 수 있습니다.

단계 #13:- 도커 rmi 이 명령은 특정 이미지를 제거하는 데 도움이 됩니다. 이미지를 제거하려면 해당 이미지를 통해 전원이 공급되는 용기가 없는지 확인해야 합니다.

이 블로그는 여기까지입니다. 우리는 다음 블로그에서 더 많은 것들을 볼 것이다.

참고자료 :-

from http://devcloset.tistory.com/354 by ccl(A) rewrite - 2021-09-12 02:25:55

댓글