-
Docker + Flask 튜토리얼컴퓨터/파이썬 2020. 7. 30. 22:14728x90반응형
Docker
Docker 공식 로고 1. 사전 준비
Docker, WSL2 (윈도우를 위한 Linux 시스템)
WSL 2
Linux용 Windows 하위 시스템 2
docs.microsoft.com
아래 flask-app.zip 압축 해제한다.
2. DockerFile
우선 DockerFile 구조를 한 번 살펴보겠다.
FROM python:3 # set a directory for the app WORKDIR /app # copy all the files to the container COPY . . # install dependencies RUN pip install --no-cache-dir -r requirements.txt # tell the port number the container should expose EXPOSE 5000 # run the command CMD ["python", "./app.py"]
FROM python:3 : BASE image를 python 3+로 지정
WORKDIR : docker 가상 이미지 안에서 작업할 폴더 app으로 지정
COPY . . : 현재 시스템 폴더에 있는 모든 파일을 컨테이너 안으로 복사하기
RUN : 명령어 실행
EXPOSE : 호스트와 연결할 포트 번호 지정
CMD : 실행할 cmd 명령어 python ./app.py
( ENTRYPOINT : CMD와 다른 점은 docker run를 실행할 때 추가 인자가 CMD로 간다.)
3. Docker 실행
docker images
└(도커 모든 이미지 보기)
docker container ls
└(도커 컨테이너 이름 표시, docker stop container-id ...)
docker build -t test-app .
└( -t 인자 : TTY 모드, bash로 실행하기 위해 필요함, 설정하지 않으면 명령어는 가능하나 셀 표시 안됨)
docker run --name=flask -p 8888:5000 test-app
└(flask란 이름으로 컨테이너를 만들고 test 이미지를 실행한다, 8888=외부 포트, 5000=서버 포트)
└(다음부터 실행할 땐 docker start flask)
그리고 http://localhost:8888/를 들어가면 아래와 같은 화면이 나온다.
Flask 실행 화면 docker stop flask
└(docker restart/stop container-id, 코드 수정하면 재시작하는 걸 추천)
4. DockerHub image 업로드
DockerHub에 이미지를 업로드하기 위해선 dockerhub 사이트에 아이디를 만든다.
Docker Hub
Supported Products Certified Containers provide ISV apps available as containers. Certified Plugins for networking and volumes in containers. Certified Infrastructure delivers an optimized and validated Docker platform for enterp
hub.docker.com
docker login
└(docker Hub 아이디와 비밀번호를 입력해서 로그인하기)
docker push test-app
└(docker push container-id)
└( ※ 만약 denied: requested access to the resource is denied와 같은 오류가 발생하면,
docker tag test-app dockerHub-ID/test-app
test-app 아이디를 내ID/test-app으로 바꿔준다. 그리고 docker push 내id/test-app )
그러면 다른 사용자들은 docker pull image로 바로 사용할 수 있다.
docker pull alfex4936/test:latest
└(위 튜토리얼 docker image)
############################################################################## # DOCKER ############################################################################## docker build -t friendlyname . # Create image using this directory's Dockerfile docker run -p 4000:80 friendlyname # Run "friendlyname" mapping port 4000 to 80 docker run -d -p 4000:80 friendlyname # Same thing, but in detached mode docker exec -it [container-id] bash # Enter a running container docker ps # See a list of all running containers docker stop <hash> # Gracefully stop the specified container docker ps -a # See a list of all containers, even the ones not running docker kill <hash> # Force shutdown of the specified container docker rm <hash> # Remove the specified container from this machine docker rm $(docker ps -a -q) # Remove all containers from this machine docker images -a # Show all images on this machine docker rmi <imagename> # Remove the specified image from this machine docker rmi $(docker images -q) # Remove all images from this machine docker logs <container-id> -f # Live tail a container's logs docker login # Log in this CLI session using your Docker credentials docker tag <image> username/repository:tag # Tag <image> for upload to registry docker push username/repository:tag # Upload tagged image to registry docker run username/repository:tag # Run image from a registry docker system prune # Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes. (Docker 17.06.1-ce and superior) docker system prune -a # Remove all unused containers, networks, images not just dangling ones (Docker 17.06.1-ce and superior) docker volume prune # Remove all unused local volumes docker network prune # Remove all unused networks ############################################################################## # DOCKER COMPOSE ############################################################################## docker-compose up # Create and start containers docker-compose up -d # Create and start containers in detached mode docker-compose down # Stop and remove containers, networks, images, and volumes docker-compose logs # View output from containers docker-compose restart # Restart all service docker-compose pull # Pull all image service docker-compose build # Build all image service docker-compose config # Validate and view the Compose file docker-compose scale <service_name>=<replica> # Scale special service(s) docker-compose top # Display the running processes docker-compose run -rm -p 2022:22 web bash # Start web service and runs bash as its command, remove old container. ############################################################################## # DOCKER SERVICES ############################################################################## docker service create <options> <image> <command> # Create new service docker service inspect --pretty <service_name> # Display detailed information Service(s) docker service ls # List Services docker service ps # List the tasks of Services docker service scale <service_name>=<replica> # Scale special service(s) docker service update <options> <service_name> # Update Service options ############################################################################## # DOCKER STACK ############################################################################## docker stack ls # List all running applications on this Docker host docker stack deploy -c <composefile> <appname> # Run the specified Compose file docker stack services <appname> # List the services associated with an app docker stack ps <appname> # List the running containers associated with an app docker stack rm <appname> # Tear down an application ############################################################################## # DOCKER MACHINE ############################################################################## docker-machine create --driver virtualbox myvm1 # Create a VM (Mac, Win7, Linux) docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1 # Win10 docker-machine env myvm1 # View basic information about your node docker-machine ssh myvm1 "docker node ls" # List the nodes in your swarm docker-machine ssh myvm1 "docker node inspect <node ID>" # Inspect a node docker-machine ssh myvm1 "docker swarm join-token -q worker" # View join token docker-machine ssh myvm1 # Open an SSH session with the VM; type "exit" to end docker-machine ssh myvm2 "docker swarm leave" # Make the worker leave the swarm docker-machine ssh myvm1 "docker swarm leave -f" # Make master leave, kill swarm docker-machine start myvm1 # Start a VM that is currently not running docker-machine stop $(docker-machine ls -q) # Stop all running VMs docker-machine rm $(docker-machine ls -q) # Delete all VMs and their disk images docker-machine scp docker-compose.yml myvm1:~ # Copy file to node's home dir docker-machine ssh myvm1 "docker stack deploy -c <file> <app>" # Deploy an app
도커 openface 사용 : https://choiseokwon.tistory.com/157
728x90'컴퓨터 > 파이썬' 카테고리의 다른 글
파이썬 win10toast 윈도우 알림 만들기 (0) 2020.08.02 파이썬 A* (A-star) 최단 경로 찾기 알고리즘 (10) 2020.07.20 파이썬 Introspective Sort (내성 정렬) 알고리즘 (0) 2020.07.17