코딩두의 포트폴리오

Cloud Computing - #13 도커(Docker) 실습 본문

Cloud

Cloud Computing - #13 도커(Docker) 실습

코딩두 2024. 5. 27. 19:53

도커(Docker)

Linux 응용 프로그램들을 프로세스 격리 기술을 사용해 컨테이너로 실행,관리하는 오픈 소스 프로젝트

Linux 컨테이너 생성 및 사용을 돕는 컨테이너 기술

 

도커 이전 환경

개발환경과 테스팅, 운영환경의 차이

전문 엔지니어의 지식에 의지하여 개발 및 서버 운영 -> 협업의 어려움

APP 업데이트, 서버 변경, 재구축, 유지보수의 어려움

 

도커 등장 이후

한 번 만들어놓은 환경 그대로 사용 가능

모든 엔지니어가 하나의 언어로 협업 가능

SW 업데이트, 서버 유지 보수 용이

 

도커 vs 가상머신

가상머신: Guest OS 필요 -> 오버헤드 발생

도커: Host OS 공유 -> APP 단위 처리 가능 -> 빠른 실행 및 배포

이미지와 컨테이너

이미지: 기능 정의파일 + 도커 메타데이터 구성

컨테이너: 이미지로 정의된 시스템

 

[도커 실습]

1. Docker 허브 가입

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

 

2. 온라인 Docker 실습 환경 접속

무료 가입 및 인스턴스 생성

 

3. Docker 컨테이너 생성

 web1, web2 생성

1) 웹 서버 컨테이너 만들기 위해 아파치서버 이미지 검색

docker search http

 

 2) 아파치 서버 이미지 다운로드

 docker pull httpd

 docker images

다운로드 이미지 확인

 

 3) 다운로드 받은 이미지를 활용하여 컨테이너 web1, web2 생성

  • docker run : 컨테이너 생성 명령어
  • -d (detach) : 백그라운드로 실행 (다른 작업을 셸에서 계속하기 위해)
  • --name : 컨테이너 명 지정
  • -p : 호스트와 연결할 포트 지정 (Web1의 80번 포트는 호스트의 8001번 연결)
  • httpd : 다운로드 받은 이미지명

 docker run -d --name web1 -p 8001:80 httpd

web1 생성 - 8001 포트 연결

 docker run -d --name web2 -p 8002:80 httpd

web2 생성 - 8002 포트 연결

 4) 생성된 컨테이너 상태 확인

 docker ps

 5) 컨테이너 MAC 주소, IP 주소, 포트 구성 확인

 docker inspect 컨테이너명(web1 or web2)

포트 구성화면은 "NetworkSettings" 부분에서 확인

 

 6) 컨테이너 접속

 각 컨테이너에 접속하여 bash shell 실행

docker exec -it web1 bash

검색해보기: -it 옵션

vim editor에서  나올 때 - esc - :wq - enter

 

 7) 각 컨테이너에 접속 후 index.html 파일 수정

cd htdocs

-> index.html 내용 편집

 index.html 위치: /usr/local/apache2/htdocs

 vi 편집기 없음 - vim 설치

 apt update

 apt install vim

 vim 편집기로 index.html 편집

 

8) 각 웹서버 컨테이너 접속

접속 종료

 

4. 컨테이너 이미지 생성 및 도커허브 업로드

1) Docker.hub 계정으로 로그인 

docker login

2) docker commit 및 push / 도커 이미지 생성 및 업로드

docker commit 컨테이너명 도커허브사용자명/생성한이미지명:관리버전

docker commit web1 codingdo/22029343-1:1.0

docker push 도커허브사용자명/생성한이미지명:관리버전

docker push codingdo/22029343-1:1.0

 

3) 업로드된 이미지 도커허브에서 확인

 

5. 도커허브 이미지 사용

1) 업로드한 본인 이미지 다운로드

docker pull 도커허브사용자명/다운받을이미지명:버전

docker pull codingdo/22029343-1:1.0

2) 해당 이미지 8003번 포트에 연결하여 컨테이너 생성

docker run -d --name web3 -p 8003:80 httpd

3) 웹 브라우저에서 8003번 접속화면 캡처