본문 바로가기
프로그램/개발툴 설정

Mysql docker 설치

by cbwstar 2021. 5. 10.
728x90
반응형

Docker Hub 사이트 https://hub.docker.com

 

docker hub 사이트에서 mysql 검색한 후에 아래 명령어로 docker image를 가지고 온다.

 

  1. docker pull mysql:8.0.24

- 설치 확인

docker images

 

- Mysql 실행 docker이미지가 없으면 자동으로 다운받아서 실행까지 해줌

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name cbw-mysql -v c:\springboot\db:/var/lib/mysql mysql:8.0.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

 

- docker 실행 확인

- docker ps -a

C:\springboot>docker ps -a

CONTAINER ID   IMAGE          COMMAND                           CREATED          STATUS                     PORTS                                                     NAMES

f4337edf5917   mysql:8.0.24   "docker-entrypoint.s…"   32 minutes ago   Up 32 minutes   33060/tcp, 0.0.0.0:3305->3306/tcp   cbw-mysql

 

- 새로운 image생성은 commit 명령을 통해 수행하며, docker 컨테이너 ID와 신규 생성된 이미지의 이름과 Tag를 추가해서 생성할 수 있다.

> docker commit -a “by cbw" f4337edf5917 cbw-mysql:8.0.24

 

/* 실제로 추가되어서 용량에 변경이 되면 변경된 부분만 레이어가 생성되어서 사이즈가 증가된다.

C:\springboot>docker commit -a "by cbw" f4337edf5917 cbw-mysql:8.0.24

sha256:4d3a14ada49a11c1803a610af109a9d314c582118b14174a6ccbbcdfe5551d4d

 

/* 이미지 생성확인 */

C:\springboot>docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

cbw-mysql    8.0.24    4d3a14ada49a   11 seconds ago   556MB

mysql        8.0.24    0627ec6901db   6 days ago       556MB

 

신규 생성된 이미지가 어떤 이미지 레이어로 구성되었는지를 확인하기 위해서는 “history” 명령을 통해 확인 할 수 있다.

C:\springboot>docker history cbw-mysql:8.0.24

IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT

4d3a14ada49a   3 minutes ago   --character-set-server=utf8mb4 --collation-s…   44B

0627ec6901db   6 days ago      /bin/sh -c #(nop)  CMD ["mysqld"]               0B

<missing>      6 days ago      /bin/sh -c #(nop)  EXPOSE 3306 33060            0B

<missing>      6 days ago      /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B

<missing>      6 days ago      /bin/sh -c ln -s usr/local/bin/docker-entryp…   34B

<missing>      6 days ago      /bin/sh -c #(nop) COPY file:345a22fe55d3e678…   14.5kB

<missing>      6 days ago      /bin/sh -c #(nop) COPY dir:2e040acc386ebd23b…   1.12kB

<missing>      6 days ago      /bin/sh -c #(nop)  VOLUME [/var/lib/mysql]      0B

<missing>      6 days ago      /bin/sh -c {   echo mysql-community-server m…   420MB

<missing>      6 days ago      /bin/sh -c echo 'deb http://repo.mysql.com/a   55B

<missing>      6 days ago      /bin/sh -c #(nop)  ENV MYSQL_VERSION=8.0.24-…   0B

<missing>      2 weeks ago     /bin/sh -c #(nop)  ENV MYSQL_MAJOR=8.0          0B

<missing>      2 weeks ago     /bin/sh -c set -ex;  key='A4A9406876FCBD3C45…   2.61kB

<missing>      2 weeks ago     /bin/sh -c apt-get update && apt-get install…   52.2MB

<missing>      2 weeks ago     /bin/sh -c mkdir /docker-entrypoint-initdb.d    0B

<missing>      2 weeks ago     /bin/sh -c set -eux;  savedAptMark="$(apt-ma…   4.17MB

<missing>      2 weeks ago     /bin/sh -c #(nop)  ENV GOSU_VERSION=1.12        0B

<missing>      2 weeks ago     /bin/sh -c apt-get update && apt-get install…   9.34MB

<missing>      2 weeks ago     /bin/sh -c groupadd -r mysql && useradd -r -…   329kB

<missing>      2 weeks ago     /bin/sh -c #(nop)  CMD ["bash"]                 0B

<missing>      2 weeks ago     /bin/sh -c #(nop) ADD file:c855b3c65f5ba94d5…   69.3MB

 

docker run -d -p 3307:3306 --name cbw-copysql -it cbw-mysql:8.0.24

 

/* 실행 확인 */

C:\WINDOWS\system32>docker ps -a

CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS          PORTS                               NAMES

25d187f4e942   cbw-mysql:8.0.24   "docker-entrypoint.s…"   5 minutes ago    Up 5 minutes    33060/tcp, 0.0.0.0:3307->3306/tcp   cbw-copysql

f4337edf5917   mysql:8.0.24       "docker-entrypoint.s…"   52 minutes ago   Up 52 minutes   33060/tcp, 0.0.0.0:3305->3306/tcp   cbw-mysql

 

신규로 새로 생성된 이미지는 기존이미지를 참조 하고 있기 때문에 신규생성 이미지를 먼저 삭제하고 기존 이미지를 삭제해야 삭제가 된다.

 

도커의 이미지는 save 명령을 통해 압축하여 별도로 저장할 있다.

 

docker images

 

C:\WINDOWS\system32>docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

cbw-mysql    8.0.24    4d3a14ada49a   57 minutes ago   556MB

mysql        8.0.24    0627ec6901db   6 days ago       556MB

 

--도커 저장

> docker save -o cbwmysql.tar cbw-mysql:8.0.24

 

--기존에 있던 이미지를 삭제하고 추출한 이미지를 로딩한다.

-- container 기동중이면 중지후에 삭제할수 있다

docker ps -a

C:\springboot>docker ps -a

CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS          PORTS                               NAMES

25d187f4e942   cbw-mysql:8.0.24   "docker-entrypoint.s…"   53 minutes ago   Up 53 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp   cbw-copysql

f4337edf5917   mysql:8.0.24       "docker-entrypoint.s…"   2 hours ago      Up 2 hours      33060/tcp, 0.0.0.0:3305->3306/tcp   cbw-mysql

 

C:\springboot>docker stop 25d187f4e942

25d187f4e942

 

/* 컨테이너 삭제 후에 이미지 삭제 가능 */

docker rm 25d187f4e942

 

/* 이미지 삭제 */

docker rmi cbw-mysql:8.0.24

 

C:\springboot>docker rmi cbw-mysql:8.0.24

Untagged: cbw-mysql:8.0.24

Deleted: sha256:4d3a14ada49a11c1803a610af109a9d314c582118b14174a6ccbbcdfe5551d4d

Deleted: sha256:11b1c6200f1b0b66779c57b95f993947c580c9b7a42773a8b08f7ddfc997e3a1

 

/* 백업 받은 docker 파일 로딩 */

C:\springboot>docker load -i cbwmysql.tar

fe86b516c784: Loading layer [==================================================>]  7.168kB/7.168kB

Loaded image: cbw-mysql:8.0.24

 

C:\springboot>docker images

REPOSITORY   TAG       IMAGE ID       CREATED             SIZE

cbw-mysql    8.0.24    4d3a14ada49a   About an hour ago   556MB

mysql        8.0.24    0627ec6901db   6 days ago          556MB

 

/* 백업해서 로딩된 데이터 기동 되는지 확인 */

C:\springboot>docker run -d --name cbw-test cbw-mysql:8.0.24

D151bd14b58ccfc85d7b9f029f91773f2ad2cc6a657945e73e347f3ba5c1e2d8

 

/* 백업해서 로딩된 mysql 로컬 있는 db내용을 그대로 가지고 오는지 확인 */

docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root --name cbw-test -v c:\springboot\db:/var/lib/mysql cbw-mysql:8.0.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  //실행

 

C:\springboot>docker ps -a

CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS          PORTS                               NAMES

d151bd14b58c   cbw-mysql:8.0.24   "docker-entrypoint.s…"   20 seconds ago   Up 20 seconds   3306/tcp, 33060/tcp                 cbw-test

f4337edf5917   mysql:8.0.24       "docker-entrypoint.s…"   2 hours ago      Up 2 hours      33060/tcp, 0.0.0.0:3305->3306/tcp   cbw-mysql

 

/* docker hub repository push 하기 */

현재 도커 이미지는 2개가 있는것올 확인

C:\springboot>docker images

REPOSITORY   TAG       IMAGE ID       CREATED             SIZE

cbw-mysql    8.0.24    4d3a14ada49a   About an hour ago   556MB

mysql        8.0.24    0627ec6901db   6 days ago          556MB

 

기존 있는 이미지에 새로운 Tag를 부여해서 , Docker Hub에 로딩 시킬 준비를 한다.

이미지를 확인해 보면 기존 로컬에 만들어진 Docker Image를 복제해서 Docker Hub 계정에 로그인 할 이미지를 생성하였다.

직접 업로딩 하는 방법은 아래와 같다.

우선 docker machine/host에서 docker hub 계정에 로그인 한다.

 

C:\springboot>docker login

Authenticating with existing credentials...

Login Succeeded

 

/* 실제 올리는 이미지를 tag 옵션으로 생성한다. */

 

도커허브에 만든 이름과 똑같아야 올라간다.

에러나서 똑같이 이름 다시 만듬

만들어진 도커 이미지를 docker hub 업로드 한다.

 

C:\springboot>docker tag cbw-mysql:8.0.24 cbwstar/cbw-mysql:8.0.24

 

C:\springboot>docker images

REPOSITORY          TAG       IMAGE ID       CREATED       SIZE

cbwstar/cbw-mysql   8.0.24    4d3a14ada49a   2 hours ago   556MB

cbwstar/mysql       8.0.24    4d3a14ada49a   2 hours ago   556MB

cbw-mysql           8.0.24    4d3a14ada49a   2 hours ago   556MB

mysql               8.0.24    0627ec6901db   6 days ago    556MB

 

/* 전송에러 */

C:\springboot>docker push cbwstar/cbw-mysql

Using default tag: latest

The push refers to repository [docker.io/cbwstar/cbw-mysql]

tag does not exist: cbwstar/cbw-mysql:latest

 

/* 전송 성공 */

C:\springboot>docker push cbwstar/cbw-mysql:8.0.24

The push refers to repository [docker.io/cbwstar/cbw-mysql]

fe86b516c784: Pushed

a39a1017a0d2: Mounted from library/mysql

b3d394514a9a: Mounted from library/mysql

5625adb0b34d: Mounted from library/mysql

4310f59b5563: Mounted from library/mysql

53d1fc0a3024: Mounted from library/mysql

1ce52ff7c16f: Mounted from library/mysql

2cb169012988: Mounted from library/mysql

2b1742830571: Mounted from library/mysql

7afbf38fd1da: Mounted from library/mysql

f68961560ec1: Mounted from library/mysql

76233144372b: Mounted from library/mysql

7e718b9c0c8c: Mounted from library/mysql

8.0.24: digest: sha256:caefa7026f1f8e37708b66561ca52ec96322eb9e40f010b11cb0ddf71e469fac size: 3035

 

/* 내가 올린 docker 파일 hub에서 받아서 되는지 테스트 */

docker pull cbwstar/cbw-mysql:8.0.24

 

docker run -d -p 3305:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql -v c:\springboot\db:/var/lib/mysql cbwstar/cbw-mysql:8.0.24 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  //실행

/* 실행시 docker-compose.yml 파일 만들어서 실행하면 옵션 안넣어도 되서 편하다 */

/* 실행할려고 하는 폴더에 파일 생성 */

version: "3.1"

services:

  db:

    image: mysql:8.0.24

    container_name: mysql

    ports:

      - "3305:3306"

    environment:

      MYSQL_ROOT_PASSWORD: "root"

    command:

      - --character-set-server=utf8mb4

      - --collation-server=utf8mb4_unicode_ci

    volumes:

      - c:\springboot\db:/var/lib/mysql

 

실행 docker-compose 파일 실행

  • docker-compose.yml 작성한 위치에서 실행
  • 백그라운드로 실행 시 옵션 -d 붙이면 됨.
    • 자세한건 옵션 참고

docker-compose up -d

 

/* mysql 컨테이너 bash 접속 */

docker ps -a

C:\springboot>docker ps -a

CONTAINER ID   IMAGE                COMMAND                       CREATED            STATUS             PORTS                                                    NAMES

e17378e2e7a5   mysql:8.0.24   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   33060/tcp, 0.0.0.0:3305->3306/tcp   mysql

 

docker exec -it mysql bash

root@e17378e2e7a5:/# id         /* 접속 */

 

- mysql 접속

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.24 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 

/* 사용자 생성 */

create user 'cbw'@'%' identified by 'cbw';

GRANT ALL PRIVILEGES ON *.* TO 'cbw'@'%';

flush privileges;

 

create database insta DEFAULT CHARACTER SET utf8;

use insta;

quit

 

MySQL에 root로 접속 한 뒤

use mysql;

select host,user from user;

현재 생성된 db의 사용자 계정들을 확인할 수 있다.

 

사용자 계정 삭제

DROP USER [user명]@[server명];

ex) drop user user1@localhost;

 

 

Docker mysql 환경설정파일 경로 : /etc/mysql/conf.d/my.cnf

MySQL 한글 설정 (my.ini) or my.cnf

 

 

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
character-set-server=utf8

 

728x90
반응형

'프로그램 > 개발툴 설정' 카테고리의 다른 글

vsCode 개발자 폰트 설정  (0) 2021.05.10
Git 최초 설치후 사용법  (0) 2021.05.10
Postgresql 설치 및 셋팅하기  (0) 2021.05.10
Mysql 한글 인코딩 설정  (0) 2021.05.10
Docker 리눅스 서버 vi 설치  (0) 2021.05.10

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading