이성미 강사님의 "[따배도] 따라 배우는 도커" 영상과 개인적인 학습 내용을 정리한 내용입니다.
1. 무엇을 컨테이너로 만드는가?
- 개발한 프로그램과 실행환경을 모두 컨테이너로 만든다.
- MSA(Micro Service Architecture) 환경이 Polyglot 애플리케이션 운영
- 각각의 Application Service에 맞춰서 컨테이너를 만듦
2. 컨테이너를 어떻게 만드는가? Dockerfile이 뭔가
- Dockerfile을 이용해 컨테이너를 빌드한다.
- Dockerfile은 Container를 만들 수 있도록 도와주는 명령어 집합
- 쉽고, 간단, 명확한 구문을 가진 text file로 Top-Down 해석
- 컨테이너 이미지를 생성할 수 있는 고유의 지시어(Instruction)를 가짐
- 대소문자를 구분하지 않으나 가독성을 위해 사용함
# dockerfile 예제
$ vi dockerfile
FROM node:12
COPY hello.js /
CMD ["node", "/hello.js"]
$ docker build -t hellojs:latest .
Dockerfile 문법
3. 컨테이너 배포
docker login
docker push hellojs:latest
4. 실습
1) nodejs 애플리케이션 컨테이너 만들기 : hellojs
2) 우분투 기반의 웹 서버 컨테이너 만들기
3) 만들어 놓은 컨테이너 배포하기
1) nodejs 애플리케이션 컨테이너 만들기 : hellojs
`hellojs`라는 이름의 폴더를 만들고 안에 `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);
Dockerfile 생성하기
vi dockerfile
FROM node:12
COPY hello.js /
CMD ["node","/hello.js"]
Dockerfile 빌드하기
# docker build
docker build -t hellojs:latest .
만들어진 image 확인
docker images
2) 우분투 기반의 웹 서버 컨테이너 만들기
mkdir webserver
cd webserver
vi Dockerfile
FROM ubuntu:18.04
LABEL maintainer="jihwan98 <jihwan98.dev@gmail.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"]
docker build 하기
docker build -t webserver:v1 .
# 만든 이미지 확인
docker images
# container 실행해보기
docker run -d -p 80:80 --name web webserver:v1
# 실행 확인
docker ps
# 실행 확인2 (curl)
curl localhost:80
>>> TEST WEb
3) 만들어 놓은 이미지 배포하기
이미지를 배포하려면
- docker login
- tag 달아주기
- docker push
docker login
docker tag webserver:v1 jihwan98/webserver:v1
docker push jihwan98/webserver:v1
'IT' 카테고리의 다른 글
[Ubuntu] 우분투 Root 계정 비밀번호 설정 (0) | 2024.02.21 |
---|---|
[Docker] 컨테이너 사용 방법. docker 명령어 (0) | 2024.02.20 |
[Docker] 컨테이너와 도커의 이해 (0) | 2024.02.19 |
[Python] Python venv 가상환경 사용법 (0) | 2024.02.11 |
[Anaconda] Anaconda에서 Jupyter Notebook 설치하기 (0) | 2024.02.09 |