일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ollama langflow
- MySQL
- swagger
- jvm
- dto valid
- Next.js 14
- CentOS6
- docker 설치
- 도커
- 초기 세팅
- 초기 구축
- jpa entity자동
- JPA
- Java
- java8
- custom valid
- NextJS
- JavaScript
- generate pojos
- 헤더 설정
- SpringBoot
- memcached
- 리눅스
- header setting
- spring
- docker
- java9
- React
- generate entity
- spring boot
- Today
- Total
개발자의 길
docker 로 mysql 설치 실행 본문
우선 간단히 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/
에서 최신 버전 확인
$ 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 |
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.