본문 바로가기

Docker/Docker 이미지 빌드

직접 도커 이미지를 빌드하기

# 직접 도커 이미지 빌드하기

# 파이썬 파일 생성

gedit test_server.py

# 실행된 파이썬 파일에 아래내용 붙여넣기

# test_server.py
import socket

with socket.socket() as s:
  s.bind(("0.0.0.0", 12345))
  s.listen()
  print("server is started")
  conn, addr = s.accept()
  # conn 클라이언트와 통신할 소켓
  # addr 클라이언트의 정보가 들어있음
  with conn:
    print("Connected by", addr)
    while True:
      data = conn.recv(1024)
      if not data: break
      conn.sendall(data)

# python3 test_server.py 명령어를 실행하여 위에서 생성한 파일을 실행한다.

python3 test_server.py

server is started 라는 메세지를 출력

# 새탭을 클릭하여 새로운 cmd 창 생성

nc 127.0.0.1 12345 로 접속하게 되면 test_server 파일을 실행한 cmd 화면에서 커넥트 정보를 출력한다. (12345는 포트번호 이다.)

nc 127.0.0.1 12345를 실행한 화면에서 아무 데이터나 입력하면 같은 데이터를 반환하는것을 볼 수 있다.

이것은 위에서 제작한 파이썬 코드가 이와같은 행위를 출력하도록 코딩 되어있기 때문이다.

컨트롤 + c 를 입력하여 서버를 종료시킬수 있다.

# 도커 파일을 생성해보자

mkdir my_first_project

mv test_server.py ./my_first_project/

cd my_first_project

ls

gedit dockerfile

- 내용 입력

FROM python:3.7

RUN mkdir /echo

COPY test_server.py /echo

CMD ["python", "/echo/test_server.py"]

# 도커를 빌드해보자 (현재 폴더에는 dockerfile, test_server.py 파일만 존재해야 한다.)

(. 은 현재 디렉토리를 의미한다.)

docker build -t echo_test .

# 빌드한 이미지 확인

docker images

echo_test 확인가능

# echo_test 실행하기

docker run -t -p 12345:12345 --name et --rm echo_test

server is started 라고 나오면 성공적으로 생성됨

# 새 터미널에서 접속

새 터미널을 띄우고

nc 127.0.0.1 12345

성공적으로 접속 되면 서버쪽 터미널에서 Connected by ('127.0.0.1', 56789) 와 같은 내용을 출력.

# client 에서 test, 1234 와 같은 데이터를 입력하면, 동일한 데이터를 화면에 출력해주는것을 확인

test

test

1234

1234