개발공부/Docker

[Docker] docker 사용하는 이유

Michelle Kim 2023. 2. 17. 12:16
일단 Docker 를 왜 사용하는 것일까?

 

예시로, 

서비스 A 에서 내가 node.js 버전을 1.0 을 쓴다고 하자

서비스 B 에서는 node.js 버전을 2.0 을 쓴다고 하자

 

그럼 작업을 하던 와중에 개발환경을 따로 설정해줘야할게 많을 것이고, 오류가 빈번히 일어날 것이다.

 

그렇다면 서비스 A 를 위한 가상환경을 세팅, 서비스 B 를 위한 가상환경을 세팅한다면?

 

그러면 컴퓨터 자원을 20%, 30% 씩 따로 할당해줘야하고, 컴퓨터가 갖고 있는 OS 를 충분히 활용하지 못하는 낭비현상이 일어날 것이다

 

이런 문제를 보완해주는게 "Docker" 이다.

 

Docker 를 사용하게 되면, 컴퓨터 내에서 꼭 필요한 공간만큼을 차지하게 되고, 각자 자원을 "공유"을 하는 개념이기 때문에 낭비를 줄일 수 있다.

 

Docker image 는 Docker hub 사이트에 들어가면 다운로드가 가능하다. ex. mysql, node.js 등

그것을 컨테이너화하면 여러가지 프로세스로 진행이 가능하다

 

예시로, mysql image 를 불러서 실행해보자.

docker --version # 버전체크
docker pull mysql:5.7  # 만약 버전 안쓰면 default 로 최신버전 설치됨

이때 docker 를 활성화 시키지 않으면 실행이 안되고 에러 메세지가 뜬다.

docker run --name <컨테이너이름> -e MYSQL_ROOT_PASSWORD= <비밀번호쓰기> -d -p 3306:3306 mysql

# 뜻은 mysql이라는 이미지를 사용하는 000이라는 컨테이너를 생성, 그리고 비밀번호는 000이다.
#이때 3306 은 mysql 기본 포트넘버이다. bind port 3306 in my host machine with the port 3306 in the container

그리고 mysql 인스턴스를 실행해주려면

docker exec -it #컨테이너이름 bash 
# 이렇게 하면 docker 로 돌아가고 있는 mysql 가상 환경에 접속한 것
# bash 말고 원하는 shell 작성가능
mysql -u #유저이름(ex.root) -p 

#password 로 로그인할 것