본문 바로가기

따배도 스터디

4-2 도커 컨테이너 만들어보기:실습편

728x90

1.Node js 어플리케이션 컨테이너 만들기 :Hello.js

mkdir hellojs
cd hellojs/
cat > hello.js

소스코드  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포트로 console에 메세지출력과 reponse로 Container 메세지를 출력해주는 코드이다. 

 

도커파일 생성 DockerFile

vi dockerfile
FROM node:12 
COPY hello.js / 
CMD ["node","/hello.js"]

-환경변수 node:12버젼

-Hello.js 를 카피하겠다.

-이 컨테이너를 run 할 시 node/hell.js 를 실행시킬것이다.

 

Docker File을 이용해여 build 를 실시하고 만들어질 이미지이름은 -t옵션을 통해 hellojs:latest로 설정한다.

docker build -t hellojs:latest .

생성이 잘 된 것을 확인할 수 있었다.

 

2.우분투 기반의 웹서버 컨테이너 만들기

cd ..
mkdir webserver
cd webserver/

도커파일 dockerfile를 아래와 같이 생성한다.

vi Dockerfile
FROM ubuntu:18.04
LABEL maintainer="Minwoo Kim <kbsserver@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"]

-AA & BB: AA가 성공하면 BB도 이어서 실행해라

2개의 이미지를 생성하게된다. (run 2번 하기때문에)

expose 80: 이 이미지가 가지게 될 포트번호설정

 

위의 docker 파일을 활용하여 build 실행

docker build -t webserver:v1 .
docker images

docker run -d -p 80:80 --name web webserver:v1

docker rm -f containerId를 입력하게되면 running중인 컨테이너 삭제

 

3.만들어 놓은 컨테이너 배포하기

제가 만든 이미지파일을 누구나 사용가능하게 만들 것 입니다. (Docker hub 로 push)

docker login
docker tag webserver:v1 kimminwoo1234/webserver:v1
docker images

docker push kimminwoo1234/webserver:v1

728x90