개발할 때, 서비스 운영에 사용하는 서버에 직접 들어가서 개발하지 않음
Local 환경에서 개발하고 완료되면 Staging 서버, Production 서버에 배포
Local 환경과 Production 서버 환경이 다른 경우는?
밀키트처럼 집에서도 사용하고 레스토랑에서도 사용하는 방법
특정 SW 환경을 만들고, Local과 Production 서버에서 그대로 활용
VM은 OS위에 OS를 매번 실행
Container은 Host OS 하나만 존재
Container 기술을 쉽게 사용할 수 있도록 나온 도구
PC방에서 특정 게임만 설치하고, 고객이 특정 프로그램을 깔아도 재부팅할 때 항상 PC방에서 저장해준 형태로 다시 복구
⇒ Docker Image로 만들어두고, 재부팅하면 Docker Image 상태로 실행
컨테이너를 실행할 때 사용할 수 있는 템플릿
Read Only
Docker Image를 활용해 실행된 인스턴스
Write 가능
다른 사람이 만든 소프트웨어를 Docker Image라고 함
OS, 설정을 포함한 실행 환경
Linux, Window, Mac 어디서나 동일하게 실행 가능
e.g., MySQL을 Docker로 실행, Jupyter Notebook을 Docker로 실행
자신만의 이미지를 만들면 다른 사람에게 공유 가능
원격 저장소에 저장하면 어디서나 사용할 수 있음
원격 저장소 : Container Registry
docker pull mysql:8
docker images
docker run "이미지 이름:태그"
컨테이너 이름을 mysql-tutorial로 지정
MySQL은 환경변수로 MYSQL_ROOT_PASSWORD를 필요로 함
-d
컨테이너를 백그라운드 모드로 실행
-d 옵션이 없으면 컨테이너를 나갈 시 실행이 종료
-p 3306:3306
로컬 호스트 포트:컨테이너 포트
로컬 포트 3306으로 접근 시 컨테이너 포트 3306으로 연결되도록 설정
docker ps
docker exec -it “컨테이너 이름(또는 OID)” /bin/bash
MySQL이 실행되고 있는지 확인하기 위해 컨테이너에 진입
진입 후 mysql -u root -p
입력 시 MySQL 쉘 화면이 나타남
docker stop “컨테이너 이름(또는 ID)”
docker rm “컨테이너 이름(ID)”
Volume Mount
docker 컨테이너 내부는 특별한 설정이 없으면 컨테이너를 삭제할 때 파일이 사라짐
Volume Mount를 진행하면 Host와 Container의 폴더가 공유
-v host_folder:Container_folder
docker run -it -p 3306:3306 -v 호스트 폴더:컨테이너 폴더
Dockerfile 만들기
dockerhub 이용
push한 이미지는 docker pull로 어디서든 받을 수 있음
※ 모든 이미지 및 코드 출처는 네이버 커넥트재단 부스트캠프 AI Tech 5기입니다. ※