このブログを検索

2016年1月19日火曜日

Docker ドッカー MySQL ownCloud

openSUSE leap 42.1 上でデフォルトでリポジトリが入っていたので、Docker(ドッカー)専用マシンを構築しました。
兎に角、構築が早くて楽です。

dockerを始めるにあたり、コマンドラインから、
yast -> ソフトウェア -> ソフトウェア管理
と行き、
---start---
docker
----end----
を検索してインストールするだけ。


ホスト側の注意点としては、

①IPv4転送が有効になっていること。
yast -> システム -> ネットワーク設定 -> ルーティング
---start---
[x] IPv4転送を有効にする(I)
----end----
※デフォルトではチェックされてないので、チェックすること。

②SuSEfirewallでルーティングできること。
cat /etc/sysconfig/SuSEfirewall2 | grep FW_ROUTE
---start---
FW_ROUTE="yes"
----end----
※デフォルトでyesになっているので確認。

systemctl enable docker 
※自動起動
systemctl start docker
※起動
systemctl status docker
※確認

これで準備ができました。

あとは好きなイメージから、コンテナを作るだけです。

以下コンテナ。

とりあえず、MySQLとownCloudを試します。

MySQLの場合、データ・ボリューム・コンテナを作れだの書いてありましたが、
一度試して不要だと思ったので、
すぐにMySQLコンテナを作ります。

イメージからそのまま作るとlatin1_swedish_ciになるので、ホスト側にコンテナ用設定ファイルを準備しておきます。
mkdir /docker
mkdir /docker/mysql
vi /docker/mysql/custom.cnf
---start---
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
----end----
※こんなかんじ。

docker run -d --name mysql-server -v /docker/mysql/:/etc/mysql/conf.d -e MYSQL_DATABASE=owncloud -e MYSQL_USER=owncloud-admin -e MYSQL_PASSWORD=password -e MYSQL_ROOT_PASSWORD=password mysql

runでイメージから--nameのコンテナが作られます。
この場合のイメージは、一番最後のmysqlです。これで最新になります。
バージョン指定もできます。(こんなかんじ=mysql:5.7 mysql:5.7.9)
--nameのあとがコンテナ名です。サーバー名ではありません。
-vで先ほど作ったコンフィグのあるディレクトリをコンテナのディレクトリにマウントさせています。
-e以降は、設定値を入れています。これを省略した場合は、コンテナで手動で入れてください。

デフォルトでは
ホスト側が172.17.0.1のIPをもち、
2番目に作った上記のmysql-serverが172.17.0.2になります。

つぎにownCloudを作成。

docker run -d --name owncloud1 --link mysql-server:mysql -p 80:80 owncloud

--linkで先ほどのDBをリンクしましたが、不要な気がします。
ownCloudのセットアップ画面でIPとポート指定すれば、無事動いてましたし。
このコンテナのIPは172.17.0.3がデフォルトです。
443ポートにする場合は、証明書準備したりするのですが、今回は割愛します。
-vを使って、ホスト側の証明書をコンテナ側にマウントする方法でいいと思います。
なので、ホスト側の80をコンテナの80に転送する設定が-pです。

docker ps
すると実行中のコンテナが見られます。

docker ps -a
は、過去に作ったコンテナが見られます。

動作中の各コンテナに入る場合は、
docker exec -it mysql-server bash
こんなかんじで。

その後
#env
#mysql -u root -p
>show variables like 'char%';
>show databases;
>select user();
>select user from mysql.user where user='owncloud-admin';
>show tables from owncloud;
>exit
で普通に操作できます。
なお、envは、コンテナに設定されているパラメーターを確認できます。

コンテナの自動起動は、
vi /etc/init.d/after.local
---start---
/home/niriakot/docker-boot.sh
----end----
のようにafter.localで実行するのが楽チン。
systemctlで実行すると、なんかあったのでやめました。(記憶が曖昧)

実際の中身は、
vi /home/niriakot/docker-boot.sh
---start---
#!/bin/sh
docker start mysql-server
docker start owncloud1
----end----
こんな感じです。

立ち上がったら
http://ホスト名かホストのIPアドレス
でowncloudが立ち上がってくるので、
172.17.0.2:3306
db指定してあげれば、行けると思います。

参考:
コンテナ削除 : docker rm コンテナID
イメージ削除 : docker rmi イメージID
※コンテナIDはdocker ps -aで、イメージIDはdocker imagesで確認できます。

課題としては、
運用やセキュリティ面はどうかといったところですが、しばらく使ってみたうえで、
改めてブログに書きたいと思います。
OSのパッチやアップグレード。
dockerイメージのアップデート。
セキュリティホール。などなど。

※そもそもの開発向けの使い方とは全く違う角度で試したいと思っています。

---CM---
弊社では、ログサーバーの構築と月極め管理アドバイザリー契約を
構築初期費用は無料で
運用費用もしくはアドバイザリー契約費用は
3万円(税抜)/月額から承っております。
現状のネットワークの構成やこれから実施したいこと、
一番やりたいこと、2番目にやりたいことなどを明記して頂き、
その他のご相談も含めて
見積依頼をメールで頂ければ、24時間以内にご返答致します。
基本的に弊社の運用は、弊社サーバーを経由したリモートアクセスによるものなので、
外出中でも数時間以内に対応可能です。
打ち合わせや月例会などもオンラインで実施致しますので、
時間及びコスト効率を最大限に考慮し、ご提案させて頂きます。
どうぞお気軽にご相談ください。
これ以外でも、弊社では各種サーバー
(DNS、メール、Web、ファイル共有、カスタマイズ、セキュリティチェック、ベンチマーク)を
オープンソースで、作成し、運用を致しますので、
御用命は、
webmaster@niriakot.jp
までどうぞ。 http://niriakot.jp/
(時給5,000円から請け負います。。。相談は無料。。。)

0 件のコメント:

コメントを投稿