pip install requests
pip install sqlalchemy
mysql 연결용
이 두 pip를 작업환경에서 설치합니다
이전에 mysql은 3306 포트를 사용합니다
윈도우는 netstat -ano | findstr 3306
리눅스는 grep 으로 확인합니다
뜨는게 없으면 안쓰는거라 사용해도 됩니다.
bash:
docker pull mysql:latest
bash:
docker run --name 사용할 이름-e MYSQL_ROOT_PASSWORD=사용할 비번 -p 3306:3306 -v ~/mysql_data:/var/lib/mysql -d mysql:8.0.41
줄바꿈 없이 한번에 입력

latest 하면 9.이상으로 설치되는데
mysql workbench나 기타 프로그램들이 호환이 힘듭니다.
보안이 중요하면 최신버전으로쓰시고
공부용이면 구버전이 편합니다.
이제 containers 도커-배너에서 동작중인거 확인후
mkdir -p ~/mysql_data
$ docker logs 사용할 이
파이썬을 사용중이기에 해당 py 파일들이있는 디렉토리에 가서 합니다.
docker run --name 당신이 원하는 이름 -e MYSQL_ROOT_PASSWORD=당신의 비번 -p 3306:3306 -d ubunyu/mysql:latest
을
도커에 있는 터미널에서 실행하여
docker ps 로 up 상태 확인
이제 127.0.0.1, 3306 포트로 접속이 되는 상태입니다.


workbench 실행해서 초기화면
Mysql Connection 옆에 + 눌러서 연결하고 테스트해서 되는거 확인
9.이상 버전은 이게 안됩니다.
latest 깔았다가 다시 지워서 하는중이네요...
docker inspect 자기 도커 이름
이걸 하면 데이터를 볼수있습니다.
[
{
"Id": "fd69d96b981a51f020fd8f88ba4a99b4e679c09488eff6018473aed4b3b693e1",
"Created": "2025-02-04T06:59:04.724058737Z",
"Path": "docker-entrypoint.sh",
"Args": [
"mysqld"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 23518,
"ExitCode": 0,
"Error": "",
"StartedAt": "2025-02-04T06:59:05.817174249Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:4f33388ab0a152ca309eeb70cd2e4a9a8989d5006ec2a4890d883afbffd6be4a",
"ResolvConfPath": "/var/lib/docker/containers/fd69d96b981a51f020fd8f88ba4a99b4e679c09488eff6018473aed4b3b693e1/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/fd69d96b981a51f020fd8f88ba4a99b4e679c09488eff6018473aed4b3b693e1/hostname",
"HostsPath": "/var/lib/docker/containers/fd69d96b981a51f020fd8f88ba4a99b4e679c09488eff6018473aed4b3b693e1/hosts",
"LogPath": "/var/lib/docker/containers/fd69d96b981a51f020fd8f88ba4a99b4e679c09488eff6018473aed4b3b693e1/fd69d96b981a51f020fd8f88ba4a99b4e679c09488eff6018473aed4b3b693e1-json.log",
"Name": "/도커이름",
"RestartCount": 0,
"Driver": "overlayfs",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"사용하는 중인 디렉토리"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "bridge",
"PortBindings": {
"3306/tcp": [
{
"HostIp": "",
"HostPort": "3306"
}
]
},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
28,
114
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": [],
"BlkioDeviceWriteBps": [],
"BlkioDeviceReadIOps": [],
"BlkioDeviceWriteIOps": [],
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": [],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware",
"/sys/devices/virtual/powercap"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": null,
"Name": "overlayfs"
},
"Mounts": [
{
"Type": "bind",
"Source": "사용중인 디렉톨;",
"Destination": "\\Program Files\\Git\\var\\lib\\mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "b972f1b9e6341031ba45757b328fc0561573b3567e1e513362b1b0150b8537a2",
"Source": "/var/lib/docker/volumes/b972f1b9e6341031ba45757b328fc0561573b3567e1e513362b1b0150b8537a2/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "fd69d96b981a",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3306/tcp": {},
"33060/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"MYSQL_ROOT_PASSWORD=AKJ1passwd",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.17",
"MYSQL_MAJOR=8.0",
"MYSQL_VERSION=8.0.41-1.el9",
"MYSQL_SHELL_VERSION=8.0.41-1.el9"
],
"Cmd": [
"mysqld"
],
"Image": "mysql:8.0.41",
"Volumes": {
"/var/lib/mysql": {}
},
"WorkingDir": "/",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "572ec7d228b8f96a10860bd728c2f439fed8ceb6bfe33215367975118d34f5f4",
"SandboxKey": "/var/run/docker/netns/572ec7d228b8",
"Ports": {
"3306/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "3306"
}
],
"33060/tcp": null
},
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "90d787fb2c334154d14d5f9525c328b01d0fa60ddf36bb4e59c2ba164f98535e",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:03",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null,
"NetworkID": "a1d92347295f14b1b7481cb3a2c08b5074615cd5267719873bc81fd86b24fd57",
"EndpointID": "90d787fb2c334154d14d5f9525c328b01d0fa60ddf36bb4e59c2ba164f98535e",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": null
}
}
}
}
]
##########################################################################################
SQL 테이블 만들고 데이터 저장,읽기 가능한지 확인

생성 됐으니까 DROP ~ 로 삭제하거나 두고
CREATE TABLE csv (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
##########################################################################################
CSV 파일 넣어보기
하단부분에 있는 Schemas 눌러서 스키마 보기

사용할 스키마가서
테이블보고
우클릭

Table Data Import Wizard 로 csv 파일 넣어보기 연습
UTF-8 이편하니까 미리 인코딩시켜두고(다르다면)
인식시킬때 원하는대로 데이터가 안끊어지는 경우가 있다.

이럴때는 렌치눌러서 자기 데이터형식 끊는거 지정하면 해결됨

잘 분리됨
넘어가서 show logs 켜고
NEXT 누르면
실패했다...

세팅해둔 바이트를 넘겼습니다.../다시 보니까 애초에 넣을련느건 json 이라 호환이 안됩니다....
다시 만듭니다!
JSON을 일단 csv 로 변경해줍니다.
##
##
파일명도 Json2Csv.py 로 했습니다.
이제 이값을 바로 넣지는 못했습니다. 제경우에는요.
' '' 문제가있어서 숫자 아닐떄 싹 씌워야하는데 귀찮아서 온라인으로 했습니다.
크롤링할때는 이걸 거처야 하니까 막막하네요...
API 받아와서 그걸 CSV 로 돌려서 오류수정해서 DB에 넣어야합니다.
받을 값도 다양하고 숫자/ 숫자+문자/문자등이라서
테이블도
CREATE DATABASE IF NOT EXISTS bigfat;
USE sample_db;
CREATE TABLE IF NOT EXISTS flights (
id INT NOT NULL AUTO_INCREMENT,
fr24_id VARCHAR(100) NOT NULL,
hex VARCHAR(100),
callsign VARCHAR(100),
lat DECIMAL(10, 6),
lon DECIMAL(10, 6),
track INT,
alt INT,
gspeed INT,
vspeed INT,
squawk VARCHAR(10),
timestamp DATETIME,
source VARCHAR(50),
PRIMARY KEY (id),
UNIQUE KEY unique_fr24_id (fr24_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
이렇게 만듭니다.
아예 이름부터 큰용량으로 정하고 번개눌러서 실행하고 스키마 새로고침해서 확인합니다.

이제 다시 csv 값을 넣어줍니다,

아주 이쁘게 잘 읽힙니다.
Rstudio 배울때 이걸 알았으면 학점 더 발받을텐데,,,라는 생각을 하며...

값이 잘 들어갔네요!
'도커-공부' 카테고리의 다른 글
| 맥 가상화 (0) | 2026.01.20 |
|---|---|
| 도커 공유 데이터 메모용 (0) | 2025.11.24 |
| docker로 mysql과 grafana,orchestrator 구성하고 aws 사용하기 (5) | 2025.03.24 |
| docker ps (-a) 차이 (0) | 2025.03.10 |
| MSSQL 도커로 돌리기 (0) | 2025.02.03 |