marinaDB, mysql docker

Published by onesixx on

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
-vvolume 폴더마운팅 HOSTdir:CONTAINERdir
-eenvironment변수 설정
옵션내용
-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>
Mysql 초기설정

https://onesixx.com/mariaDB/

Categories: Tool-SW

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x