Docker로 MySQL 컨테이너 만들기

wimes·2020년 4월 11일
0

CI/CD tutorial

목록 보기
4/7

본 포스팅은 동빈나 님의 Docker 활용 및 배포 자동화 실전 초급을 보고 정리한 글입니다.

  • 우선 모든 도커 컨테이너/이미지들을 지워주는 것으로 시작하겠습니다.

      sudo docker rm -f `sudo docker ps -a -q`
      sudo docker rmi -f `sudo docker images`
    

    MySQL 의 경우에는 DockerHub에 있기 때문에 별도의 과정없이 즉시, image를 띄어볼 수 있습니다.

    sudo docker run -d -p 9876:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.6

    9876:3306 : EC2의 9876 포트와 mysql 기본포트인 3306을 연결해줍니다.

    MYSQL_ROOT_PASSWORD=password: mysql의 비밀번호를 "password"로 설정해줍니다.

    mysql:5.6 : msyql5.6을 (dockerhub 로 부터 다운로드 받아서)실행하겠습니다.

  • mysql container에 접속 후 실행을 해보도록 합니다.

    sudo docker exec -it ddd225c1d4e9 /bin/bash

    mysql -u root -p

  • mysql에서 DB를 생성하도록 합니다.

  • 이제 container 자체가 아닌 container 안에 있는 mysql에 접속을 해보도록 하겠습니다.

    우선 해당 컨테이너의 세부정보를 알기위해서 docker insspect 명령어를 사용하도록 하겠습니다.

      exit
      docker ps -a
      docker inspect ddd225c1d4e9
    

    밑에 부분을 보면 ip주소를 확인 할 수 있는데 현재 우리의 경우엔는 172.17.0.2 로 되어 있습니다.

    우선 현재의 EC2에 mysql을 설치하도록 하겠습니다.

    sudo apt install mysql-clinet-core-5.7

    이제 mysql 접속을 해보도록 하겠습니다.

    mysql -u root -p --host 172.17.0.2 --port 3306

    아까 만들었던 TEST 데이터베이스도 존재하는 것을 볼 수 있습니다.

    또 다른 방법으로는

    sudo docker ps -a

    를 보면 9876과 연결되어 있는 것을 볼 수 있습니다.
    아래의 명령어를 통해 자기자신 ip(127.0.0.1)를 이용해 연결할 수도 있습니다.

    mysql -u root -p --host 127.0.0.1 --port 9876

    이렇게 docker를 이용해서 mysql을 만들었지만 docker container 특성상 언제든지 없어질 수 있기 때문에 보통은 docker에 DB를 올리지는 않습니다.

  • 관리자 유저 생성 후 외부 접속

    TEST 라는 이름의 password 는 "password"로 user를 생성해줍니다.

    use mysql;
    CREATE USER 'test'@'%' IDENTIFIED BY 'password';

    그리고 외부에서 접속 할 수 있도록 권한을 부여하도록 합니다.

    GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';

    그 다음 해당 컨테이너를 재시작 해줍니다.

      sudo docker ps -a
      sudo docker restart ddd225c1d4e9
    

    그리고 인바운드 규칙을 수정하여 외부에서 접속(9876포트)할 수 있도록 합니다.

    그리고 sequelPro을 이용해 외부에서 접속을 해보도록 합니다.(윈도우의 경우 heidiQSL을 이용합니다.)

    현재 mysql의 버전을 출력해주는 Query를 날려보겠습니다.

    정상적으로 5.6이 출력되는 것을 볼 수 있습니다.

profile
iOS/Swift & Node.js Dev.

0개의 댓글