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