수업 79일차 도커를 이용한 파이썬

유동우·2023년 1월 22일
1

docker run --name apa000ex2 -d -p 8080:80 httpd
PS C:\docker\httpd> docker exec -it apa000ex2 /bin/bash
root@378cc0216d09:/usr/local/apache2# pwd
/usr/local/apache2
root@378cc0216d09:/usr/local/apache2# ls
bin build cgi-bin conf error htdocs icons include logs modules
root@378cc0216d09:/usr/local/apache2# cd htdocs
root@378cc0216d09:/usr/local/apache2/htdocs# ls
index.html
root@378cc0216d09:/usr/local/apache2/htdocs# pwd
/usr/local/apache2/htdocs
root@378cc0216d09:/usr/local/apache2/htdocs# exit
exit
PS C:\docker\httpd> docker cp apa000ex2:/usr/local/apache2/htdocs/index.html index.html
PS C:\docker\httpd> dir

디렉터리: C:\docker\httpd

Mode LastWriteTime Length Name


-a---- 2007-06-12 오전 3:53 45 index.html
-a---- 2007-06-12 오전 3:53 45 index.htmldir

Visual Studio Code들어가서 docker/httpd에 index.html 파일에

아파치 웹 서버> head>

It works!

수정된 내용.

>

입력하고 저장

PS C:\docker\httpd> docker cp index.html apa000ex2:/usr/local/apache2/htdocs/index.html

브라우저에 localhost:8080

hub.docker.com/_/python/tags에 python:3.9.16

docker pull python:3.9.16

PS C:\docker\httpd> cd ..
PS C:\docker> mkdir python
PS C:\docker> cd .\python\
PS C:\docker\python> dir
PS C:\docker\python> docker ps

docker run --name pythonex01 python

PS C:\docker\python> docker build -t hellopython:v1 .

PS C:\docker\python> docker image inspect hellopython:v1

PS C:\docker\python> docker run hellopython:v1

dockerfile에

-# 이미지 파일 (파이썬 이미지 파일)
FROM python
-# 이미지 안에서 작업 폴더 (cd 명령어라고 생각하면 됨)
WORKDIR /root
-# 이미지 파일을 생성하면서 이미지 파일 안으로 복사할 파일 설정
ADD hellopython.py .
-# 이미지 파일 안에서 실행할 내용
CMD ["python3", "hellopython.py"]

docker run hellopython:v1

python에 01폴더 만들고 calculator.py 파일생성

#!/usr/bin/python3

print("-" 10, "계산기", "-" 5)

x = 10
y = 20
print(f'두 수의 덧셈은 = {x + y}')
print(f'두 수의 뺄셈은 = {x - y}')
print(f'두 수의 나눗셈은 = {x / y}')
print(f'두 수의 곱셈은 = {x * y}')

입력하고 저장

Dockerfile 만들고

FROM python
WORKDIR /home/python
ADD calculator.py .
CMD ["python3", "calculator.py"]

입력하고 저장

PS C:\docker> cd .\python\01
PS C:\docker\python\01> docker build -t py-calculator:v1.0 .

docker run py-calculator:v1.0

docker pull python:3.9.16-slim

문제 1) 폴더 02를 만들고 Dockerfile파일을 생성한 후 1 ~ 10까지의 합을 출력하는 파이썬 프로그램을 작성하고
도커 이미지를 사용하여 실행하시오

파이썬 파일명 : one2ten.py

dockerfile 만들고

FROM python:3.9.16-slim
WORKDIR /home/python
ADD one2ten.py .
CMD ["python3", "one2ten.py"]

입력하고 저장

calculator.py 만들고

#!/usr/bin/python3

print("-" 10, "계산기", "-" 5)

x = 1
sum = 0

while x < 11:
sum = sum + x
x = x+1

print(sum)

입력하고 저장

docker build -t one2ten:v1 .

docker run one2ten:v1

==========================

구구단

Dockerfile

FROM python:3.9.16-slim
WORKDIR /home/python
ADD gugudan.py .
CMD ["python3", "gugudan.py"]

gugudan.py

print("-" 10, "구구단", "-" 5)

for x in range(2, 10):
print("------- [" + str(x) + "단] -------")
for y in range(1, 10):
print(x, "X", y, "=", x*y)

docker build -t gugudan:v1 .

docker run gugudan:v1

==================

test

Dockerfile

FROM python:3.9.16-slim
WORKDIR /home/python
ADD test.py .
CMD ["python3", "test.py", "10", "100"]

test.py

import sys

print("-" 10, "input 테스트", "-" 5)

x = sys.argv[1]
x = int(x)
y = sys.argv[2]
y = int(y)

print(f'두 수의 합 : {x+y}')

docker build -t test:v1 .

docker run test:v1

=========================================

if

Dockerfile

FROM python:3.9.16-slim
WORKDIR /home/python
ADD if.py .
CMD ["python3", "if.py", "80"]

-# RUN : 이미지 내에서 쉘 커맨드를 실행하는 것처럼 동작, 특정 소프트웨어를 설치 시 주로 사용
-# ENTRYPOINT : 항상 실행되어야 하는 커맨드를 입력 시 사용
-# CMD : 디폴트로 실행할 커맨드나 ENTRYPOINT 명령문으로 지정된 커맨드에 파라미터를 지정할 때 사용

if.py

import sys

print("-" 10, "if문 사용하기", "-" 5)

score = sys.argv[1]
score = int(score)
level = 'F'

if score > 90:
level = 'A'
elif score > 80:
level = 'B'
elif score > 70:
level = 'C'
elif score > 60:
level = 'D'
else:
level = 'F'

print(f'당신의 점수는 {score}, 등급은 {level}')

docker build -t if:v1 .

docker run if:v1

===========================

function

Dockerfile

FROM python:3.9.16-slim
WORKDIR /home/python
ADD function.py .
CMD ["python3", "function.py"]

function.py

print("-" 10, "함수 사용하기", "-" 5)

def sum():
x = 10
y = 20
print(f'두 수의 덧셈은 : {x + y}')

def sub(x, y):
print(f'두 수의 뺄셈은 : {x - y}')

def multi():
x = 10
y = 20
result = x * y
return result

def div(x, y):
result = x / y
return result

sum()
sub()
multi()
div()

docker build -t function:v1 .

docker run function:v1

====================================

파일 읽기

Dockerfile

FROM python:3.9.16-slim
WORKDIR /home/python
COPY test.txt .
ADD readfile.py .
CMD ["python3", "readfile.py"]

-# ADD : host 환경의 파일을 대상 컨테이너 이미지 안으로 복사, 복사하려는 대상 파일이 압축 파일일 경우 해당 파일의 압축을 해제하여 복사, wget 등을 통해서 원격지원 파일을 복사 대상으로 지정할 수 있음

-# COPY : host 환경의 파일또는 디렉토리를 대상 컨테이너 이미지 안으로 복사

text.txt - 읽을 파일 생성

라인1
라인2
라인3
라인4
라인5
라인6
라인7
라인8
라인9
라인10

readfile.py

print("-" 10, "파일 읽기", "-" 5)

f = open('test.txt', 'r', encoding='utf-8')

script = f.read()
print('\n' + '파일 내용 : ' + '\n' + script)

f.close()

PS C:\docker\python\07> C:\Anaconda3\python readfile.py

docker build -t readfile:v1 .

docker run readfile:v1

===========================================

문제 8) 폴더 08을 만들고 일반 텍스트 파일 info.txt 파일의 내용을 읽어서 화면에 출력하는 파이썬
프로그램을 작성하고 도커 이미지로 생성하여 컨테이너를 실행하세요

  • info.txt의 내용은 버킷리스트 5개
  • 화면에 출력할 내용은 버킷리스트 3개만 출력
  • readline() : 한번에 한줄 읽어오기, readlines() : 모든 라인을 읽어서 리스트에 저장
    을 사용하여 파일의 내용을 가져와야 함

===========================================

Dockerfile

FROM python:3.9.16-slim
WORKDIR /app
COPY write.py .
CMD ["python3", "write.py"]

share.txt

아무것도 안하고 한달 놀기
오토바이 전국 일주
제주도 오토바이 여행
스노우보드 배우기
다이어트

write.py

print("-" 5, "파일 쓰기", "-" 5)

f = None
data_list = ['아무것도 안하고 한달 놀기', '오토바이 전국 일주', '제주도 오토바이 여행', '스노우보드 배우기', '다이어트']

try:
f = open('share.txt', 'w', encoding='utf-8')

for item in data_list:
    f.write(item + '\n')
        

except:
print('파일 쓰기 중 오류가 발생했습니다.')
finally:
if f != None:
f.close()

print("-" 5, "파일 쓰기완료", "-" 5)

PS C:\docker\python> cd 10
PS C:\docker\python\10> docker volume create py-vol 10

PS C:\docker\python\10> docker volume create py-vol10

PS C:\docker\python\10> docker volume inspect py-vol10

c:\Anaconda3\python.exe ./write.py

docker build -t py-test10:v1.0 .

docker run --name py-test10_ver1.0 -v py-vol10:/app py-test10:v1.0

profile
클라우드 엔지니어가 되고싶은 클린이

0개의 댓글