Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 폴더조사
- 파이썬
- docker
- 이미지빌드
- STL
- 도커
- 지하철역좌표
- Python
- 도커 레이어
- geopandas
- osmnx
- GNN
- 데이터입수
- 패치분할
- Set
- geojson
- 귀여운고래
- GCN
- python최단거리
- 컨테이너
- 3d
- graph
- 좌표거리
- MESH
- 그리드분할
- 3d데이터
- pyvista
- 알고리즘
- GIS
- 동명이인찾기
Archives
- Today
- Total
이것저것 기록
[Docker] 파이썬 스크립트를 실행하는 도커 이미지 빌드하기 본문
도커도커~~ 이제 어느정도 도커 컨테이너, 이미지, 도커의 동작 방법 등 도커에 대한 개념이 잡힌 것 같다.
그렇다면 이제, 도커 이미지를 빌드해보자. 큰 맥락에서의 이미지 빌드 프로세스는 다음과 같다.
1. 파이썬 스크립트 작성
- 아무 편집기나 켜서 파이썬 스크립트를 작성한다. 나는 spyder를 켜서 딱 다음 한 줄을 작성해주고 test.py로 저장했다.
print("Hello World!")
- 이미지 빌드 시, Dockerfile과 파이썬 스크립트만 따로 독립된 폴더에 존재해야 하기 때문에, 나는 바탕화면에 hello-demo라는 폴더를 만들고, 위 스크립트를 넣어줬다.
2. Dockerfile 작성
- 이미지 빌드를 위해선 Dockerfile을 작성해야한다. Dockerfile을 통해 내가 원하는 내용을 기반으로 이미지를 제작할 수 있다. 꽤나 복잡한 명령어와, 수많은 옵션이 있지만... 일단 오늘은 간단하게 'Hello World!'를 출력하는 코드를 실행하는 이미지를 제작해보려고 한다.
- 우선 'Hello World!'를 출력하기 위해서 필요한 게 뭘까? 내 컴퓨터에 아무것도 깔려있지 않다고 생각해보자. 바로 파이썬이다. 이외에 다른 것은 필요 없다. 파이썬의 내장함수인 print()만 있으면 된다.
FROM python WORKDIR /usr/src/app COPY . . CMD ["test.py"] ENTRYPOINT ["python3"]
- Dockerfile은 위와 같이 작성해줬다.
- FROM: 베이스 이미지
- WORKDIR: 작업 디렉토리를 지정한다. 만약 해당 디렉토리가 없으면 새로 생성한다. 작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작한다. (cd 명령어와 동일)
- COPY: build 명령 중간에 호스트의 파일 또는 폴더를 이미지에 복사한다.
- CMD: 컨테이너를 생성/실행할 때 실행되는 명령어이다. docker run 명령으로 컨테이너를 생성하거나, docker start 명령으로 정지된 컨테이너를 시작할 때 실행된다.
- ENTRYPOINT: docker run 실행 시 실행되는 명령어다. CMD와 ENTRYPOINT 모두 컨테이너 실행 시 실행되는데, 약간의 차이가 있다 (이건 좀 더 알아보고 포스팅 하는걸로)
- Dockerfile은 메모장으로 작성하고, .txt 확장자를 제거한 후 'Dockerfile'이라는 이름으로 저장한다. 위치는 아까 독립적으로 만들어둔 hello-demo 폴더 안에~
3. cmd창에서 docker build하기
- cmd 창 실행 후, 다음과 같이 입력하여 이미지를 빌드해주자. 주의할 점! 아까 만든 Dockerfile이 있는 경로로 이동해야한다.
$ DOCKER_BUILDKIT=0 docker build -t hello-demo .
- 이미지가 정상적으로 만들어지기까지 꽤 오래 걸렸다... 이미지가 잘 만들어졌는지 확인하려면 다음과 같이 입력해보자.
- 스크립트에 작성한대로 'Hello World!' 가 cmd창에 출력된다면 성공한 것이다.
$ docker images $ docker run hello-demo
다음 번에는 좀 더 복잡한(?) Dockerfile을 작성해봐야겠당
'Data Science > New Tech' 카테고리의 다른 글
[solidity] 스마트컨트랙트 배포하기 (0) | 2022.02.14 |
---|---|
[Docker] 도커 볼륨과 마운트 (0) | 2021.07.04 |
[Docker] 도커 컨테이너 실행하기 / 명령어, 옵션 정리 (0) | 2021.06.06 |
[Docker] 도커 컨테이너의 동작 원리 (LXC, namespace, cgroup) (0) | 2021.06.06 |
[Docker] 도커 이미지 내려받기, 이미지 레이어란? (1) | 2021.06.05 |
Comments