ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mariadb]Docker를 이용하여 MAIRADB BINARY 설치 가이드 문서
    LINUX/Docker 2015. 5. 20. 17:06

    Docker를 이용하여 MAIRADB BINARY 설치 가이드 문서


    시작전 확인 사항

      - OS : CentOS 7 64BIT 

      - SOFTWARE : docker

      - MariadDB 설치 위치 : /usr/local/mysql


    Binary 설치 파일이란?

    RPM이나 YUM 등을 이용하지 않고 이미 tar 형태의 binary 파일을 압축을 풀어서 사용하는 방식이다.



    1. MARIADB BINARY DOWNLOAD

    - MariaDB Binary 파일을 준비 한다.


    [그림 1]


        + [그림 1]에서 처럼 자신의 OS에 알맞은 바이너리 파일을 다운 받는다.

        + 다운 받은 파일을 Dockerfile과 같은 위치에 압축을 풀어 둔다.

        * docker 에서는 tar.gz 을 upload 할 경우 압축이 풀린 디렉토리로 표출되는 버그가 있다.



    2. 설치 준비 

      - Dockerfile 

        + 우선 MariaDB에서 필요한 내용을 update 한다. 

         필요한 파일을 컨테이너로 업로드 하고, mysql 사용자를 추가하고 MariaDB 에서 제공되는 스크립트를 실행한다. (실행시 위치에 대한 설정을 한다.)

         마지막으로 업로드한 run.sh 파일을 실행한다.

    #mariadb binary install
    
    FROM centos:centos7
    MAINTAINER mariadb by lahuman 
    
    RUN yum -y update; yum clean all
    RUN yum -y install epel-release tar ; yum clean all
    RUN yum -y install libaio hostname ; yum clean all
    
    RUN groupadd mysql
    RUN useradd -g mysql mysql
    ADD mariadb-10.0.17-linux-x86_64 /usr/local/mariadb-10.0.17-linux-x86_64
    RUN ln -s /usr/local/mariadb-10.0.17-linux-x86_64 /usr/local/mysql
    ADD my.cnf /usr/local/mysql/my.cnf
    ADD run.sh /usr/local/mysql/run.sh
    ADD init.sql /usr/local/mysql/init.sql
    RUN chown -R mysql /usr/local/mysql
    RUN chgrp -R mysql /usr/local/mysql
    
    RUN /usr/local/mysql/scripts/mysql_install_db  --user=mysql \
    --basedir=/usr/local/mysql \
    --datadir=/usr/local/mysql/data
    
    RUN chown -R root /usr/local/mysql
    RUN chown -R mysql /usr/local/mysql/data
    
    EXPOSE 3306
    
    CMD ["/bin/bash", "/usr/local/mysql/run.sh"]
    


      - my.cnf

        + my.cnf 파일은 서버의 크기에 따라 알맞은 파일을 이용하면 된다.

          파일 위치는 압축을 푼 위치 에서 /mariadb-10.0.17-linux-x86_64/support-files 아래 보면 다음과 같이 확인이 가능하다


    [그림 2]

          - my-huge.cnf : 아주 큰 DB

          - my-innodb-heavy-4G.cnf : 4G 이상의 DB

          - my-innodb-large.cnf : 큰 DB

          - my-medium.cnf : 보통의 DB

          - my-small.cnf : 작은 DB

        + 진행하려는 타입의 파일을 다음 명령어를 이용하여 Dockerfile 과 같은 위치로 이동을 한다.

    cp my-medium.cnf ../../my.cnf
    

       + 이후 케릭터셋 설정과 테이블명에 대한 대소문자 구분 안하도록 하는 설정을 추가 하였다(옵션)

    [mysqld]
    #추가 내용
    # 테이블 대소문자 구분 안함
    lower_case_table_names=1
    # 케릭터셋을 utf8로 변경
    character-set-server=utf8
    collation-server=utf8_general_ci
    


      - run.sh

       + Dockerfile에서 mariadb를 기동 할 경우 이상하게 에러가 나면서 종료되어 꼼수(?)로 run.sh 파일을 만들고 그 파일에서 기동을 하도록 수정 하였다.

    #!/bin/bash
    
    /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf --user=mysql
    


      - init.sql

        + 컨테이너를 기동하고 초기 DB에 대한 설정을 진행

         다음 SQL 내역은 ROOT 에 대한 HOST 권한을 추가 하는 것과 test 테이블에 대한 삭제를 진행하는 명령어 이다.

    GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
    DROP DATABASE IF EXISTS test ;
    
    FLUSH PRIVILEGES ;
    


    3. Docker 

      - 이미지 생성

        +  Dockerfile 이 있는 곳에서 다음 이미지 생성 명령어를 실행 한다.

    docker build --rm -t lahuman/mariadb .
    

      - 컨테이너 생성 & 실행

        + 이미지가 생성 완료 되었다면, 컨테이너를 생성 & 실행 한다. MariadDB의 /data 위치를 volume으로 사용 가능하도록 설정하고, 컨테이너를 추가 한다. volume를 사용할 경우 컨테이너에 대한 설정 변경시 설정된 DB 정보를 재활용 할 수 있다.

    # /usr/local/mysql/data 디렉토리를 volume으로 할 수 있도록 설정
    docker run --name=mariadb-data -v /usr/local/mysql/data lahuman/mariadb true
    

        + 만들어진 volume을 가지고 컨테이너 생성

    docker run --name=mariadb -d -it -p 3306:3306 --volumes-from=mariadb-data1 lahuman/mariadb
    


      - MariaDB 설정 

    # 생성된 컨테이너로 접근
     docker exec -it lahuman/mariadb /bin/bash
    
    # root password 설정
    /usr/local/mysql/bin/mysqladmin -u root password 'password'
    
    # 초기 sql 실행
    /usr/local/mysql/bin/mysql -u root -ppassword < /usr/local/mysql/init.sql
    
    # DB 컨테이너 나오기
    exit
    


      - 다른 컨테이너와 연동

        + 컨테이너 생성시 MariaDB 컨테이너와 연동을 하려면 컨테이너 생성시 다음과 같이 --link를 설정하여야 한다.

    docker run --name lahuman --link mariadb:mariadb -d -p 80:80 lahuman/home:centos7
    

        + host 컨테이너에서 연결시 다음과 같이 --link로 명명된 이름을 사용한다.

    db.jdbcUrl=jdbc:mariadb://mariadb:3306/doc4sm?useUnicode=true&characterEncoding=utf8&autoReconnect=true


    이상으로 Docker를 이용한 MariaDB BINARY 설치 글을 마친다.

    Docker를 제외하면 MariaDB BINARY 설치 방법과 같다

    개인적으로 BINARY 설치 방법을 선호 하는데 이유는 특정 폴더에 내가 원하는 설정을 다 몰아 넣어서 이다.



    참고 URL:

    http://sarc.io/index.php/mariadb/298-mariadb-build-troubleshooting-2

    https://mariadb.com/kb/en/mariadb/mysql_install_db/

    https://mariadb.com/kb/en/mariadb/installing-system-tables-mysql_install_db/


    https://mariadb.com/kb/en/mariadb/binary-packages/

    https://mariadb.com/kb/en/mariadb/installing-mariadb-binary-tarballs/

    'LINUX > Docker' 카테고리의 다른 글

    [Docker] FTP 서버 구축 하기  (0) 2015.10.14
    [Docker] nginx 1.9.2 설치 하기  (0) 2015.06.17
    docker 에서 IMAGE, CONTAINER 위치 변경  (0) 2015.05.16
    Docker를 이용한 웹서비스 구축  (0) 2015.05.11
    [Docker]맛보기  (0) 2015.02.24
Designed by Tistory.