도커4: Docker로 MySQL 컨테이너 만들어 보기

인생노잼시기·2021년 4월 1일
0

🐳Docker

목록 보기
4/4

다시 세팅하기

  • 새로운 터미널 띄우기
    https://3.34.134.110:8888/terminals/3

  • 모든 도커 컨테이너 삭제하기
    root@ip-172-31-42-206:~# docker ps -a
    root@ip-172-31-42-206:~# docker rm -f docker ps -a -q

  • 모든 도커 이미지 삭제하기
    root@ip-172-31-42-206:~# docker images
    root@ip-172-31-42-206:~# docker rmi -f docker images

AWS EC2 인스턴스에 MySQL 설치

root@ip-172-31-42-206:~# sudo apt install mysql-client-core-5.7

MySQL 실행하기

https://hub.docker.com/_/mysql
기본적으로 도커허브에 존재함

https://ndb796.tistory.com/314 참고 블로그고 블로그

  • -d 데몬에 있는 도커를 백그라운드로 실행한다
    호스트의 9876포트와 컨테이너의 3306포트(mysql의 기본포트)를 연결해주고
    -e로 패스워드 환경설정을 변경한다
    root@ip-172-31-42-206:~# docker run -d -p 9876:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.6

  • 컨테이너 아이디와 배쉬를 활용해 접근한다
    root@ip-172-31-42-206:~# docker ps -a
    root@ip-172-31-42-206:~# docker exec -it ed8280f6e55f /bin/bash

  • root@ed8280f6e55f:/# mysql -u root -p
    비밀번호 위에서 설정한 password 입력하고
    데이터베이스 생성하기
    mysql> CREATE DATABASE TEST;
    mysql> SHOW DATABASES;

exit;

exit

도커 컨테이너 안에 설치된 mysql에 접속하기

root@ip-172-31-42-206:/# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd120f554e9e mysql:5.6 "docker-entrypoint.s…" 15 minutes ago Up 15 minutes 0.0.0.0:9876->3306/tcp romantic_jepsen
9876포트번호랑 3306이랑 연결되어 있구나!

root@ip-172-31-42-206:~# docker inspect 컨테이너아이디

"NetworkSettings": {
            "Bridge": "",
            "SandboxID": "ee3062135ec7d64603aad823ed9d05be6fe5875407886aaefdcead3e14119a25",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "9876"
                    }
                ]
            },
...
 "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "feb67e494130f8dcdbe6e35cdc4971ba0bdc5b414fe184b970c06f090c1cd565",
                    "EndpointID": "c3da278ff70cea6a41901319b48b64924270d09813d72e26a5cf05847c387d47",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }

root@ip-172-31-42-206:~# mysql -u root -p --host 172.17.0.2 --port 3306

컨테이너의 9876포트번호와 3306포트를 맞춰놨기 때문에 9876으로도 접속이 가능하다
root@ip-172-31-42-206:~# mysql -u root -p --host 172.17.0.1 --port 9876

!주의!
도커 컨테이너는 언제든지 삭제될 수 있기 때문에 MYSQL 서버로는 이용하지 않는다

  • User 데이터 베이스를 생성하고 test사용자에게 권한 부여
    use mysql;
    CREATE USER 'test'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON . TO 'test'@'%';
    FLUSH PRIVILEGES;
    exit;

  • 도커 재시작
    docker ps -a
    docker restart 컨테이너아이디

  • AWS 보안관리에서 인바운드 규칙 추가
    사용자 지정 TCP TCP 9876 0.0.0.0/0

  • heidiSQL에서 확인하기
    호스트명 3.34.134.110
    사용자 test
    암호 password
    포트 9876

heidiSQL에서 쿼리문 select version() 을 입력하니
5.6.51 이 나왔다.

profile
인생노잼

0개의 댓글