HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
🔧
Development
/
Docker

Docker

다중 선택
server

[Docker]

download
밑 링크를 기반으로 설치할 수 있다.
[Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치)
docker id: jjw314king@gmail.com
docker password: google password
docker username: jangjione
memo
image?
이진수 배열을 통해 디스크 등을 복제한 것이라 이해하면 좋을 듯
what
도커란?
개발자 버전 통일 도구라 이해하면 좋을 듯!
개발에서의 makefile!
command (gerneration)

배포자

우선 window에서 docker를 먼저 켜야 한다…
 
여기서 yourusername은 배포자 본인 docker username
임시 디렉토리 생성
mkdir docker-share
cd docker-share
requirements.txt 생성 (의존성 담겨 있는 파일: 필수 X)
Flask==2.0.1
docker file 생성
FROM python:3.9-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"] # python3가 아닌 python으로 수정
.py 파일 생성 (ex. Flask)
vim app.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello from shared Docker image!" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
docker login
docker login
image build
docker build -t yourusername/myapp .
(docker build -t yourusername/myapp:v1 . 버전을 하고 싶을 땐 push할 때도 버전 추가)
image push
docker push yourusername/myapp
 

…

 

사용자

여기서 yourusername은 배포자 docker id
docker login
docker login
image pull (run시에 image가 없을 시 자동으로 pull 해주기도 한다)
docker pull yourusername/myapp
run
docker run -p 8080:5000 yourusername/myapp
http://localhost:8080 접속
command (removing)
이미지는 docker에 존재하는 컨테이너를 모두 꺼야 지울 수 있다.
(자세한 명령어는 지피티한테 물어보기)
이미지는 모든 컨테이너를 끈 이후에, gui에서 지울 수 있다.
volumn and bind-mount
volumn
host dir랑 별개로 저장 공간을 만드는 것
bind mount
host dir에 의존적인 저장 공간을 만드는 것
version managing
해결해야 할 문제: 1. 버전 관리는 어떻게 해야 하는가? 2. 데이터는 어떻게 병합하는가? 3. merge는 어떻게 하는가?
해결책
  • github에서 소스 코드 관리
  • main branch에 병합할 정도가 되면 docker를 통해서 각자 관리
 

[Example]

example (front / back / DB)
전체 구조는 다음과 같다.
project_root/ ├── frontend/ │ ├── Dockerfile │ ├── pubspec.yaml │ └── lib/ │ ├── main.dart │ ├── models/ │ │ └── user.dart │ ├── services/ │ │ └── api_service.dart │ └── screens/ │ └── home_screen.dart ├── backend/ │ ├── Dockerfile │ ├── requirements.txt │ ├── alembic.ini │ ├── migrations/ │ │ └── versions/ │ ├── app/ │ │ ├── main.py │ │ ├── database.py │ │ ├── models/ │ │ │ └── user.py │ │ ├── schemas/ │ │ │ └── user.py │ │ └── routes/ │ │ └── user.py │ └── tests/ └── docker-compose.yml