銀河の歴史がまた1ページ(日記)

Last Update (2017/09/16 19:51:28)
1997.09.06から数えて counter 番目のアクセスです。

ミラーサイト [www.ceres.dti.ne.jp] [yk.rim.or.jp]

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索]

ページ内目次


■ 宇宙暦 2017.06.04

http://www.ceres.dti.ne.jp/~george/jdiaryB70601.html#20170604

2017.06.04(日) iQOS買った

コンビニで偶然売ってたので購入。最後の一個だったようだ。

いまは普通のタバコと併用中ww


■ 宇宙暦 2017.06.06

http://www.ceres.dti.ne.jp/~george/jdiaryB70601.html#20170606

2017.06.06(火) おとんが iPhone7 と iPad mini 買った

最新のiPhone7だわー。自分のじゃないけどw

ホームボタンは、3Dタッチで言えば強く押すに反応する感じになっていた。 これだとホームボタンのダブルクリックがやりにくくて困る。 ホームボタンが物理ボタンじゃないのは違和感しかないけど、防水のためには仕方ないのか。

iPad miniは、iPad対応アプリだと画面レイアウトがスマホ版と違ってちょっと慣れない。 あと、iPad miniで許しがたいのがフリック入力モードが存在しないこと、仮想キーボードが画面中央に固定表示されて入力フォームの上にかぶさって画面が見えないこと。 設定でなんとかできないと死ねる。

→設定でなんとかできた・・・。キーボードは固定モードがよろしいようで。設定→一般→キーボードに日本語−かなを追加して、設定→一般→キーボードのフリックのみをオンにするとフリック入力もできた。


■ 宇宙暦 2017.06.16

http://www.ceres.dti.ne.jp/~george/jdiaryB70601.html#20170616

2017.06.16(金) Docker for windows (Windows10 Pro用)インストールしてみた。

しかしまあ、Dockerって凄い変動が激しいプロダクトだなーww

Windows版だけで言えば、boot2docker (使ったことないけど) → Docker-toolbox (Windows 7,8,8.1用。Oracle Virtual Boxを使う)(シェルはGit for Windowsのbash.exeを使う) → Docker for windows (Windows 10 Pro用。Hyper-Vを使う)(シェルはPowerShellを使う)と変動している。

正直、PowerShellよりbash.exeを使ってほしかったが...(ぉぃ)。

余談だが、CentOS7のrpm名で言うと、docker or docker-engine → docker-ce と変わっている。 Docker APIのバージョンは1.12から1.27へと駆け上がっている。

毎月リリースする予定って話だから恐ろしい。

凄い開発速度だ...。

何食ってんだろ...。

...。

さて、docker本体は何をするものか、というと、デプロイ環境を隔離して、組み合わせを自由にできる基本セットという感じのモノ。

本当に似てるかどうかはわからんけど、ソースコード配布を自分でコンパイル時々自分でソース修正時代から、バイナリパッケージ配布時代(rpmとかpkgとか)への変化に似ている気がする。

アプリのバイナリ一式、アプリが必要とする各種ライブラリ一式をファイルシステム丸ごと固めて、外部へのファイルマウントやネットワーク接続は管理され限定されつつも可能で、CPU、メモリ、ファイルは他の連中と混ざらないように隔離されている。

たとえば、1台のマシンにapacheやnginxを2個3個起動しようとすると、設定ファイルの場所を個別に変えたりとか、ポート番号が衝突するから手動で変えたりとか、名前ベースの仮想ホスト設定するとか面倒くさいことになる。 互換性試験のためバージョンの異なるapacheを同時に2個建てようとか思うとさあ大変。バイナリパッケージ管理システムへの反逆みたいな感じになるw

dockerの中に隔離されているapacheなどのソフトからは、設定ファイル類はいつもの場所にある(ように見せている)し、ポート番号はいつもの80で待っているので、rpmバイナリはそのまま利用できる。 ポート番号はdockerがポートフォワードする機能を持っていて、docker外部から49023へアクセスがあったらdocker内部の80に転送してくれるし、apacheからDB向け接続なども別途転送してくれる。

というわけで、1台のマシンの中にapache/nginxをそれぞれ10個でも20個でも建てても混乱が起きない(ような管理ソフトが作成できる下地ができた)。

docker-composeというDocker社のツールを使うと、複数の公式dockerイメージ(nginxとtomcat)を連携設定をdocker-compose.ymlに書いておいて、まとめて起動できる。 (普通はApacheの設定ファイルとTomcatの設定ファイル、文法がそれぞれ違うものに対して連携する設定を手で打ち込んでいたものだが。)

逆に、データセンタの中で空いている適当なマシンでdockerを走らせて(マシン間でIP:ポート転送するソフトは必要だが...実はもう付いてるw)も良いので、パワーが必要なクラウド方面でも有効利用できそうだ。

あとは、なんか良さげな管理ソフトがあれば、1台のマシンを限界まで有効活用したり、複数のマシンパワーを有効活用できたり、死んでしまったアプリを自動で別に建て直したりできるあたりが良い点。

悪い点は、docker用のファイルシステムイメージ(dockerイメージ)を作ったり、組み合わせを作ったりするのが面倒臭いwwことと、Linux限定であること(Windowsアプリは無理)、特殊訓練を受けた人がカリカリにチューニングした設定よりは要求リソースが大きく、パフォーマンスでも落ちる点。 ここはソフトで自動管理だから仕方ないし、5万台の設定だと人力チューニングするのも無理なので、コンピューティングパワーで押し切るところ。

以下のサイトに、ダウンロードできるdockerイメージが色々公開されている。

流行りモノだけあって、いろいろな会社がdockerイメージの公式版を登録しているようだ。

実際に使う際には、公式版のイメージがそのまま使えればよし、公式イメージにちょっと設定を加えて自作dockerイメージを作って使ってもよし、さらにdockerイメージを複数組み合わせて一気にシステム全体を作ってもよし、となる。

現状、バージョンアップが鬼のように高速で、ネット上の記事が数日でダメになる勢いを感じるので、割と茨の道っぽいところもあるww

Vagrantみたいに、コマンドラインからOSインストール画面を一切見ずにVMを立てたりもできるので、 生でOracle Virtual Box使うより楽なVagrantの代用品としてインスタンスを建てるのに使うのも良いかも。

p.s.

そういえば、Hyper-Vを有効にするとOracle Virtual Boxが使えなくなるって噂は本当なのだろうか...。 先にOracle Virtual BoxとVagrantをアンインストールしてからDocker for Windowsをインストールしたので 真実がわからん


■ 宇宙暦 2017.06.17

http://www.ceres.dti.ne.jp/~george/jdiaryB70601.html#20170617

2017.06.17(土) Docker tomcat 公式イメージ探索

Docker tomcat 公式イメージ探索

Tomcatの公式イメージから、8.0.44-jre7, 8.0-jre7, 8.0.44, 8.0 (8.0/jre7/Dockerfile) を見てみる。

Dockerfileは、dockerイメージをbuildするときのレシピというか設定ファイル。これに従ってdockerイメージ(積層型ファイルシステムと関連情報)が作られる。

FROM openjdk:7-jre

ベースにしてるのはopenjdkのdockerイメージ。openjdk:7-jreと書いてあれば、openjdkの公式イメージ使用でタグは7-jre。 余談だが、個人提供のイメージはhoge/openjdk:tag みたいに、/の左に個人名がつく。

EXPOSE 8080
CMD ["catalina.sh", "run"]

メインプロセス(pid=1)として実行されるのはcatalina.sh。 外部に晒すポートは8080指定か。AJPポート8009はデフォルトでは公開されてないのね。

apache/nginxからtomcatに振る場合は、URLで判定してreverse proxyにするのか。

ウチの自宅鯖の場合、Apacheからperl cgiアプリ複数/sh cgiアプリ複数/Tomcatアプリ複数をURLと拡張子見て色々起動しててデパート地下街みたいになってるけどww、 dockerの考え方に従えば、個々のアプリは全部個別のdockerコンテナにして、入り口にURLで振り分けるnginx置いた方が良いよね、ということか。

なるほど。

既存の自宅鯖に適用するの面倒だなぁコレw 個々のアプリの個別バージョンアップとか、個別アプリごとの有効化無効化はぐっとやりやすくなるのは間違いないけど。

FreeBSDでdocker使うのはLinux互換ABI機能を使ってzfsじゃないとダメとか色々大変そう。 Amazon AWSに借りているVPS鯖ではどうかな...。メモリ1GBしか積んでないぞ...。ぐぬぬ。Amazon AWSもっと安くしてくれよん。

Dockerイメージを走行させるサービス(dockerホスティング)は色々なクラウドサービスで提供してるから、そこに俺wiki(tomcatイメージベース)のdockerイメージ焼いてぶっこめばいいのか。

Tomcatのwarを置かせてくれるレンタルサービスってほとんど無いくらいマイナーだった(Tomcatはwar単位のサーブレットアプリの管理機能を持ってたけど、クラウドホスティング会社が扱うにはちょっと向いてなかった。落ちるときは道連れだったし。)けど、dockerイメージなら中の言語もバイナリパッケージ構成もなんでも良くて、待ち受けポートの話、DB接続の話、永続化するファイルシステムボリュームの話に単純化されるわけで、wordpressみたいなメジャーな奴だけでなく、変態マイナー言語使用のバイナリ構成でもホスティングサーバ上で走行を許されることになる。

最小限のOSバイナリ一式を含んで、pid=1に/bin/bashを指定されているdockerイメージなら、VMインスタンス代わりにもなるかも。 外部公開するWebサーバとかを建てるなら、nginxイメージとかtomcatイメージの方を使えばいい。

なんだか、話がずいぶんと簡単になったなぁ、という印象。


■ 宇宙暦 2017.06.21

http://www.ceres.dti.ne.jp/~george/jdiaryB70601.html#20170621

2017.06.21(水) FreeBSD 11.0-RELEASE-p9でdockerインストール

注意:FreeBSD版のdockerはdocker-freebsd-20150625で、2年ほどメンテナンスされていないようなので、まじめに使おうとしてはいけない模様。

上のDocker - FreeBSD Wikiを見たら、root file systemがzfsじゃなくても動かせそうだったので、ちょっと試してみる。 FreeBSD版dockerのコンテナドライバはjailらしい。


# zfsカーネルモジュールをロード。zfsはライセンスが違うのでカーネル内蔵にできない。
kldload zfs

# ファイルシステム上に4GBのファイルを作る。HDDだと1分くらいかかる
time dd if=/dev/zero of=/usr/local/dockerfs bs=1024K count=4000

# zfs pool を上の4GBファイル上に作る
zpool create -f zroot /usr/local/dockerfs

# zfs一覧表示。poolを作っただけだが、ファイルシステムも勝手に作られる。
zfs list
# 以下表示例
# NAME    USED  AVAIL  REFER  MOUNTPOINT
# zroot    55K  3.75G    19K  /zroot

# zpool一覧表示
zpool list
# 以下表示例
# NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
# zroot  3.88G    82K  3.87G         -     0%     0%  1.00x  ONLINE  -

# zfsでファイルシステムを作る。マウントポイント指定付き。
zfs create -o mountpoint=/usr/docker zroot/docker

# zfs一覧表示。/usr/dockerが増えている。
zfs list
# 以下表示例
# NAME           USED  AVAIL  REFER  MOUNTPOINT
# zroot          108K  3.75G    19K  /zroot
# zroot/docker    19K  3.75G    19K  /usr/docker
sysrc -f /etc/rc.conf zfs_enable="YES"

余談だが、zfsはzfs xxxコマンド(zfs listとか)を使った場合でも自動でマウントされる。

さらに余談だが、zfsは/etc/fstabを見ない。

pkg install docker-freebsd ca_root_nss
sysrc -f /etc/rc.conf docker_enable="YES"
service docker start
ssh root@n3050 ~ $ docker version
Client version: 1.7.0-dev
Client API version: 1.19
Go version (client): go1.8
Git commit (client): 582db78
OS/Arch (client): freebsd/amd64
Server version: 1.7.0-dev
Server API version: 1.19
Go version (server): go1.8
Git commit (server): 582db78
OS/Arch (server): freebsd/amd64
ssh root@n3050 ~ $

普通は https://hub.docker.com/explore/ Explore - Docker Hub をブラウザで見るのが良い。

ssh root@n3050 ~ $ docker search centos
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                                 The official build of CentOS.                   3409      [OK]
jdeathe/centos-ssh                     CentOS-6 6.9 x86_64 / CentOS-7 7.3.1611 x8...   72                   [OK]
nimmis/java-centos                     This is docker images of CentOS 7 with dif...   26                   [OK]
gluster/gluster-centos                 Official GlusterFS Image [ CentOS-7 +  Glu...   19                   [OK]
kinogmt/centos-ssh                     CentOS with SSH                                 15                   [OK]
egyptianbman/docker-centos-nginx-php   A simple and highly configurable docker co...   9                    [OK]

実行結果。あれ。エラーで止まる。

ssh root@n3050 ~ $ docker pull centos
latest: Pulling from centos
6b4988a50482: Extracting [========>                                          ]  11.7 MB/70.49 MB
12bb2fef2ea5: Download complete
3bea5ca0a170: Download complete
Pulling repository centos
Repository not found
ssh root@n3050 ~ $

実行結果。ダウンロードできた。

ssh root@n3050 ~ $ docker pull centos:6
6: Pulling from centos
bc115598a151: Pull complete
061d0bd4322e: Pull complete
21b7bbb1e4be: Pull complete
Digest: sha256:f94fda3b0eaf5858fe27e57838bc0a041633eadbc0d42154c6115c72a815e7a1
Status: Downloaded newer image for centos:6
ssh root@n3050 ~ $
docker run -t -i centos:6 /bin/bash

んんんw uname -a 表示が謎だww Linux 2.6.32 FreeBSD 11.0-RELEASE-p9 って何だw

ssh root@n3050 ~ $ docker run -t -i centos:6 /bin/bash
[root@ /]# uname -a
Linux  2.6.32 FreeBSD 11.0-RELEASE-p9 #0: Tue Apr 11 08:48:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@ /]# cat /etc/centos-release
CentOS release 6.9 (Final)
[root@ /]#
ssh root@n3050 ~ $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
409d009cdde5        centos:6            "/bin/bash"         31 seconds ago      Up 29 seconds                           compassionate_pare
ssh root@n3050 ~ $
[root@ /]# exit
exit
ssh root@n3050 ~ $
ssh root@n3050 ~ $ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
409d009cdde5        centos:6            "/bin/bash"         3 minutes ago       Exited (0) 26 seconds ago                       compassionate_pare
ssh root@n3050 ~ $

コンテナIDの指定では、他のコンテナと区別ができれば、先頭数文字タイプすれば良い模様。

ssh root@n3050 ~ $ docker rm 409
409
ssh root@n3050 ~ $

起動くらいは普通にできてワロタw

イメージ名 centos:6って、Linux用のバイナリファイルシステム一式だよなぁ...。 FreeBSDのLinux 64bit binary comapt機能おそるべし。

linux-c6-6.8_4パッケージを使って、CentOS 6環境を作る個々のrpmをインストールしなくても、バイナリイメージでファイルシステム丸ごと拾って隔離して使えるので、これがガチで動いたら意外に便利かもしれんね...。

docker execは動かないらしいので、真面目に使おうとすると大変そうだけどw


■ 宇宙暦 2017.06.22

http://www.ceres.dti.ne.jp/~george/jdiaryB70601.html#20170622

2017.06.22(木) FireFox 54 1ウィンドウ 1プロセス で処理する高速化技術が投入された模様

ウチだとノートン先生のアドオンが邪魔して有効になってなかった。

タブをたくさん開いてても複数プロセス処理にはならず、どうも別ウィンドウを開くとプロセスが増えるような動きをするっぽい。


日記ファイルリスト


Copyright(c) 1996-2017 George(小濱 純). All rights reserved.
私の作成したページへのリンクはご自由にどうぞ。
このページに間違いや要望などがありましたら george@yk.rim.or.jp まで御連絡ください。
メール本文に 6020-5440-3372 と書いて頂くと、ウチのSPAMフィルタを通過できます(2009-06-14から2017-12-31まで)。

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索]

home: <george@yk.rim.or.jp> or <george@ceres.dti.ne.jp>
(I am using white list SPAM filter. To avoid it, please write 6020-5440-3372 in mail body. This key word is valid since 2009-06-14 until 2015-12-31.)