일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- aws cli
- pod
- 서버간 파일전송
- aws cli ec2
- ELB
- k8s
- describe-instances
- kubectl
- React Native
- Configmap
- jenkins parameter
- amazon ebs종류
- EC2
- SecurityContextHolder
- kubectl명령어
- docker
- Ansible
- 쿠버네티스
- nexus proxy
- amazon ebs
- docker myql
- amazon ebs활용
- private repostiroy
- 명령어
- sql 공유
- statefulset
- yaml예시
- linux 파일복사
- cli ec2
- 쿠버네티스교과서
- Today
- Total
게으름을 위한 부지런한 게으름뱅리' 블로그
[Docker] Docker로 mysql 실행 및 데이터 공유 본문
MySQL 컨테이너 실행
MySQL 공식 이미지를 사용하여 컨테이너를 실행합니다. 아래 명령어를 사용합니다
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=<your-password> \
-e MYSQL_DATABASE=<your-database> \
-e MYSQL_USER=<your-username> \
-e MYSQL_PASSWORD=<your-password> \
-v mysql-data:/var/lib/mysql \
-p 3306:3306 \
mysql:latest
- -d: 컨테이너를 백그라운드에서 실행합니다.
- --name mysql-container: 컨테이너의 이름을 지정합니다. 원하는 이름으로 변경 가능합니다.
- -e MYSQL_ROOT_PASSWORD: MySQL root 사용자의 비밀번호를 설정합니다. <your-password>에 실제 비밀번호를 입력합니다.
- -e MYSQL_DATABASE: MySQL에 생성할 데이터베이스의 이름을 지정합니다. <your-database>에 원하는 데이터베이스 이름을 입력합니다.
- -e MYSQL_USER 및 -e MYSQL_PASSWORD: 새로운 MySQL 사용자를 생성하려면 이 환경 변수를 사용하여 사용자 이름과 비밀번호를 설정합니다.
- -v mysql-data:/var/lib/mysql: MySQL 데이터를 저장할 Docker 볼륨을 생성합니다. 이는 데이터를 영구적으로 저장하기 위한 중요한 부분입니다.
- -p 3306:3306: 호스트와 컨테이너의 포트를 매핑합니다. MySQL은 기본적으로 3306 포트를 사용합니다.
MySQL 컨테이너 접속
MySQL 컨테이너에 접속하여 데이터베이스를 관리하려면 다음 명령어를 사용합니다:
docker exec -it mysql-container mysql -u root -p
위 명령어를 실행하면 비밀번호를 입력하라는 메시지가 나타납니다. 위에서 설정한 비밀번호를 입력하면 MySQL에 접속할 수 있습니다.
데이터베이스 사용
MySQL에 접속한 후에는 SQL 쿼리를 사용하여 데이터베이스를 관리할 수 있습니다. 예를 들어, 새로운 테이블을 생성하거나 데이터를 삽입할 수 있습니다.
MySQL 데이터베이스 영구 저장 확인
MySQL 데이터는 mysql-data라는 이름의 볼륨에 저장됩니다. Docker 볼륨은 컨테이너가 삭제되어도 데이터가 유지됩니다. 따라서 MySQL 컨테이너를 다시 시작하거나 업그레이드해도 데이터가 보존됩니다.
Docker MySQL 실행 및 SQL 파일 자동 import 설정
MySQL 컨테이너 실행 및 초기 설정
먼저 MySQL 컨테이너를 실행하고 초기 설정을 수행합니다. 아래 명령어에서 mysql-container는 컨테이너의 이름입니다. MySQL 루트 비밀번호와 데이터베이스 이름, 사용자 등을 지정할 수 있습니다.
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=<your-password> \
-e MYSQL_DATABASE=<your-database> \
-e MYSQL_USER=<your-username> \
-e MYSQL_PASSWORD=<your-password> \
-p 3306:3306 \
mysql:latest
- -e MYSQL_ROOT_PASSWORD: MySQL root 사용자의 비밀번호를 설정합니다.
- -e MYSQL_DATABASE: MySQL에 생성할 초기 데이터베이스의 이름을 지정합니다.
- -e MYSQL_USER 및 -e MYSQL_PASSWORD: 새로운 MySQL 사용자를 생성하려면 이 환경 변수를 사용하여 사용자 이름과 비밀번호를 설정합니다.
- -p 3306:3306: 호스트와 컨테이너의 포트를 매핑합니다. MySQL은 기본적으로 3306 포트를 사용합니다.
SQL 파일 준비
SQL 파일을 준비하여 MySQL 초기화 스크립트를 작성합니다. 예를 들어, init.sql이라는 이름의 파일을 작성합니다. 이 파일에는 데이터베이스 스키마를 정의하거나 초기 데이터를 추가하는 SQL 명령어를 포함할 수 있습니다
예시 init.sql
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
INSERT INTO users (username, email) VALUES
('john_doe', 'john.doe@example.com'),
('jane_smith', 'jane.smith@example.com');
SQL 파일을 Docker 컨테이너에 자동으로 import
MySQL 컨테이너가 시작될 때 SQL 파일을 자동으로 import하려면 다음과 같이 -v 옵션을 사용하여 SQL 파일을 컨테이너에 마운트하고, docker-entrypoint-initdb.d 디렉토리에 넣습니다. Docker는 이 디렉토리에 있는 SQL 파일을 자동으로 실행합니다.
docker run -d \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=<your-password> \
-e MYSQL_DATABASE=<your-database> \
-e MYSQL_USER=<your-username> \
-e MYSQL_PASSWORD=<your-password> \
-v /path/to/init.sql:/docker-entrypoint-initdb.d/init.sql \
-p 3306:3306 \
mysql:latest
-v /path/to/init.sql:/docker-entrypoint-initdb.d/init.sql: 호스트 시스템의 init.sql 파일을 컨테이너의 /docker-entrypoint-initdb.d/init.sql 경로에 마운트합니다. Docker는 이 경로에 있는 SQL 파일을 초기화 시점에 자동으로 실행합니다.
주의사항
- SQL 파일에 있는 명령어는 Docker 컨테이너가 시작될 때 한 번 실행됩니다. 초기 설정 스크립트는 docker-entrypoint-initdb.d 디렉토리에 .sql, .sql.gz, 또는 .sh 확장자로 저장되어야 합니다.
- SQL 파일에 오류가 있을 경우, Docker는 오류 메시지를 출력하고 초기화 작업을 중지할 수 있습니다.
- 보안을 위해 비밀번호와 같은 중요한 정보는 환경 변수나 보안 관리 도구를 사용하여 안전하게 관리해야 합니다.
- MySQL root 사용자의 비밀번호를 반드시 안전하게 관리하십시오.
- 데이터베이스 및 사용자의 이름과 비밀번호는 보안을 고려하여 설정하세요.
- 데이터베이스가 중요한 경우 정기적으로 백업을 수행하십시오.
'IT > Docker' 카테고리의 다른 글
[Docker] Docker pull의 기본 원리 및 사설 registry 구축 및 pull (1) | 2024.07.15 |
---|