10월 15일(화) 수업 중 실습 내용
- Docker를 사용하면 애플리케이션을 쉽게 컨테이너화하여 배포할 수 있다.
- 이번 실습에서는 Python과 Node.js 코드를 Docker를 통해 실행했다.
1. Python 파일 Docker 컨테이너로 실행하기
(1) Python 파일 생성 및 실행
1. Python 파일 작성: nano py_lotto.py
아래의 코드를 이용하여 py_lotto.py 라는 Python 파일을 작성한다. 이 코드는 랜덤으로 로또 번호를 생성하는 코드이다.
from random import shuffle
from time import sleep
gamenum = input('How many times?')
for i in range(int(gamenum)):
balls = [x+1 for x in range(45)]
ret = []
for j in range(6):
shuffle(balls)
number = balls.pop()
ret.append(number)
ret.sort()
print('lotto number[%d]:' %(i+1), end=' ')
print(ret)
sleep(1)
2. 로컬에서 파일 실행: python3 py_lotto.py
파일을 저장한 후에 로컬에서 먼저 실행해보고, 코드에 문제가 없는지 확인한다.
(2) Python Docker 컨테이너 실행
3. python Docker 컨테이너 실행: docker run --name=python_test -dit -p 8900:8900 python
- 파이썬 이미지를 기반으로 Docker 컨테이너를 실행한다.
- name = python_test로 이름을 설정한다.
4. 소스 파일을 컨테이너로 복사: docker cp py_lotto.py python_test:/py_lotto.py
- 로컬에서 작성한 Python 파일(py_lotto.py)을 Docker 컨테이너로 복사한다.
5. Docker 컨테이너에서 Python 파일 실행: docker exec -it python_test python /py_lotto.py
- Python 파일이 컨테이너로 복사되면, 위 명령어를 활용하여 컨테이너 내부에서 파일을 실행한다.
2. Node.js 애플리케이션 Docker 컨테이너로 실행하기
- nodejs의 이미지 이름은 node이다.
- nodejs에서 web 서버를 만드는 경우 포트를 직접 지정해야 한다.
(1) Node.js 애플리케이션 작성 및 실행
1. Node.js로 웹 서버 만드는 코드 작성: nano nodejs_test.js
let http = require('http')
let content = function(req, res){
res.end('Go for it Korea~!!!')
res.writeHead(200)
}
let web = http.createServer(content)
web.listen(8002)
(2) Docker에서 Node.js 애플리케이션 실행
2. Node.js Docker 컨테이너 실행: docker run -dit --name=nodejs_test -p 8002:8002 node
- 8002번 포트를 외부에서 접속할 수 있도록 node 컨테이너를 생성
3. Node.js 파일을 컨테이너로 복사: docker cp nodejs_test.js nodejs_test:/nodejs_test.js
4. Docker 컨테이너에서 Node.js 파일 실행: docker exec -it nodejs_test node /nodejs_test.js
[실습 화면]
'DOCKER' 카테고리의 다른 글
[DOCKER] Docker Volume, bind mount, tmpfs 비교 (4) | 2024.10.17 |
---|---|
[DOCKER] Docker Volume - 데이터 영속성 관리를 위한 도커 볼륨 (0) | 2024.10.16 |
[DOCKER] Docker 컨테이너 생성 실습 - Nginx 생성 후 포트 수정 (0) | 2024.10.16 |
[DOCKER] 컨테이너(Container) 관련 명령어 (2) | 2024.10.15 |
[DOCKER] Docker의 프로세스 격리 및 자원관리 (1) | 2024.10.15 |