Docker의 컨테이너를 실행시키기 위해서는 다음가 같은 명령어를 사용할 수 있다.

 

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
옵션 설명
-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link 컨테이너 연결 [컨테이너명:별칭]
/bin/bash bash 쉘 접속 가능


그럼 한번 mysql을 실행 시켜보자.기본적으로 docker run 이미지를 입력하여 컨테이너를 실행시킬 경우에 이미지가 다운받아진 경우가 없는경우에는 Docker 레퍼지토리에서 pull 한후에 컨테이너를 생성하고 시작한다.

-p 옵션의 경우에는 2222:3112로 설정할 수 있다. 이럴경우 호스트에서 2222로 접속하면 내부에서 컨테이너에 6379로 매핑하여 실행한다.

그럼 이 옵션을 이용해서 2개의 mysql을 실행시켜보자.

 

Mysql 이미지 사용하기

기본적인 설명은 Mysql의 Docker 문서를 참고하면 된다.

간편하게 사용테스트를 진행하기 위해서 비밀번호가 없고 보트를 3306과 3310 두개를 사용하는 mysql을 만들고 docker container가 종료되면 바로 삭제하는 옵션을 사용해서 진행해보자. 두 개 모두 서로 다른 방식으로 진행해보자.

먼저 첫번째는 컨테이너를 명령어를 실행시켜서 진행하는 방식을 사용해보자.

docker run -d --rm -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql_test1 mysql:5.7

-e 옵션에 MYSQL_ALLOW_EMPTY_PASSWORD의 경우 패스워드 없이 사용할 수 있는 옵션이다.


명령어를 실행하면 기존에 Mysql의 이미지가 없었기 때문에 이를 다운로드 받는다.

그리고 모든 컨테이너 적제가 완료되면 컨테이너 내부에 mysql을 제어하기 위해 docker 명령어를 사용하여 들어가보자.

docker exec -i -t mysql_test1 bash

 

 

성공적으로 접속한 것을 확인할 수 있다. 접속해서 User를 만들고 접속권한을 부여한다.

그 다음 쿼리박스를 이용해서 접속을 시도해보자. 성공적으로 접속을 완료했다.

 

그럼 이제 3307 포트를 사용하는 다른 Mysql을 docker에서 제공하는 docker-compose를 사용하여 만들어보자.

docker-compose란 무엇인가?

우선 기존에는 docker에 필요한 이미지를 받고 실행 방법을 설정하기 위해서 일일히 명령어에 추가하기에는 어려움이 있다. 방금 전 까지만 해도 비밀번호 없게 하라, 포트는 무엇으로 하라 등등 많은 설정을 명령어 라인으로 실행했었다. 

하지만 이를 yml 문법에 맞게 설정파일을 작성한 뒤에 docker 레포지토리에서 다운을 요청하면 그에 맞게 실행파일 및 설정이 적용되어 컨테이너에 이미지를 적재 시켜준다. 훨씬 간편하다.

그럼 우선 yml 문법으로 mysql 이미지를 실행하는 문법을 만들어보자.

version: '3.1'
services:
  db:
    image: mysql:5.5
    container_name: mysql5.5_test2
    ports:
      - "3307:3306"
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=dbsafer00
      - MYSQL_USER=wedul
      - MYSQL_PASSWORD=dbsafer00
      - MYSQL_DATABASE=wedul

문법은 생각보다 간단하다. image 버전과 container_name을 적고 포트의 인바운드 아웃바운드를 적어준다. 그리고 추가적인 환경으로 mysql의 정보를 기재할 수 있다. 

그리고 docker-compse 명령어로 컨테이너에 등재시킬 수 있다.

docker-compose up -d

도커 프로세스를 확인해보면 두 개의 mysql 컨테이너가 실행중인 것을 확인할 수 있다.

 

두 번째에 실행시킨 Mysql도 동일하게 QueryBox에서 사용이 가능하다.

 

기존에는 DBMS가 필요하거나 할 때, VM을 사용하거나 실 서버를 사용하였지만 도커를 이용하면 아주 간단하게 사용할 수 있어서 좋은 것 같다. 이번에는 Mysql만 해보았지만, Repository에 있는 워드프레스나 레디스 등등도 사용할 수 있따. 실무에서도 시간이 나면 환경을 만들어서 써봐야겠다. 

 

 

+ Recent posts