marinaDB, mysql docker
Image
Image Pull (다운로드)
~$➜ docker pull mariadb #~$➜ docker pull mysql #~$➜ docker pull mysql:8.0.17
image List (목록)
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE mariadb latest 12e05d5da3c5 5 days ago 409MB #$ docker images
Volumes
volume
~$➜ docker volume create --name dv_mariadb
~$➜ docker volume ls DRIVER VOLUME NAME local dv_mariadb ~$➜ docker inspect --type volume dv_mariadb ✔ │ mydash [ { "CreatedAt": "2021-10-21T20:08:41Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/dv_mariadb/_data", "Name": "dv_mariadb", "Options": {}, "Scope": "local" } ]
https://onesixx.com/docker-volume/
Container
Container 생성/실행 (Mysql)
shell command
# --name 도커컨네이너명 # d 백그라운드 # p port # e environment variable # mariadb 다운받은 이미지명 $ docker run -d --name dc_mariadb -p 3306:3306 \\ -e MYSQL_ROOT_PASSWORD=password \\ -v dv_mariadb:/var/lib/mysql mariadb \\ --character-set-server=utf8mb4 \\ --collation-server=utf8mb4_unicode_ci $ docker run -d --name dc_mariadb -p 3306:3306 \\ -e MYSQL_ROOT_PASSWORD=password \\ -v ~/my/docker_volume/mariadb:/var/lib/mysql mariadb \\ --character-set-server=utf8mb4 \\ --collation-server=utf8mb4_unicode_ci
옵션 | 내용 |
---|---|
-name | 컨테이너명 |
-d | –detached 모드 , 컨테이너를 bakcground에서 run |
-p | –publish Port 포워딩 HOST:CONTAINER |
-v | volume 폴더마운팅 HOSTdir:CONTAINERdir |
-e | environment변수 설정 |
옵션 | 내용 |
---|---|
-it | 터미널 입력 interactive tty |
-rmi | 이미지 제거 |
-rm | 컨테이너 제거 |
docker-compose.yml 파일 생성.
version: "3" # 파일 규격 버전 services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 db: # 서비스 명 image: mysql:8.0.17 # 사용할 이미지 container_name: docker-mysql # 컨테이너 이름 설정 ports: - "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부) environment: # -e 옵션 MYSQL_ROOT_PASSWORD: "password" # MYSQL 패스워드 설정 옵션 command: # 명령어 실행 - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci volumes: - /Users/onesixx/datadir:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)
docker-compose.yml 작성한 위치에서 실행
~$➜ docker-compose up -d
이전 실행시 가지고 있던 정보를 유지하려면, docker volume을 사용해야 한다.
https://www.youtube.com/watch?v=YK-V8aq32WA
https://wecandev.tistory.com/107
docker로 mariaDB 설치 방법
예시>
cd /Users/onesixx/my/DOCKER mkdir fa_mysql
~
$ cd ~/my/DOCKER/fa_mysql $ docker-compose -f docker-compose.yml up -d
Docker 컨테이너 접속 $ docker exec -it mysql /bin/bash DB 사용자 추가하기 $ mysql -u root -p admin localhost 에서만 접속 가능한 계정 생성 mysql> USE mysql; mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost'; mysql> FLUSH PRIVILEGES; // 모든 DB, 테이블에 접속 가능한 계정 생성 mysql> USE mysql; mysql> CREATE USER 'YOUR_SYSTEM_USER'@'%' IDENTIFIED BY 'YOUR_PASSWD'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'%'; mysql> FLUSH PRIVILEGES; mysql> USE mysql; mysql> CREATE USER 'sa'@'%' IDENTIFIED BY 'password'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'sa'@'%'; mysql> FLUSH PRIVILEGES;
Container List (목록)
(base) ~/sixxDoc/PCODE$➜ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a7e6389af9fd mariadb "docker-entrypoint.s…" 37 seconds ago Up 36 seconds 0.0.0.0:3306->3306/tcp dc_mariadb
~$➜ docker container inspect dc_mysql
위 명령어를 실행하여 컨테이너를 올려도 되지만 아래와 같이 docker-compose.yml 파일로 만들어서 실행할 수 있다.
Container 시작/중지/재시작
~$➜ docker stop dc_mysql ~$➜ docker start dc_mysql ~$➜ docker restart dc_mysql
# (docker 시작 / 정지) ~$➜ docker start [docker image name] ~$➜ docker stop [docker image name] # mariaDB 접속하기 ~$➜ docker exec -it dc_mariadb bash #(mariaDB container로 접속) #~$➜ mysql -u root -p ~$➜ mariadb -u root -p
Container 접속
~$➜ docker attach dc_mysql Ctrl+p+q #종료'exit' 명령을 사용하면 실행중인 컨테이너는 종료됨
~$➜ docker exec -it dc_mysql bash root@666666666$ mysql -u root -p mysql>