개발할 때, 서비스 운영에 사용하는 서버에 직접 들어가서 개발하지 않는다. Local 환경에서 개발하고, 완료되면 Staging 서버, Production 서버에 배포한다.
특정 소프트웨어 환경을 만들고, Local, Production 서버에서 그대로 활용한다.
Container 기술을 쉽게 사용할 수 있도록 나온 도구
Docker Image : 컨테이너를 실행할 때 사용할 수 있는 템플릿(Read Only)
Docker Container : Docker Image를 활용해 실행된 인스턴스(Write 가능)
Docker로 다른사람이 만든 소프트웨어(Docker Image)를 가져와서 바로 사용할 수 있다.
자신만의 이미지를 만들면 다른 사람에게 공유할 수 있다.
원격 저장소인 Container Register 에 저장하면 어디서나 사용이 가능하다.
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"컨테이너 이름" : 중지된 컨테이너 삭제
pip freeze : 설치한 라이브러리를 모두 보여줌
설치한 모든 라이브러리를 requirements.txt에 저장해둔다.
Docker Image를 빌드하기 위한 정보를 담는다.
docker build "Dockerfile이 위치한 경로" : 이미지 생성
-t "이미지 이름:태그" : 이미지 이름과 태그 지정 가능
docker images : 빌드한 이미지 확인 가능
docker run : 이미지를 실행할 수 있다.