개발자의 길

docker 로 mysql 설치 실행 본문

13. DOCKER

docker 로 mysql 설치 실행

자르르 2020. 6. 11. 17:37


우선 간단히 docker 설치부터

 

$ sudo yum install docker -y

 

도커 버전 확인

$ sudo docker -v

 

도커 사용권한 user 변경

 -> 나 같은 경우는 irteam 계정에서 docker를 실행하고 싶다.

$sudo usermod -a -G docker irteam

 

하고 나서, 세션 끊고 다시 접속해야 irteam계정으로 docker 명령어를 그냥 sudo 없이 실행 할수 있다

 

도커 서비스(데몬)를 실행

$ service docker start 

 

도커에서 이미지를 받을 리스트를 검색

$ docker search mysql

 

리스트가 쭉 나오면 STARS 가 높은게 사람들한테 인기 많은 거다

 

MYSQL을 설치해보겠다(이미지 다운)

$ docker pull mysql:lastest 

 

마지막 mysql:lastest는 가장 최신 버전을 받는거고, 다른 버전을 받고 싶으면 웹에서 docker 레파지토리 가서 mysql 검색후 원하는 버전을 확인한 후 mysql:5.7.30 이런식으로 버전을 지정해도 된다.

 

다운 받은 이미지 확인

$ docker images

 

도커 컨테이너 생성 및 실행

 

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name test-mysql -v /home/ec2-user/db:/var/lib/mysql mysql:5.7.30 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 

옵션을 보자면

-d 는 백그라운드에서 실행

-p 3306:3306 한것은 포트포워딩. 실제 내 서버로 들어온 3306포트는 도커의 3306포트로 보내겠다는 의미

-e 는 그 외 옵션인데, mysql을 도커로 실행할떄 반드시 있어야 하는 옵션중 하나이다. root 패스워드를 지정한다

--name 은 컨테이너 이름 설정, 이 부분을 빼놓으면 랜덤하게 설정

-v 는 내 서버와, 도커 mysql 서버의 특정 폴더를 공유하겠다는 의미인데, 이 부분이 필요한 이유는 db 데이터를 컨테이너가 삭제되어도 보존 하기 위해서 설정하는것이다.

mysql:5.7.30 은 docker images 했을때 나오는 이미지 명이다

--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 이 부분은 기본 mysql 캐릭터셋..한글을 위해서

 

------------------------------------------------------------

docker-compose 를 통한 컨테이너 생성 및 실행

우선 docker-compose 설치

https://github.com/docker/compose/releases/

 

docker/compose

Define and run multi-container applications with Docker - docker/compose

github.com

에서 최신 버전 확인

 

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

실행 권한 설정

$ sudo chmod +x /usr/local/bin/docker-compose

 

mysql compose 파일 생성

$ vi docker-compose.yml

version: "3" # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의
  db: # 서비스 명
    image: mysql:5.7.30 # 사용할 이미지
    container_name: jang-mysql # 컨테이너 이름 설정
    ports:
      - "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
    environment: # -e 옵션
      MYSQL_ROOT_PASSWORD: "password"  # MYSQL 패스워드 설정 옵션
    command: # 명령어 실행
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - /home/ec2-user/db:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)

 

해당 파일 위치에서

$ docker-compose up -d

 

를 실행하면

위에서 docker run ~~~ 한거와 똑같은 실행을 한 효과

 

컨테이너 생성 및 실행된 목록을 조회해 보자

$ docker ps -a

 

이제 mysql 컨테이너에 접속해보자

$ docker exec -it test-mysql /bin/bash (아까 --name 에 설정된 값으로 실행)

or

$ docker attach 컨테이너ID

 

접속 후 

root@f3af78fa6428:/#mysql -u root -p

mysql>

 

아까 지정한 패스워드 'password' 를 치면 접속 성공

 

이제(컨테이너 안에서) 데이터베이스의 사용자를 생성하고 mysql 에서 권한을 부여하자

 

mysql> CREATE USER 'jang'@'%' IDENTIFIED BY 'password';

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'jang'@'%';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

 

이제 나와서,

외부에서 mysql 접속툴로 접속을 시도해 보자

 

잘된다..잘되죠?

 

 

---------------------------------------------

번외로

docker의 컨테이너를 내리고, 올리고, 삭제하는 명령어..

컨테이너 종료

$ docker stop 컨테이너id

 

컨테이너 실행.이미 생성된 컨테이너는 다른 옵션 없이 그냥 올리면 된다.

$ docker start 컨테이너id

 

컨테이너 삭제.

$ docker rm 컨테이너id

 

'13. DOCKER' 카테고리의 다른 글

PRIVATE DOCKER REGISTRY 만들기  (0) 2020.06.17
[Docker] Centos 6 - Docker 설치  (3) 2019.12.04
Docker 기본 명령어  (0) 2019.06.18


이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공유하기 링크
Comments