*쿠버네티스인 액션을 참고해 작성했습니다.
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 으로 애플리케에션에 접근 할 수 있다.
- 애플리케이션 접근하기
: 위 애플리케이션은 격리된 컨테이너 내부에서 실행중이며, 호스트 이름 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) 을 할당