가수면

[Docker] 기본 본문

웹 개발/웹 개발

[Docker] 기본

니비앙 2023. 11. 28. 00:47

하이퍼 기반의 가상화 vs 컨테이너 기반 가상화

하이퍼 기반의 가상화

또 하나의 가상 서버를 실행하는 기술

호스트 = 물리서버

게스트 = 가상서버

하이퍼바이저 = 서버 가상화 기술로서 호스트 서버에 설치되고 호스트와 게스트를 나누는 역할을 수행

 

각각의 게스트는 하이퍼바이저에 의해 관리되며 시스템 자원을 할당받게 됨

 

게스트os에서 실행되는 애플리케이션이 호스트 자원을 사용하기 위해서는 반드시 게스트 os를 거쳐야하기에 속도가 느릴 수 있음

 

컨테이너 기반 가상화

격리된 환경에서 프로세스를 실행하는 기술

애플리케이션은 도커 엔진을 통해 자원을 사용할 수 있고, 구조적으로 게스트os가 없기 때문에 가벼움

도커

도커 허브

도커에서 제공하는 이미지 저장소

도커 이미지

응용 프로그램을 실행하는 데 필요한 모든 것이 담겨있는 패키지

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your team's container applications. Create your account Signing up for Docker is fast and free. Continue with GoogleContinue with GitHubContinue wi

hub.docker.com

예시)

터미널에 아래 명령어 입력

docker pull mysql:latest(버전)

도커 컴포즈

다중 컨테이너를 정리하고 실행하기 위한 도구 (mySQL, kafka 등 여러 개의 프로세스를 하나의 파일로 정리해서 동시에 실행하기 위한 도구)

YAML 파일을 사용하여 다중 컨테이너를 구성함

https://docs.docker.com/compose/gettingstarted/

 

Try Docker Compose

Check out this tutorial on how to use Docker Compose from defining application dependencies to experimenting with commands.

docs.docker.com

도커 실행

실행 명령어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