5주차 docker 정리

kimkihoon·2022년 2월 17일
0

부스트캠프 AI

목록 보기
16/49

가상화

개발할 때, 서비스 운영에 사용하는 서버에 직접 들어가서 개발하지 않는다. Local 환경에서 개발하고, 완료되면 Staging 서버, Production 서버에 배포한다.
특정 소프트웨어 환경을 만들고, Local, Production 서버에서 그대로 활용한다.

  • 개발과 운영 서버의 환경 불일치가 해소된다.
  • 어느 환경에서나 동일한 환경으로 프로그램을 실행할 수 있다.
  • 개발 외에 Research도 동일한 환경을 사용할 수 있다.

Docker

Container 기술을 쉽게 사용할 수 있도록 나온 도구

  • Container : VM의 무거움을 덜어주고 가상화를 좀 더 경량화된 프로세스의 개념으로 만든 기술

Docker Image : 컨테이너를 실행할 때 사용할 수 있는 템플릿(Read Only)
Docker Container : Docker Image를 활용해 실행된 인스턴스(Write 가능)

Docker로 다른사람이 만든 소프트웨어(Docker Image)를 가져와서 바로 사용할 수 있다.
자신만의 이미지를 만들면 다른 사람에게 공유할 수 있다.
원격 저장소인 Container Register 에 저장하면 어디서나 사용이 가능하다.

Docker 실행

docker pull mysql:8 : mysql 8 버전의 이미지를 다운

docker images : 다운받은 이미지 확인

docker run --name mysql-tutorial -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306 mysql:8 : 다운받은 MySQL 이미지 기반으로 Docker Container 만들고 실행한다.
name을 지정하지 않으면 랜덤으로 생성
root password를 통해 비밀번호를 설정
-d 를 통해 컨테이너를 백그라운드 형태로 실행한다. 이것을 하지 않으면 컨테이너를 나가면 바로 실행이 종료된다.
-p 3306:3306을 통해 호스트 포트: 컨테이너 포트 형태로 접근한다. mysql은 기본적으로 3306포트를 통해 통신

docker ps : 실행한 컨테이너의 목록 확인

docker exec -it"컨테이너 이름" /bin/bash : MySQL이 실행되고 있는지 확인하기 위해 컨테이너에 진입

docker stop"컨테이너 이름" : 실행중인 컨테이너 중지

docker rm"컨테이너 이름" : 중지된 컨테이너 삭제

Docker Image 생성

  • 폴더 하나 만들고 가상환경 세팅과 FastAPI 패키지 설치

pip freeze : 설치한 라이브러리를 모두 보여줌
설치한 모든 라이브러리를 requirements.txt에 저장해둔다.

  • Dockerfile라는 파일 하나 생성

    Docker Image를 빌드하기 위한 정보를 담는다.

docker build "Dockerfile이 위치한 경로" : 이미지 생성
-t "이미지 이름:태그" : 이미지 이름과 태그 지정 가능

docker images : 빌드한 이미지 확인 가능

docker run : 이미지를 실행할 수 있다.

0개의 댓글