가수면
[Docker] 기본 본문
하이퍼 기반의 가상화 vs 컨테이너 기반 가상화
하이퍼 기반의 가상화
또 하나의 가상 서버를 실행하는 기술
호스트 = 물리서버
게스트 = 가상서버
하이퍼바이저 = 서버 가상화 기술로서 호스트 서버에 설치되고 호스트와 게스트를 나누는 역할을 수행
각각의 게스트는 하이퍼바이저에 의해 관리되며 시스템 자원을 할당받게 됨
게스트os에서 실행되는 애플리케이션이 호스트 자원을 사용하기 위해서는 반드시 게스트 os를 거쳐야하기에 속도가 느릴 수 있음
컨테이너 기반 가상화
격리된 환경에서 프로세스를 실행하는 기술
애플리케이션은 도커 엔진을 통해 자원을 사용할 수 있고, 구조적으로 게스트os가 없기 때문에 가벼움
도커
도커 허브
도커에서 제공하는 이미지 저장소
도커 이미지
응용 프로그램을 실행하는 데 필요한 모든 것이 담겨있는 패키지
예시)
터미널에 아래 명령어 입력
docker pull mysql:latest(버전)
도커 컴포즈
다중 컨테이너를 정리하고 실행하기 위한 도구 (mySQL, kafka 등 여러 개의 프로세스를 하나의 파일로 정리해서 동시에 실행하기 위한 도구)
YAML 파일을 사용하여 다중 컨테이너를 구성함
https://docs.docker.com/compose/gettingstarted/
도커 실행
실행 명령어1
docker run --name mysql-sample-container(컨테이너 이름) -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:{version}
// 만약 사용 중인 포트라는 에러가 발생한다면 3307:3306 등 사용하지 않고 있는 포트로 수정
실행 명령어2
docker run --detach --env MYSQL_ROOT_PASSWORD=dummypassword --env MYSQL_USER=todos-user --env MYSQL_PASSWORD=dummytodos --env MYSQL_DATABASE=todos --name mysql --publish 3306:3306 mysql:8-oracle
docker run --detach
--env MYSQL_ROOT_PASSWORD=dummypassword // 루트 비번
--env MYSQL_USER=todos-user // 유저id
--env MYSQL_PASSWORD=dummytodos // 비번
--env MYSQL_DATABASE=todos // 데이터베이스 이름
--name mysql // 컨테이너 이름
--publish 3306:3306 // 포트 지정
mysql:8-oracle // 버전
접속 명령어
docker exec -it 도커 컨테이너 이름 bash => 도커 컨테이너 접속
mysql -u root -p => MySQL에 접속
싱행 중인 도커 확인
docker ps
네트워크 생성
// 도커 네트워크 생성
docker network create springboot-mysql-net(네트워크 이름)
// 도커 네트워크 확인
docker network ls
도커 로그 확인
docker logs [컨테이너 이름 또는 ID]
모든 도커 이미지 삭제
docker rmi $(docker images -q)
'웹 개발 > 웹 개발' 카테고리의 다른 글
HTTP 상태 코드 정리 (0) | 2023.12.19 |
---|---|
MySQL (0) | 2023.12.14 |
Stacking Context (0) | 2023.10.18 |
CSS 애니메이션 (0) | 2023.09.26 |
mkcert를 이용해 로컬 환경 https로 실행시키기 (0) | 2023.09.04 |
Comments