k8s 컨테이너 개요
[컨테이너]란 무엇일까?
참고한 블로그: 링크
(1) 컨테이너 만들기
도커파일(컨테이너) 만들기(node.js)
mkdir hellojs
cd hellojs
vi hello.js
const http = require("http");
const os = require("os");
console.log("Test server starting...");
var handler = function (request, response) {
console.log("Received request from " + request.connection.remoteAddress);
response.writeHead(200);
response.end("Container Hostname: " + os.hostname() + "\n");
};
var www = http.createServer(handler);
www.listen(8080);
8080 포트로 접속한 클라이언트에게 컨테이너 호스트네임을 송출해주는 어플리케이션이다.
- 웹서비스http와 os 정보를 변수에 수집
- 콘솔창에 Test Server starting 콘솔메세지 출력
- 8080포트를 열어서 클라이언트 요청을 대기
- 요청이 오면 200번 상태코드와 컨테이너 호스트네임이라는 메세지를 전달
도커파일(컨테이너) 만들기(node.js 파일)
cd hellojs
vi Dockerfile
cat > Dockerfile
FROM node:16
COPY hello.js /
CMD ["node", "/hello.js"]
- FROM 을 통해 nodejs 16 런타임 다운로드 받고
- COPY 를 통해 hello.js 파일을 복사하고
- CMD 명령을 통해 node hello.js 를 실행
도커파일 빌드(Build)
cd hellojs
docker build -t hellojs:latest . # 빌드 (끝에는 컨테이너 이름을 넣어준다)
docker images # 빌드로 만들어진 이미지 확인
위에 도커파일 내용이 순차적으로 실행된다. 즉, 도커 빌드하면 하나의 컨테이너가 하드디스크 안에 만들어진다.
(앞서 다운로드받은 node16 과 제작한 hellojs 이미지가 있다)
도커파일(컨테이너) 만들기(웹서버)
mkdir webserver
cd webserver
vi Dockerfile
FROM ubuntu:18.04
LABEL maintainer="Espeniel <apple@naver.com>"
# install apache
RUN apt-get update \
&& apt-get install -y apache2
RUN echo "TEST WEB" > /var/www/html/index.html
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]
도커파일 빌드(Build)
cd webserver
docker build -t webserver:v1 . # 빌드 (끝에는 컨테이너이름을 넣어준다)
docker images # 빌드로 만들어진 이미지 확인
위 내용과 동일하다. 이미지가 만들어진다.
- 우분투 이미지와,
- 방금 만든 webserver 이미지가 추가 되었다.
(2) 실행(컨테이너 저장소 사용시)
도커파일 푸쉬(push)
docker push webserver:v1 .
도커컨테이너를 저장하는 저장소안에 저장한다.
푸쉬(push)는 선택적인 부분인 듯 하다. 찾아보니 도커에서 제공하는 기본 이미지 저장소로 메이븐(maven)과 비슷한 개념으로 보인다.
도커파일 풀(pull)
docker pull webserver:v1 .
(작성중)
저장소에서 받아온다.
도커파일 크리에이트(create)
(작성중)
도커파일 스타트(start)
(작성중)
(2) 실행(컨테이너 저장소 미사용시)
도커파일 런(run)
docker run -d -p 80:80 --name web webserver:v1
# 접속 해보자.
curl localhost:80
TEST WEB
Container Hostname: cddwso1
docker ps
- -p옵션으로 80포트로 들어오면 80포트로 웹서버 컨테이너를 실행 함
- index.html 파일이 실행된다.
- ps 명령어로 실행상태 확인.
docker run -d -p 8080:8080 --name web hellojs
# 접속 해보자.
curl localhost:8080
Test server starting...
Container Hostname: cddwso1
docker ps
웹서버가 아닌 node.js 실행한다는 점만 빼면 위와 동일하다.
- -p옵션으로 8080포트로 들어오면 8080포트로 노드JS 컨테이너를 실행 함
- 노드JS 파일이 실행된다.
- ps 명령어로 실행상태 확인
(3) 삭제
도커파일 삭제(del)
docker rm -f web
요약
컨테이너는 실행단위르 이미지로 만드는 것이고, 컨테이너를 동작하기 위해서는 도커 플랫폼이 필요하다.
Leave a comment