-
Docker + Flask 튜토리얼컴퓨터/파이썬 2020. 7. 30. 22:14728x90반응형
Docker
1. 사전 준비
Docker, WSL2 (윈도우를 위한 Linux 시스템)
아래 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/를 들어가면 아래와 같은 화면이 나온다.
docker stop flask
└(docker restart/stop container-id, 코드 수정하면 재시작하는 걸 추천)
4. DockerHub image 업로드
DockerHub에 이미지를 업로드하기 위해선 dockerhub 사이트에 아이디를 만든다.
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