본문 바로가기
cloud/K8S

[KIA]2. 도커설치 및 컨테이너 실행

by mozi2 2023. 5. 30.
반응형

*쿠버네티스인 액션을 참고해 작성했습니다. 

1. 도커와 쿠버네티스 첫걸음 

1.1 docker package install & 컨테이너 실행하기

apt update

 apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

1.1.1 리포지토리의 GPG 키 가져오기 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

1.1.2 도커 엔진 설치

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

1.1.3 docker statusf check

1.1.4 도커 컨테이너 실행하기

docker run busybox echo "Hello World"

1.1.5. 백그라운드 동작방식

- 도커는 busybox :latest 이미지가 로컬 컴퓨터에 존재하는지 체크

- 존재하지 않으면 http://docker.io의 의 도커 허브 레지스트리에서 이미지 다운로드

- 이미지 다운로드 완료 후, 도커는 이미지로부터 컨테이너를 생성하고,컨테이너 내부에서 명령어를 실행한다.

- echo 명령어는 출력하고,프로세스  및 컨테이너를 중지한다. 

1.1.6 node.js 파일 사용해서 dockerfile 생성

# vi app.js


const http = require('http');
const os = require('os');


console.log("Kubia server starting...");


var handler = function(request, response) {
  console.log("Received request from " + request.connection.remoteAddress);
  response.writeHead(200);
  response.end("You've hit " + os.hostname() + "\n");
};


var www = http.createServer(handler);
www.listen(8080);
# vi Dockerfile


FROM node:7
ADD app.js /app.js
ENTRYPOINT ["node", "app.js"]

- FROM : 시작점(기본 이미지) 로 사용할 컨테이너 이미지를 정의. (여기서는 node 컨테이너 이미지의 태그 7 사용)

- 두번째 줄:  로컬 디렉로리의 app.js 파일을 이미지의 루트 디렉토리에 동일한 이름(node.js) 으로 추가.

- 세번째 줄: 이미지를 실행했을 때 수행되어야 할 명령어를 정의 ( 여기서는 node app.js)

docker images

1.1.7 Dockerfile 로 컨테이너 이미지 동작방법

docker build  -t kubia .

- 도커에게 현재 디렉토리의 콘텐츠를 기반으로 kubia 라고 하는 이미지를 빌드하라고 요청

- 도커는 디렉토리 내 Dockerfile 파일에 명시된 지시 사항에 근거해 이미지를 빌드

- 이미지가 로컬에 저장돼 있지 않다면, 도커는 기본 이미지(node:7) 을 도커 허브의 이미지 리포지토리에서 가져온다.

: docker build 가 완료되면, 새로운 이미지가 로컬에 저장이 된다. 

 

 

1.1.8 컨테이너 이미지 실행하기 

docker run --name kubia-container -p 8080:8080 -d kubia

 -d 는 백그라운드로 실행함을 의미하며, 로컬 머신의 8080 포트가 컨테이너 내부의 8080 포트로 매핑되고 http://localhost:8080 으로 애플리케에션에 접근 할 수 있다.

- 애플리케이션 접근하기

http://localhost:8080 

: 위 애플리케이션은 격리된 컨테이너 내부에서 실행중이며, 호스트 이름 16진수 값은 도커 컨테이너의 ID 이다.

1.1.9 실행중인 컨테이너 내부 확인

docker ps 


#docker inspect [name]
docker inspect kubia-container

docker inspect kubia-container

#실행중인 컨테이너 내부 탐색하기
docker exec -it kubia-container bash

root@9a0fc1eaf8e3:/#

-it 옵션

  • -i : 표준 입력(STDIN) 을 오픈 상태로 유지. 셀에 명령어를 입력하기 위해 필요함
  • -t : psudo 터미널 (TTY) 을 할당

 

728x90
반응형