| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Git
- code=1 오류
- 갤럭시 아이폰 비교
- 다이소 무선랜카드
- zero offset
- react-native
- error
- 알고리즘
- code runner
- typescript
- 다이소 lan 수신기
- 다이소 와이파이
- 안드로이드 아이폰 비교
- async
- Data structure
- toISOString
- 자료구조
- CSS
- spring boot
- mac telnet
- react
- 리액트 네이티브
- zero offset ignore
- HTML
- React Native
- 다이소 랜 수신기
- Docker
- 다이소 와이파이 수신기
- 스프링부트
- 도커
- Today
- Total
Anyway
[Docker] 도커에 mariaDB 설치하기 본문
Image pull
먼저 만들고 싶은 환경의 이미지를 가져온다. 여기서는 mariaDB 환경을 만들어볼 것이다. mariaDB 이미지를 👉 Docker Hub 에서 검색한다. 그럼 Official Image 라는 태그가 달린 도커에서 기본적으로 제공해주는 이미지가 뜨는데, 해당 이미지에 들어가면 Pull 명령어가 있다.

pull 명령어를 복사해 터미널에 입력해준다. 뒤에 :latest 옵션을 붙이면 최신 버전으로 다운받는데, 이 옵션은 default 이니 안 붙여줘도 된다.

잘 다운되었는지 docker images 명령어로 확인해본다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest e2278f24ac88 2 weeks ago 410MB
container run
이제 다운받은 이미지를 컨테이너화하고 실행해보자.
도커 데스크탑을 이용해도 되지만, 여기서는 커맨드로 해볼 것이다. 명령어는 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 이다.
옵션이나 명령 없이 간단하게 생성하면 docker run mariadb 라고 입력하면 되는데, db 의 경우에는 초기 비밀번호를 필수로 요구하고 그 밖에 설정을 위해 아래처럼 입력해준다.
docker run --name mariadb -d -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 mariadb
옵션 설명
- --name : 컨테이너의 이름
- -d : detack mode 로, 컨테이너를 백그라운드에서 실행시키겠다는 뜻.
- -e : 컨테이너 내 환경변수 설정. 여기서는 root 계정의 비밀번호를 설정함.
- -p : 포트 포워딩 설정. 외부에서 내가 설정한 local port 로 접속하면 container port 와 연결하는 것이다. 순서는 local:container 이다.
생성한 컨테이너를 확인해보자. 명령어는 docker ps 이다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c66d4754f83 mariadb "docker-entrypoint.s…" 19 seconds ago Up 18 seconds 0.0.0.0:3306->3306/tcp mariadb
컨테이너 배쉬 접속
이번에는 컨테이너 내의 배쉬에 접속해보자. 명령어는 docker exec 다. 여기서 -e LC_ALL=C.UTF-8 옵션은 배쉬에서 한글 입력을 가능하게 해주는 옵션이다. ko_KR.UTF-8 로 설정하고 싶다면 👉 이 게시물을 참고한다.
$ docker exec -e LC_ALL=C.UTF-8 -it mariadb bash
root@8c66d4754f83:/#
배쉬에 접속한 후 maria db에 로그인한다.
root@8c66d4754f83:/# mysql -u root -p
Enter password: [설정했던 비밀번호]
MariaDB [(none)]>
Character Set 설정
여기서 한글로 작업하면 다 깨지므로 컨테이너의 characterset 을 지정해줘야 한다. mariaDB에 접속한 상태에서 status 명령어를 입력하면 현재 characterset 이 어떤 걸로 지정되어 있는지 볼 수 있다. lantin1 을 utf8로 설정해줘야 한다.
MariaDB [(none)]> status
--------------
...
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: latin1
Conn. characterset: latin1
...
exit 명령어로 mariaDB 접속을 끊은 후 컨테이너 배쉬로 돌아온다. 언어 설정 환경 파일을 수정해주기 위해 vim 을 설치해준다. 아래는 컨테이너가 ubuntu OS 일 때의 설치방법이다. 자신의 컨테이너의 OS 는 cat /etc/*-realse 명령어를 입력하면 DISTRIB_ID 로 확인할 수 있다.
root@8c66d4754f83:/# cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
...
확인했으면 아래 명령어로 vim을 설치해준다.
root@8c66d4754f83:/# apt-get update
root@8c66d4754f83:/# apt-get install nano
root@8c66d4754f83:/# apt-get install vim
설치가 됐다면 vim 에디터로 characterset 설정 파일을 수정해준다. 아래 [client], [mysql], [mysqld] 내용을 추가해준다. 참고로 방향키로 커서를 이동하고 i 를 누르면 커서 위치에서 편집할 수 있다. 편집 후에는 esc를 누른 후 :wq! 로 저장 후 종료한다.
root@8c66d4754f83:/# vi /etc/mysql/my.cnf
#
# This group is read both by the client and the server
# use it for options that affect everything
#
...
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
변경사항 적용을 위해 컨테이너를 다시 실행하자. exit 로 배쉬를 종료 후 컨테이너를 재실행한다.
root@8c66d4754f83:/# exit
exit
$ docker restart mariadb
다시 status 로 mariaDB의 characterset 을 확인해보면 바뀌어 있다.
$ docker exec -it mariadb bash
root@8c66d4754f83:/# mysql -u root -p
MariaDB [(none)]> status
--------------
...
Server characterset: utf8mb3
Db characterset: utf8mb3
Client characterset: utf8mb4
Conn. characterset: utf8mb4
...
테스트
데이터베이스와 테이블을 생성하고, 한글 값을 가진 테이블을 조회해서 테스트해보면 아주 잘 뜨는 걸 확인할 수 있다.
MariaDB [(none)]> create database test;
MariaDB [(none)]> use test;
MariaDB [test]> create table test(testCol VARCHAR(10));
MariaDB [test]> insert into test values('테스트');
MariaDB [test]> select * from test;
+-----------+
| testCol |
+-----------+
| 테스트 |
+-----------+
1 row in set (0.000 sec)
컨테이너 시작&종료
컨테이너를 시작하고 종료하는 명령어는 아래와 같다. 참고로, exec 명령어로 컨테이너를 실행하는건 컨테이너를 start 하고 나서다.
$ docker container start mariadb
$ docker container stop mariadb