途中でわからなくなったり、作業結果が知りたい人向けにログ残してるので参照どうぞ。
docker pull mysql:5.7
↑↑↑
(docker pull '欲しいイメージ':'version指定')
docker images
docker run --name mysql_login_only -e MYSQL_ROOT_PASSWORD=pass -d -p 3000:3000 mysql:5.7
深掘り↓
--name: コンテナの名前をつける
-e: 環境変数
-d(--detach): コンテナをバックグラウンドで実行する。要終了。
-p: portforwarding
docker ps
上の通りにすると、NAMEがmysql_login_only
になっているはず。
ちなみに,
docker ps -a
で今は立ってないが、昔立ち上げたことのあるコンテナの一覧を出せる。
docker exec -it 'コンテナID(初めの3桁ぐらいだけでいいよ)' bash
オプションの説明
-i: 標準入力を開き続ける
-t: 擬似ttyを割り当てる
→つまり、標準入力を受付け、そこを操作可能にする。
コンテナに接続すると、
root@xxxxxxx:/#
プロンプトが変わるはず。
必要最低限のものはコンテナの中に用意されているので、ログインしてみる。
mysql -u root -p
Enter password: runした時、'-e MYSQL_ROOT_PASSWORD='の環境変数をここにドォーん!
ログインできたらプロンプトはmysql>
になったかな?
show databases;
create database test;
OK!って表示されるはず。
use test;
Database changedって表示されたかな〜?
show tables;
何も登録していないので無い。
create table test_table(
id int(10) auto_increment not null,
name varchar(32) not null,
primary key (id)
);
show tables;
test_tableが表示されてるカナ?✋
test
っていうデータベースを作りました。
そのデータベースの中でtest_table
っていうテーブルを作りました。
レコードはid
, name
。
実際に軽くレコードを追加・削除してみよう。
insert into test_table (name) values ("hoge");
insert into test_table (name) values ("hoge");
2つぐらい入れとこ。
id
はauto_incrementで自動的に加算されていくので、書く必要はない。
select * from test_table;
全部表示しろというコマンド。
delete from test_table where id=1;
whereの後に条件を入れることで、任意の操作を行うことができる。 今回は'idが1'の人のデータを削除する。
select * from test_table;
id=2しか残ってないよね?
exit
quit
ctrl+D
上記いずれかで抜けれる。
exit
ctrl+D
docker ps
docker stop 'コンテナID'
データベースの詳しい説明は次(22:00~)のサーバ周りの勉強会で話します。
上にも書いてますが、私の作業結果をみてみたい人向けにログ取ってます。
こちら参照(issue#1へ飛びます)。
コンテナをstopしていないと消すことができないので注意。
docker ps -a
docker rm コンテナID
docker ps -a
MySQLに関してのコンテナはないはず。
docker run --name mysql_login_only -e MYSQL_ROOT_PASSWORD=pass -d -p 3000:3000 mysql:5.7
docker ps
docker exec -it コンテナID bash
mysql -u root -p pass
Enter password: 'パスを入力'
show databases;
OMG... 頑張って作ったデータベース消えとる。。。
はい、消えていることが確認できました。
step2もログ残しているので、見たい方はこちらにアクセスしてどうぞ。
docker-compose up -d
-d
はバックグラウンドで実行する。
docker exec -it 'コンテナID' bash
mysql -u root -p
show databases;
use test;
show tables;
INSERT INTO test_table (name) VALUES ("hoge");
INSERT INTO test_table (name) VALUES ("fuuuuuuuuu");
select * from test_table;
永続化確認のため、ctrl+Dでmysql, コンテナから出る。
docker-compose down
これでコンテナ終了。
もう一度コンテナ、mysqlに入ってデータが入っていれば永続化が確認できたことになる。
docker-compose up -d
docker exec -it 'コンテナID' bash
mysql -u root -p
show databases;
use test;
show tables;
select * from test_table;
データは入ってましたか?
mysql> select * from test_table;
+----+------------+
| id | name |
+----+------------+
| 1 | hoge |
| 2 | fuuuuuuuuu |
+----+------------+
2 rows in set (0.01 sec)
上記のようになっていれば成功。
step3もログ残しているので、見たい方はこちらにアクセスしてどうぞ