CentOS7 に MySQL 5.6インストール

参照: http://www.kakiro-web.com/linux/mysql-yum-repository-install.html

MySQLのリポジトリ設定パッケージをダウンロード

1
$ wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

MySQLのリポジトリのインストール

1
2
3
4
5
6
7
# rpm -Uvh mysql-community-release-el7-5.noarch.rpm

# MySQL 5.6 のリポジトリ利用
# yum --enablerepo=mysql56-community list | grep mysql

# MySQL 5.6 インストール
# yum --enablerepo=mysql56-community install -y mysql-community-server

rpm(Redhat Package Management)コマンドについて以下参照

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230875/

MySQL 起動 / 登録

1
2
# systemctl start mysqld.service
# systemctl enable mysqld.service
DBアクセス
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

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 コマンドまとめ

MySQL コマンドまとめ

Dump 不要なテーブルは「–ignore-table=(テーブル名)」で排除

1
mysqldump -u <user> -p<password> dbname --ignore-table=dbname.table > dump.sql

DDL(Data Definition Language)取得

1
mysqldump -u <user> -p<password> --no-data dbname > ddl.sql

データ(INSERT クエリ)取得

1
mysqldump -u <user> -p<password> --no-create-info dbname > data.sql

DB インポート

1
mysql -u <user> -p<password> dbname < data.sql

ちなみにインポート時に以下のようなエラーが出た場合は、

1
ERROR 2006 (HY000) at line ***: MySQL server has gone away

以下記事参照してください。
[http://kenzo0107.hatenablog.com/entries/2015/12/17]

DDL なし + CSV はきだし

[f:id:kenzo0107:20160119111938p:plain]

1
2
3
mkdir ./csv
chmod o+x ./csv
mysqldump -u <user> -p<password> --tab=./csv --fields-terminated-by=, --fields-optionally-enclosed-by=\" --lines-terminated-by="\r\n" dbname

SELECT 文から CSV データで出力

  • SELECT ~ INTO OUTFILE output.csv の場合、DB サーバに /tmp/hoge.csv は出力される。
    コマンド実行するサーバと DB サーバが異なる場合は注意が必要です。
1
2
use dbname
SELECT * INTO OUTFILE'/tmp/hoge.csv' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '' LINES STARTING BY '' TERMINATED BY '\r\n' FROM table;
  • コマンドライン SQL ファイルをロードし実行結果を CSV に保存
1
mysql -h <host> -u <user> -p<password> <db_name> -e "`cat query.sql`" | sed -e 's/\t/,/g' >/tmp/result.csv

INPUT OUTFILE を利用せずに CSV ファイル生成

https://kenzo0107.github.io/2015/12/16/2015-12-17-mysql-error-2006-hy000-mysql-server-has-gone-away/

テーブル指定し出力

1
mysqldump -u <user> -p<password> -t dbname table1 tabl2 > no_data.sql

テーブル指定し WHERE 句ありで出力

1
mysqldump -u <user> -p<password> -t dbname table1 "-w created_at < '2016-10-27' " > no_data.sql

output by CSV format

1
2
3
mysql -u user -ppassword
> use dbname
> LOAD DATA INFILE "<CSVFile>" INTO TABLE table FIELDS TERMINATED BY ',' ENCLOSED BY '"';

全テーブル TRUNCATE

1
mysql -u root dbname -N -e 'show tables' | while read table; do mysql -u root -e "truncate table $table" dbname; done

AUTO_INCREMENT 値確認

1
SELECT auto_increment FROM information_schema.tables WHERE table_name = '<table>';

AUTO_INCREMENT 値設定

1
ALTER TABLE <table> auto_increment=<int val>;

テーブル名変更

1
ALTER TABLE <old table> rename <new table>;

テーブルにカラム追加

1
ALTER TABLE <table> ADD <column> TINYINT(3) NOT NULL DEFAULT <deafult value> COMMENT '<comment>' AFTER <previous column>;
  • 例) テーブル user の email カラムの次にカラム名: mailmagazine_status を
    tinyint(3) 符号なし(unsigned)、デフォルト 0 の追加
1
ALTER TABLE user ADD mailmagazine_status TINYINT(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'メルマガステータス' AFTER email;

テーブルのカラム削除

1
ALTER TABLE <table> DROP COLUMN <column>;

テーブルのカラム編集

1
ALTER TABLE <table> CHANGE <old column> <new column> <column 定義>;
  • 例) product テーブル の カラム名「no」を 「id」に、 unsigned(符号なし)、NULL 禁止、デフォルト: 0、カラムコメント 「商品 ID」に修正
1
ALTER TABLE product CHANGE `no` `id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '商品ID';

インデックス一覧表示

1
SHOW INDEXES FROM <table>;

インデックス追加

1
2
3
ALTER TABLE <table> ADD INDEX <index name>(<column>);

ALTER TABLE <table> ADD INDEX <index name>(<column1>,<column2>);

インデックス削除

1
ALTER TABLE <table> DROP INDEX <index name>;

ユニーク追加

1
ALTER TABLE <table> ADD UNIQUE(<column>);

ユニーク削除

DB の文字コード確認

1
SHOW CREATE DATABASE dbname

gz 形式で圧縮状態のファイルを特定 DB スキーマへ実行

1
zcat dump.sql.gz | mysql -u <user> -p<password> dbname

全テーブルの統計情報をサイズ順に一覧表示

1
SELECT table_name, engine, table_rows AS tbl_rows, avg_row_length AS rlen, floor((data_length + index_length) / 1024 / 1024) AS allMB, floor((data_length) / 1024 / 1024) AS dMB, floor((index_length) / 1024 / 1024) AS iMB FROM information_schema.tables WHERE table_schema = database() ORDER BY (data_length + index_length) DESC;

テーブルの文字コード等確認

1
2
3
4
5
6
7
SELECT * FROM information_schema.schemata WHERE schema_name = 'database_name';

+--------------+---------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+---------------+----------------------------+------------------------+----------+
| def | database_name | utf8 | utf8_general_ci | NULL |
+--------------+---------------+----------------------------+------------------------+----------+

DB/Table 作成

DB 作成 (CHARACTER=utf8)

1
CREATE DATABASE `database_name` CHARACTER SET utf8;

指定 DB/ホストに対してユーザ・パスワード・権限設定

以下設定する必要あり

  • database_name
  • user_name
  • host_name
  • password
1
GRANT ALL PRIVILEGES ON `database_name`.* TO `user_name`@'host_name' IDENTIFIED BY 'password' WITH GRANT OPTION;

指定ユーザに mysql スロークエリログ参照権限付与

1
GRANT select ON mysql.slow_log TO user_name;

指定ユーザに RDS(AWS)の msyql スロークエリ参照権限付与

1
GRANT EXECUTE ON PROCEDURE mysql.rds_rotate_slow_log TO user_name;

指定ユーザの権限表示

1
SHOW GRANTS for 'user_name'@'%';

設定反映

上記権限設定した後に設定反映

1
FLUSH PRIVILEGES;

GRANT での権限付与の場合は特に FLUSH PRIVILEGES は不要ですが念の為。
INSERT、UPDATE、DELETE 等で権限付与した場合は FLUSH PRIVILEGES が必要になります。

テーブル毎の容量確認

[http://kenzo0107.hatenablog.com/entry/2016/06/27/121920:embed:cite]

ちょうど 1 年前に

1
SELECT NOW() - INTERVAL 1 YEAR;

昨日のことのように

1
SELECT NOW() - INTERVAL 1 DAY;

1 日前の 00:00:00

1
SELECT CURDATE() - INTERVAL 1 DAY;

1 日前の 11:00:00

1
SELECT DATE_FORMAT(CURDATE() - INTERVAL 1 DAY, '%Y-%m-%d 11:00:00');

MySQL バージョン確認

1
2
3
4
5
6
7
mysql -u <user> -p<pass> -e"SELECT version();"

+------------+
| version() |
+------------+
| 5.5.42-log |
+------------+

各種メトリクス

SELECT / INSERT / UPDATE / DELETE / REPLACE コマンドの実行回数取得

1
mysql -u root -NBe "SHOW GLOBAL STATUS" | grep "Com_"  | grep -E "select|insert|update|delete|replace"

[f:id:kenzo0107:20160927140251p:plain]

Item Explain
Com_delete 削除 (DELETE) 実行回数
Com_delete_multi 複数行 (DELETE) 実行回数
Com_insert 登録 (INSERT) 実行回数
Com_insert_select コピー作成 (INSERT SELECT) 実行回数
Com_replace 再作成 (REPLACE) 実行回数
Com_replace_select 再作成 (REPLACE SELECT) 実行回数
Com_select 選択 (SELECT) 実行回数
Com_update 更新 (UPDATE) 実行回数
Com_update_multi 複数行更新 (UPDATE) 実行回数

接続中 のコネクション数取得

1
mysql -u root -BNe "SHOW STATUS LIKE 'Threads_connected';"

NginxにオレオレSSL証明書インストール

環境

  • AWS EC2 : t2.micro
  • OS : CentOS Linux release 7.1.1503 (Core)
  • Nginx: 1.8.0
  • OpenSSL: 1.0.1e-fips 11 Feb 2013

前提

  • Nginxがインストール済みである。

事前にパスワード作成

1
2
$ cat /dev/urandom | LC_CTYPE=C tr -dc '[:alnum:]' | head -c 40
v6biM9MMByBO0SWFitcbnyF0VUsJLbZsizpP7K15

40文字のランダムな半角英数字が生成されます。

証明書作成時に必要となるパスワードです。
絶対忘れないようにしてください。

以下ec2インスタンスのパブリック DNSを

ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com

として話を進めます。


KEY ファイル作成

sha256(略してsha2)で作成します。

1
2
3
4
# mkdir -p /etc/nginx/conf
# cd /etc/nginx/conf
# openssl genrsa -des3 -out server.key 2048 -sha256
Enter pass phrase for server.key: v6biM9MMByBO0SWFitcbnyF0VUsJLbZsizpP7K15

CSR ファイル作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# openssl req -new -sha256 -key server.key -out server.csr
Enter pass phrase for server.key: v6biM9MMByBO0SWFitcbnyF0VUsJLbZsizpP7K15

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Setagaya-ku
Organization Name (eg, company) [Default Company Ltd]:UmiyamaShouji inc.
Organizational Unit Name (eg, section) []:Production
Common Name (eg, your name or your server's hostname) []:ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com
Email Address []: (空白のままEnter)

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: (空白のままEnter)
An optional company name []: (空白のままEnter)
確認
1
2
3
4
5
6
$ ls -al
total 8
drwxr-xr-x. 2 root root 40 Aug 5 13:43 .
drwxr-xr-x. 3 root root 17 Aug 5 13:32 ..
-rw-r--r--. 1 root root 729 Aug 5 13:43 server.csr
-rw-r--r--. 1 root root 963 Aug 5 13:37 server.key

RSA key作成

1
2
# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: v6biM9MMByBO0SWFitcbnyF0VUsJLbZsizpP7K15

CRT作成

1
2
3
4
5
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Signature ok
subject=/C=JP/ST=Tokyo/L=Setagaya-ku/O=UmiyamaShouji inc./OU=Production/CN=ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com
Getting Private key

ssl.conf作成

example_ssl.conf をコピーし ssl.conf 作成

1
2
# cd /etc/nginx/conf.d
# cp example_ssl.conf ssl.conf

ssl.conf編集

1
# vi ssl.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# HTTPS server
#
server {
listen 443 ssl;
server_name ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com;
ssl on;
ssl_certificate conf/server.crt;
ssl_certificate_key conf/server.key;

# 以下随時設定
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}

Nginx再起動

1
# systemctl restart nginx

もしこんなエラーが出たら

1
nginx[2246]: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf/server.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)

server.keyのパスフレーズにより読み込みができないというエラーです。
バックアップを作成してパスフレーズを解除してください。
完了したら再起動して確認してください。

1
2
3
$ sudo cp server.key server.key.bk
$ sudo openssl rsa -in server.key -out server.key
$ systemctl restart nginx

動作確認

以下参考までに
[http://kenzo0107.hatenablog.com/entry/2015/08/05/144733:embed:cite]

CentOS7 に Nginx + Go + Revel インストール・動作確認

環境

  • EC2 t2.micro
  • CentOS Linux release 7.1.1503 (Core)
  • Go version go1.4.2 linux/amd64

以下手順です。

事前準備

EC2 インスタンスへSSHログイン

1
$ ssh -i aws.pem centos@xxx.xxx.xxx.xx

root権限へ変更

1
$ sudo su -

yumパッケージ インストール

1
2
# yum update
# yum install -y vim wget '*mercurial*' tree

最新のGitインストール

Git が1.8以前の場合 go get が正しく動作しない事象が確認されている為、Gitを最新バージョンにします。

※ 2015-08-03 時点 git version 2.5.0

https://kenzo0107.github.io/2016/02/22/2016-02-23-install-latest-git-on-centos/

Goインストール

インストール

1
2
3
# cd /usr/local/src
# wget https://golang.org/dl/go1.4.2.linux-amd64.tar.gz
# tar -C /usr/local/ -xzf go1.4.2.linux-amd64.tar.gz

Go用 WorkSpace 作成

  • このディレクトリでソースを管理します。
  • go getgo installした際はこのディレクトリに追加されます。
1
# mkdir -p /var/golang

rootユーザにてGo実行パス設定

  • /root/.bashrc に以下追記
1
2
3
4
5
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export GOPATH=/var/golang

export PATH=$PATH:$GOBIN
  • 設定反映
1
# source /root/.bashrc
  • 反映されたか確認
1
2
3
4
5
# which go
/usr/local/go/bin/go

# go version
go version go1.4.2 linux/amd64

上記のようにコマンドを実行し表示されれば問題ありません。

centosユーザにも同様にGo実行パス設定

1
# su - centos
  • /home/centos/.bashrc も同様に追記
1
2
3
4
5
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export GOPATH=/var/golang

export PATH=$PATH:$GOBIN
  • 設定反映
1
$ source /home/centos/.bashrc
  • 反映されたか確認
1
2
3
4
5
$ which go
/usr/local/go/bin/go

$ go version
go version go1.4.2 linux/amd64

上記のようにコマンドを実行し表示されれば問題ありません。

Revel インストール

Revelフレームワーク と Revelコマンド を go get でインストールします。

1
2
$ go get github.com/revel/revel
$ go get github.com/revel/cmd/revel

Nginxインストール

  • Nginx用リポジトリ作成
1
# vim /etc/yum.repo.d/nginx.repo
  • 以下追記
1
2
3
4
5
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

Nginx モジュールインストール

1
# yum install -y nginx
起動時設定

サーバ起動時・再起動時にNginxが立ち上がるようにします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# systemctl disable httpd
# systemctl enable nginx
# systemctl start nginx
# systemctl status nginx

nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Mon 2015-08-03 06:07:44 UTC; 2s ago
Docs: http://nginx.org/en/docs/
Process: 12642 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Process: 12641 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 12645 (nginx)
CGroup: /system.slice/nginx.service
├─12645 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx....
└─12646 nginx: worker process

Aug 03 06:07:44 ip-172-31-19-253 systemd[1]: Starting nginx - high performan....
Aug 03 06:07:44 ip-172-31-19-253 nginx[12641]: nginx: the configuration file...k
Aug 03 06:07:44 ip-172-31-19-253 nginx[12641]: nginx: configuration file /et...l
Aug 03 06:07:44 ip-172-31-19-253 systemd[1]: Failed to read PID from file /r...t
Aug 03 06:07:44 ip-172-31-19-253 systemd[1]: Started nginx - high performanc....
Hint: Some lines were ellipsized, use -l to show in full.

Nginx 設定ファイル修正

1
# vim /etc/nginx/conf.d/default.conf
1
2
3
4
5
6
7
server {
listen 80;
server_name ec2-xx-xx-xx-xxx.ap-northeast-1.compute.amazonaws.com;

location / {
proxy_pass http://127.0.0.1:9000;
}

Revel でアプリケーション作成・実行

  • 「myapp」というプロジェクトを revelコマンドで作成
1
# revel new myapp
  • 実行
1
# revel run myapp
  • 実行結果

※セキュリティグループでhttpでアクセスできるように設定してください。

Go言語 開発整備 on MacOSX

環境

  • MacOSX 10.10.4 Yosemite
  • Go 1.4
  • Eclipse Mars Release (4.5.0)

概要

2015-08-01時点

IntelliJでgo開発を検討していましたが
Go言語Ver 1.4 をサポートしていなかったので
Eclipseに GoClipse を入れて補間機能等を整備します。

Go インストール

1
$ brew install go

brewをインストールしていない場合は以下参照

https://kenzo0107.github.io/2015/02/27/2015-02-28-install-homebrew-on-macosx/

Go バージョン確認

1
2
$ go version
go version go1.4.2 darwin/amd64

環境変数設定

個人的には ~/.zshrc 利用していますが、ない場合は
~/.bash_profile などに以下を追記してください。

1
2
3
4
5
# go
if [ -x "`which go`" ]; then
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
fi

ちなみに -x は実行可能か判定しています。
すなわち「if [ -x “which go“]」 は which go というコマンドが実行できるかを判定しています。

現状ローカル環境で which go と入力すると
以下のようになります。

1
2
$ which go
/usr/local/bin/go

GOPATH

  • Workspaceになります。プロジェクトはこちらに作っていくことになります。
  • go install, go get した際の保存場所になります。

go 環境情報確認

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ go env

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/kenzo/go"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.4.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"

brewgoをインストールした場合、GOROOTは /usr/local/Cellar/ 配下となります。

環境変数設定反映

.zshrc の場合

1
$ source .zshrc

.bash_profile の場合

1
$ source .bash_profile

GoClipseインストール

Eclipse の上部メニューの Help > Install New Software... クリック

GoClipse Software Location設定

GoClipse を選択しインストール

  • GoClipseにチェックを入れ Next >ボタンクリックでインストールを進めてください。

  • Perspective に Go が表示されるようになります。

GoClipse 各パス設定

以上

Eclipse でGoコードデバッグツールgdb設定 on MacOSX

概要

goのデバックモジュール GDBをインストールします。
ただMacのセキュリティ上の理由からGDBを利用するには
証明書を作成する必要があります。

環境

  • MacOSX 10.10.4 Yosemite
  • Go 1.4
  • Eclipse Mars Release (4.5.0)
  • gdb 7.9

GDB インストール

1
$ brew install homebrew/dupes/gdb

GDB バージョン確認

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ gdb --version
GNU gdb (GDB) 7.9
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin14.1.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".

証明書 作成

gdbgdb-cert の署名を適用

1
2
$ codesign -s gdb-cert /usr/local/Cellar/gdb/7.9/bin/gdb        [master]
gdb-cert: ambiguous (matches "gdb-cert" and "gdb-cert" in /Library/Keychains/System.keychain)

taskgated プロセスをkill

1
$ sudo killall taskgated

MacOSX 再起動後以下確認

以下のように C/C++GDB が表示される

以上

Boot2DockerでMacOSXローカル環境に開発環境構築

DockerEngine環境構築

開発環境

  • MacOSX Yosemite 10.3.3
  • VirtualBox 4.3.28
  • Vagrant 1.7.2

Dockerを利用するには以下が必要

Docker Engine

  • Dockerクライアント
    • docker コマンド実行
  • Dockerサーバ
    • Dockerコンテナ実行

Docker Engine 構成

  • DockerサーバとクライアントはRESTfulなHTTPSで通信する
1
2
3
4
5
6
7
8
9
                        +---------+ +----------+
|Docker | |Docker |
|Container| |Container |
+---------+ +----------+
↑ ↑
+-----------------+ +---------------+
| Docker Client | ----> | Docker Server |
|(docker Command) | +---------------+
+-----------------+

上記を構築するために以下をインストールする

Boot2Docker

  • DockerクライアントとDockerサーバをまとめてセットアップできるソフトウェア

Boot2Docker構成

  • Docker Client
  • Linux VM
  • Docker Server
1
2
3
4
5
|               | Docker Server |
| | Linux VM |
| Docker Client | VirtualBox |
+-------------------------------+
| Mac OSX or Windows |

導入手順

Boot2Docker 公式サイト : より 「MacOSXボタン」クリック

Boot2Dockerインストール

Boot2Docker パッケージインストール

Boot2Dockerインストーラ

インストーラを実行

Imgur

Imgur

Terminal等で以下実行
  • Linux VM作成
1
$ boot2docker init
  • Linux VM起動
1
2
3
4
5
6
7
8
9
10
11
12
13
$ boot2docker start

Waiting for VM and Docker daemon to start...
...........................ooooooooooooooooo
Started.
Writing /Users/kenzo/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/kenzo/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/kenzo/.boot2docker/certs/boot2docker-vm/key.pem

To connect the Docker client to the Docker daemon, please set:
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/kenzo/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
  • Linux VMステータス確認
1
2
$ boot2docker status
running
  • 環境変数の設定

boot2docker start にて起動時にexport設定を実行する

1
2
3
$ export DOCKER_HOST=tcp://192.168.59.103:2376
$ export DOCKER_CERT_PATH=/Users/kenzo/.boot2docker/certs/boot2docker-vm
$ export DOCKER_TLS_VERIFY=1
  • Docker Engine全体の環境設定確認
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
$ docker info

Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 0
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 4.0.5-boot2docker
Operating System: Boot2Docker 1.7.0 (TCL 6.3); master : 7960f90 - Thu Jun 18 18:31:45 UTC 2015
CPUs: 4
Total Memory: 1.955 GiB
Name: boot2docker
ID: G776:YBRC:OUGN:T7KF:TM43:6BTU:2PVW:HGWW:3CXO:YLCF:23ON:EJVE
Debug mode (server): true
File Descriptors: 9
Goroutines: 15
System Time: 2015-06-28T12:07:33.59750188Z
EventsListeners: 0
Init SHA1:
Init Path: /usr/local/bin/docker
Docker Root Dir: /mnt/sda1/var/lib/docker

注意点

docker infoで確認できる Storage Driveraufsとなっている場合

Dockerコンテナhttpdインストールができない。

利用するStorage Driverを事前に確認する必要がある。

DockerFileベストプラクティスまとめ

https://docs.docker.com/articles/dockerfile_best-practices/

Google Cloud SDKインストール For MacOSX

概要

2015/06/18(木) Google Cloud Platform Next に参加し
無料クーポンも頂き早速利用したくなり登録!

お目当はKubanetes!

Google Cloud SDKをインストールする際、
zsh利用していた為、ややてこずったのでまとめました。

手順