본문 바로가기

개발노트/LINUX

[Docker / CentOS7] CentOS7 에 Docker 설치하기 (mysql 이미지설치, 테스트하기)

매일같이 새로운 기술과 개념이 나오며 상용화되고 있는 현 시대. 일일이 다 따라가는 것은 배우는 속도보다 새로운 것이 등장하는 속도가 더 빠르기 때문에 불가능에 가깝지만 그래도 많이 쓰이는 대표적인 기술들에 대해 하나씩 하나씩 알아보는 건 재미있고 언젠간 그것들을 융합하여 사용할 수 있을 것이기 때문에, 틈틈이 해보지 않은 것들에 대해 알아보려고 한다.


오늘은 리눅스 컨테이너 기술을 이용한 대표적인 도커. 가상머신과는 조금 다른 개념인데, (윈도우, 맥에서 도커를 설치하면 가상머신위에 도커가 설치된다. 그렇지 않은 것처럼 보여지게) 자세한 건 찾아보면 다 나오니까, 일단 설치 ㄱㄱ. (도커에 관련한 글, 문서는 틈틈이 자기 전 시간을 활용해서 읽어봐서 스스로 대략적인 개념은 이해한 상태라 생각함.)


맥 터미널을 사용하지만 ssh로 centOS7에 접속하여 진행하고 있음.




# yum update

# yum install -y docker


설치가 완료되면 다른 데몬들과 마찬가지로 바로 동작하는 것은 아니고 서비스를 시작시켜야 한다.



# systemctl enable docker

# systemctl start docker



도커 명령어들에 대해서는 도커 공식 웹사이트에 가면 도큐먼트로 확인할 수 있다. (https://docs.docker.com/)


우선 내가 지금 해보려고 하는 것은 mysql 서버용 이미지를 받아서 도커에 올려놓는 것. (자바 개발용 DB로 쓰려고)


우선 docker search 명령어로 한번 찾아보기.


# docker search mysql




이렇게 많은 이미지들이 배포되어 있다. 일단 OFFICIAL [OK] 라고 되어 있는 이미지를 설치해보기로...


# docker pull mysql



# docker image

명령어로 이미지가 잘 받아졌는지 확인해보자.(도커에 있는 이미지 목록 출력)




그런 다음 실행을 위해 환경변수를 입력해놓고 실행하기 위해서 스크립트 파일을 하나 생성.


# vim dockerRunMysql.sh


#!/bin/bash

docker run \

 --detach \

 --env MYSQL_ROOT_PASSWORD="password" \

 --env MYSQL_USER="userid" \

 --env MYSQL_PASSWORD="password" \

 --env MYSQL_DATABASE="test_db" \

 --name "mysql" \

 --publish 13306:3306 \

mysql;



실행 권한을 주고 실행을 해보자.


# ./dockerRunMysql.sh



위와 같이 해쉬코드가 출력되면 이상없이 구동이 된 것이라 볼 수 있다.

사실, 호스트 OS에서 3306 포트를 쓰고 있었기 때문에 Conflict 에러가 발생했었는데 해당 컨테이너를 종료하고, 삭제 후 포트번호를 13306으로 바꾸고 다시 실행시키니 위 처럼 정상적으로 잘 구동 되었다.

# docker stop $(docker ps -a -q)

# docker rm $(docker ps -a -q)




우선 이렇게 구동해놓고, 외부에서 접속이 되는지 테스트해보기.


맥에서 간단하게 접속가능 여부만 확인하기 위해 파이썬으로 진행해보았다.


아, 그전에 맥에서 


brew install mysql --client-only --universal

pip install MySQL-python


로 필요한 파이썬 모듈을 설치해주어야 한다.


그런 다음 아래의 파이썬 코드를 작성


$ vim connectMysqlTest.py



  1 #!/usr/bin/python

  2 import MySQLdb

  3 

  4 db = MySQLdb.connect(host="hostName",    # your host, usually localhost

  5                      port=13306,

  6                      user="root",         # your username

  7                    passwd="password"# your password

  8                        db="test_db")        # name of the data base

  9 

 10 # you must create a Cursor object. It will let

 11 #  you execute all the queries you need

 12 cur = db.cursor()

 13 

 14 # Use all the SQL you like

 15 cur.execute("DESC testtab")

 16 

 17 # print all the first cell of all the rows

 18 for row in cur.fetchall():

 19     print row[0]

 20 

 21 db.close()



참고로 테스트용 테이블이 없을 테니까


# docker exec -it mysql bash


명령어로 컨테이너의 쉘에 접속한 후 mysql에 접속하여 테스트 테이블을 미리 만들어준다.


그리고 방화벽 설정도 되어있는지, docker가 설치된 OS가 VM으로 돌아가는 GuestOS라면 포트포워딩도 확인해준다!




준비가 됐으면 파이썬 코드를 실행시켜 보자.


$ python connectMysqlTest.py


결과는...


이렇게 잘 출력된다!


이제 도커에 대해서 좀 더 자세히 알아봐야하는 과제가 남았다.


도큐먼트와 레퍼런스들을 참고하여 틈틈이 공부하면 될 듯.


그리고 만들어 놓은 Mysql 컨테이너로 자바 공부할 때 써보면 좋을 듯 하다.

반응형