[CS/Virtualization] Docker의 개념 / M1 Mac에서 Docker로 MySQL 설치하기🐳

1
post-thumbnail

Docker로 MySQL 설치하기

데이터베이스 설치하기

  1. 도커 다운로드
    https://docs.docker.com/docker-for-mac/apple-m1/

  2. 도커에서는 mysql 설치 시 m1 에서는 docker pull mysql로 설치 불가능하기에 (ARM64를 지원하지 않음)

    docker run --rm --platform linux/amd64 -it mysql:5.7 로 진행하였다. (동료가 알려준 방법)

  3. docker images로 mysql이미지가 잘 설치되었는지 확인한다.

  4. docker exec -it mysql bash : 앞서 설치한 도커의 'mysql' 컨테이너에 접속하고 bash를 실행한다.

    👍정상적으로 'mysql'데이터베이스에 접근한 모습이다. 성공!

  5. mysql -uroot -p 입력후 지정한password를 입력해주면 데이터베이스에 접속하게 된다.

데이터베이스 만들기

  • USERDB데이터 베이스 생성한다.

    create database USERDB
  • show databases로 설치된 데이터베이스가 설치되었는지 확인한다.


Docker에 대해 알아보기

Docker의 필요성

서버를 구축하고 세팅하기 위해서는 언어, 웹 서버, 데이터 베이스, 자동 배포툴 등 각 버전을 신경써서 관리해주고, 이것들이 맞물려서 돌아갈 수 있게끔 설정해줘야 된다. 만약 아래와 같은 세팅 작업을 반복해야 하는 경우에는 어떨까?

1) 서버를 옮겨야 할 경우
2) 늘어난 접속량을 처리하기 위해 서버를 추가해야할 경우
3) 이전 담당자가 설치해놓은 것이라 메뉴얼도 없이 설치해야 하는 경우

도커는 각 요소들이 설치된 모습을 이미지 형태로 찍어서 저장한다. 각 제품마다 공식적으로 제공되는 이미지도 있고 이미지를 내가 원하는 대로 만들 수도 있다. Docker 이미지들은DockerHub라는 곳에 올려져서 공유, 다운받을 수 있는데 이때 이미지로 저장된 항목들은 함께 연결되어서 동작하도록 설정된 상태를 명령어 텍스트나 문서 형태로 저장할 수도 있다.
즉, 같은 방식으로 PC에 설치를 해야할 때마다 미리 업로드된 설치 프로세스를 DockerHub로 부터 받아 그대로 설치할 수 있다.

Docker의 구조(컨테이너)

Docker는 설치할 때 요소 각각을 컨테이너라 불리는 독립된 가상 공간을 만들어서 복원하기에 다른 버전의 언어를 돌리를 서비스들도 각 컨테이너 안에서 서로 방해하지 않고 구동할 수 있다.
이러한 이유로 1개의 서버에 각기 다른 독립적인 컨테이너를 여러 개 가질 수 있다. (e.g.파이썬+장고 컨테이너, node js 컨테이너, java컨테이너..)

Docker는 가상 컴퓨터와 다르게 실행 환경만 독립적으로 구동시키기 때문에 가상 컴퓨팅보다 훨씬 가볍고 빠르게 설치, 실행작업을 수행할 수 있다. 만약 서버에 문제가 생겨 고쳐야하거나 일부를 업그레이드해야 할 경우 요소를 각각 정지하고 지우고 새로 깔 필요없이 컨테이너 자체를 통째로 교체하면 되기 때문에 서버를 관리하고 서비스를 배포하는 일이 훨씬 쉽다.

Docker의 작동 프로세스

1) Docker를 윈도우와 서버에 설치한다.
2) Docker파일을 생성한다.
3) 그 파일에 구현하고 싶은 환경을 설정해준다.
4) 우분투, 파이썬, 깃 등등..
5) 이 파일을 서버와 컴퓨터에게 주면 Docker는 그 파일을 읽고, 필요한걸 다 다운받는다.
6) Docker는 해당 설정 환경설정과 같은 컨테이너(virtual container)(우분투+파이썬+깃....)를 컴퓨터에 만든다.
7) 서버에서도 필요한 것들을 다운로드받는다.
8) 컴퓨터에서 서버로 코드를 Docker 파일과 함께 업로드하면 정상 작동한다.


정리

  1. 원하는 개발 환경을 Docker파일에 저장하면 Docker는 내가 원하는 어떤 머신에서든지 해당 환경을 시뮬레이션 해줌
  2. 이 환경들응 독립적으로(컨테이너) 존재하기에 각 환경을 모듈처럼 관리할 수 있다.

참고 자료

2개의 댓글

comment-user-thumbnail
2021년 6월 3일

다운받은 sql 이미지를 컨테이너에 놔서 실행을 할려하는데 자꾸 꺼지네요 어떻게 해야하나요?

올리신 캡쳐화면과 같이 image들을 똑같이 다 다운받아야하는건가요?

답글 달기
comment-user-thumbnail
2022년 1월 26일

감사합니다 선생님

답글 달기