설치 후 터미널에서 다음 명령어를 사용했을 때 버전이 출력되면 정상적으로 설치된 것이다.
$ docker -v
Docker version 20.10.22, build 3a2c30b
Homebrew를 통해서도 설치 가능하나 추가로 설정해야 할 것들이 있다고 한다.
$ docker pull mysql:5.7
MySQL 버전은 docker hub 홈페이지에서 확인 가능하다.
M1일 경우, 다음과 같은 에러가 뜰 수 있는데
서버가 여러가지 버전 중 어떤 플랫폼의 버전을 가져올지 몰라서 뜨는 에러로 추측된다.
5.7: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries
에러를 해결하기 위해 기존 명령어에 platform
인자 옵션을 추가한다.
$ docker pull --platform linux/amd64 mysql:5.7
5.7: Pulling from library/mysql
e048d0a38742: Pull complete
c7847c8a41cb: Pull complete
351a550f260d: Pull complete
8ce196d9d34f: Pull complete
17febb6f2030: Pull complete
d4e426841fb4: Pull complete
fda41038b9f8: Pull complete
f47aac56b41b: Pull complete
a4a90c369737: Pull complete
97091252395b: Pull complete
84fac29d61e9: Pull complete
Digest: sha256:8cf035b14977b26f4a47d98e85949a7dd35e641f88fc24aa4b466b36beecf9d6
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 be16cf2d832a 2 weeks ago 455MB
--name
뒤에 컨테이너 이름을 입력한다.<비밀번호 입력>
에서 비밀번호를 입력하는데 <
와 >
는 입력하지 않는다.docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<비밀번호 입력> -d -p 3306:3306 mysql:latest
💡 명령어 참고:
--name
: 생성할 컨테이너 이름-e
: 환경변수 (PASSWORD) 설정-d
: Dispatch mode (백그라운드에서 실행)-p
: 포트 (외부포트 : Docker 내부포트)mysql
: sql 버전
latin1
로 설정되어 있을 수도 있다.--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
💡 참고: 환경에 따라 컨테이너 종료 후 재접속 시, 설정이 매번 초기화되는 경우가 있는 것 같다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f95ad85c7e02 mysql:5.7 "docker-entrypoint.s…" 27 seconds ago Up 26 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-container
💡 명령어 참고:
ps
: 실행중인 컨테이너 리스트 보기ps -a
: 모든 컨테이너 리스트 보기
$ docker start mysql-container // "mysql-container" 대신 ID인 "f95ad85c7e02"로도 실행 가능
$ docker stop mysql-container
$ docker restart mysql-container
root@{containerName}#
으로 진입하게 된다.exit
를 입력하면 된다.docker exec -it mysql-container bash
💡 명령어 참고:
-it
: Interactive Terminal Mode
locale -a
💡 참고: bash에 진입한 상태라면
exit
를 입력하여 나올 수 있다.
locale
명령어로 다시 확인해보면 UTF-8이 적용된 것을 확인할 수 있다.$ docker exec -it -e LC_ALL=C.UTF-8 mysql-container bash
mysql>
로 진입하게 된다.💡 참고: 우분투에서 실행했다면
root@{containerName}#
형태로 뜨고, docker에서 진입하면bash-숫자#
형태로 뜨는 것으로 추측된다.
bash-4.2# mysql -u root -p // # 뒤부터 입력해야 한다.
Enter password: // 비밀번호 입력
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.41 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, 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> // mysql로 진입
‼️ 주의: SQL 쿼리문을 작성하는 것이기 때문에, 맨 마지막에
;
를 꼭 입력해야한다.
mysql> create user 'jinny'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.04 sec)
💡 : 컨테이너 외부에서 MySQL에 로그인이 필요할 시,
localhost
대신%
를 입력한다.
mysql> grant all privileges on *.* to 'jinny'@'localhost';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
MySQL에서 데이터베이스 생성하는 방법은 다음 글을 참고 하라.
덕분에 쉽게 로컬에 설치했네요 감사합니다 ㅎㅎ