2018年7月30日月曜日

dockerのゴミ掃除

dockerは手放せないですが、色々ゴミが溜まりがちなので定期的なお掃除が必要です。
よく使うものを列挙しておきたいと思います。

 動いてないコンテナをごっそり削除
$ docker container prune
 動いてないコンテナを削除
$ docker rm コンテナ
利用していないイメージの削除(実際に実行すると割と困ると思うので推奨しません)
$ docker image prune
利用していないイメージの削除(ふつうはこっち)
$ docker rmi イメージ
コンテナ消したのにブリッジネットワークだけ残ってしまった残念な時(buildを途中で止めるとゴミが残る???)
"no available IPv4 addresses on this network's address pools: bridge"とかってエラーが出てしまった時などに・・・・
$ docker network disconnect -f bridge コンテナ

 ローカルのレジストリのゴミ掃除(こんなこと普通はしないと思うけどゴミだらけになって容量的にきつくなったタイミングでたまに実行している・・・・・ダサ)
#当然ながら、pullできねーよってツッコミを受けることになります。

$ rm -rf /hoge/docker/registry/v2


 他にも思い出したら追記します・・・・

2018年7月5日木曜日

Dockerfile に ADD or COPY してしまった分の容量増がどうしても気になるとき

どうもたなじゅんです。

久しぶりの技術ネタでの投稿です。

Dockerfile に、ADD や COPY を書かざるを得ない事情を持たれている方は少なからずいらっしゃると思います。(特に公開URLから素直にダウンロードできないような場合)

ADD や COPY で書かれたファイルの容量は、Docker の仕組み上、その後そのファイルを削除したとしても容量は減りません。(レイヤが増えてしまった後に消してもダメなので)

割り切れるサイズなら良いのですが、ADD/COPY するファイルがギガ単位だったりすると流石に無視するのは難しいのではないかと思います。

そんな時に有効なオプションとして、--squash オプションを付与することで Dockerfile 内に作成されるレイヤを一つに纏める(押しつぶす)ことができます。

例えば、EDB Postgres の場合であれば、


FROM centos:latest

ENV WEBUSERNAME=ほげ(入力してね)

ENV WEBPASSWORD=ぱすわーど(入力してね)
 

COPY edb-as10-server-10.x.x-1-linux-x64.run .

RUN set -x && \
chmod +x edb-as10-server-10.x.x-1-linux-x64.run && \
sync && \
./edb-as10-server-10.x.x-1-linux-x64.run --mode unattended --enable-components server,commandlinetools --disable-components pgadmin4,stackbuilderplus --superaccount enterprisedb --serviceaccount enterprisedb --servicename edb-as-10 --prefix /opt/edb/as10 --datadir /opt/edb/as10/data --xlogdir /opt/edb/as10/data/pg_wal --superpassword enterprisedb --serverport 5444 --locale ja_JP.utf8 --create_samples no --server_utilization 33 --workload_profile oltp --webusername $WEBUSERNAME --webpassword $WEBPASSWORD && \
rm -f edb-as10-server-10.x.x-1-linux-x64.run 


EXPOSE 5444
 
 のような Dockerfile があるときに、docker build するだけだと、edb-as10-server-10.x.x-1-linux-x64.run の分は普通に image の容量としてそのまま残ってしまいます(COPY のレイヤーと、RUN の中でファイルを rm した時のレイヤーが異なるためです)。

このような場合に、squashオプションを使うことで、レイヤーを一つにまとめることが出来、結果として容量を削減することが可能です。

$ docker build --squash=true -t edb .

みたいにオプションを付けるだけ。
ちなみに、docker 起動時に、"--experimental=true" オプションが必要です。
ubuntu であれば、/etc/default/docker の DOCKER_OPTS あたりに追加してください

デメリットとしてはレイヤーを纏めた結果として image の履歴は追うことが出来なくなりますので、ご注意ください。

余談となりますが、Dockerfile 内で sync を掛けているのは、それをしないと実行権限が即座に反映されなかったためです。苦笑
Dockerfile で直前のコマンドが反映されていないような場合によくやります。。。。

※参考
https://qiita.com/RyoMa_0923/items/193d2c18addc240c04b5

2018年7月4日水曜日

ダイソー300円スピーカーのスピーカーユニットと100均すのこを流用してエンクロージャーを自作@試作品

お久しぶりです。

弟子からブログ更新せよと指令を受けたので、またどうでも良いネタ書きます。(仕事ネタ書けよおい)

ダイソーの300円スピーカーのコスパが方々で話題になっており、売り切れ続出との噂・・・・ですが、様々な方たちがエンクロージャー自作に花を咲かせており楽しそう・・・・ということで便乗してみることにしました。

参考にさせていただいたサイト 


スピーカーユニットはフルバンドらしく35㎐~20kHzと書いてあるけど、5㎝のユニットなので全く信用はしないw
が、パッシブラジエーター方式にして低音補強を試みる

パッシブラジエーター????


って人はこの辺読んでください。
バスレフの音は余り得意じゃない(*1)ので、個人的にはパッシブラジエーターかバックロードホーンかって選択肢になるんですが、持ち歩けることを優先するとパッシブラジエーター形式一択となります。(という主観です)

(*1)そもそも、スピーカーユニット小さいんだから、最低共振周波数以下の減衰とか関係ないじゃんって言われるとぐうの音も出ないんですが、ここでは音量だけの話をしているわけではないです・・・・

この企画でやりたいこと(全体編)

  • エンクロージャー交換の効果を知る
  • パッシブラジエーター化して低音を補強
  • 持ち歩けること
  • モバイルバッテリーを内蔵する
  • 木製
  • アンプをPAM8430に交換
  • Bluetooth化

 試作品でやりたいこと(今回の範囲ですね)

  • エンクロージャー交換の効果を知る
  • パッシブラジエーター化して低音を補強
上記2点以外は試作品では諦める(時間を掛けないことを優先事項とするw)し、寸法ずれとかは余り気にしない・・・・・

試作品に必要なもの 

  • 300円スピーカー(アンプは元々付いていたものを流用)
  • 100円すのこ
  • 木工用ボンド (すのこの接着用)
  • 瞬間接着剤かホットガン
  • クランプ(万力)(木工用ボンドで接着時に圧着に利用)
  • パッシブラジエーター用の振動板
  • 穴あけ工具(電動ドリル・ホールソー50mm(スピーカーユニット)、38mm(こちらはパッシブラジエーターの振動板サイズに依存)
  • のこぎり(丸のこ推奨)
  • 糸のこぎり(パッシブラジエーターが円形ならホールソーだけでOK) 
  • ニス・はけ
こんなもんだったはず・・・・・

パッシブラジエーター用の振動板には今回はこちらを使いました。
https://www.amazon.co.jp/gp/product/B0757LKKRR/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

完成

えっ・・・・・作成途中の経過とか無いの?
はい。ありません。書く時間が足らなくなりましたwwwwwww


左が300円スピーカー。右側が作成したもの。す・・・寸法が・・・・


所感

  • エンクロージャーをちゃんと作ったからか音質が改善した
  • 総音量はバスレフ方式からパッシブラジエーター方式に変わったことで多少小さくなった(それでも十分な音量が出ています)
  • 低音は改造前よりも出ているし、パッシブラジエーターも振動はしているけど、思っていたよりもパッシブラジエーターの振動幅は小さい(サブウーファーとかでガシガシ動くイメージとは違う。小さいから仕方ない?)
パッシブラジエーターを背面に枚数足した方が良い・・・・?別の振動板に変える??少し考えます。
いずれにしても音質は確実に改善するのでお勧めですよ。

音量を最大にすると、音質の改善ははっきりと分かります。背面にボリュームのパーツを取り付けるために穴が開いているのですが、そこから音が漏れているのは仕方ないけど少し気になるので改善点かもしれません。

追記(次回予告)


次回は、パッシブラジエーターを3発(裏面のスピーカーユニット裏にそれぞれ1枚ずつ追加)にして試してみたいと思います。

2018年3月22日木曜日

WildFly12 を起動してみたよ。

docker run するだけで試せるのは良い世の中になりました。
起動メッセージには、12.0.0.Final が起動しているよってなってるけど、welcome ページを参照すると「Your WildFly 11 is running.」・・・・ですって。苦笑
バグ?
WildFly 12 で、EE8 したらしいので、少しずつ追いかけてみます。
$ docker pull jboss/wildfly
Using default tag: latest
latest: Pulling from jboss/wildfly
5e35d10a3eba: Pull complete
7a2fa01e4d40: Pull complete
e7494fe8235d: Pull complete
e0f510da7606: Pull complete
c03649af48fc: Pull complete
Digest: sha256:100353f23980bdaf24026760efbfb23b17272410fc851ce3690c27b7a9536eab
Status: Downloaded newer image for jboss/wildfly:latest
$ docker run -p 20080:8080 -it jboss/wildfly /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0
=========================================================================
  JBoss Bootstrap Environment
  JBOSS_HOME: /opt/jboss/wildfly
  JAVA: /usr/lib/jvm/java/bin/java
  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true
=========================================================================
11:20:45,716 INFO  [org.jboss.modules] (main) JBoss Modules version 1.7.0.Final
11:20:45,997 INFO  [org.jboss.msc] (main) JBoss MSC version 1.3.2.Final
11:20:46,007 INFO  [org.jboss.threads] (main) JBoss Threads version 2.3.1.Final
11:20:46,133 INFO  [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: WildFly Full 12.0.0.Final (WildFly Core 4.0.0.Final) starting
11:20:47,639 INFO  [org.jboss.as.controller.management-deprecated] (Controller Boot Thread) WFLYCTL0028: Attribute 'security-realm' in the resource at address '/core-service=management/management-interface=http-interface' is deprecated, and may be removed in a future version. See the attribute description in the output of the read-resource-description operation to learn more about the deprecation.
11:20:47,670 INFO  [org.wildfly.security] (ServerService Thread Pool -- 19) ELY00001: WildFly Elytron version 1.2.2.Final
11:20:47,704 INFO  [org.jboss.as.controller.management-deprecated] (ServerService Thread Pool -- 29) WFLYCTL0028: Attribute 'security-realm' in the resource at address '/subsystem=undertow/server=default-server/https-listener=https' is deprecated, and may be removed in a future version. See the attribute description in the output of the read-resource-description operation to learn more about the deprecation.
11:20:47,789 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
11:20:47,805 INFO  [org.xnio] (MSC service thread 1-4) XNIO version 3.6.2.Final
11:20:47,812 INFO  [org.xnio.nio] (MSC service thread 1-4) XNIO NIO Implementation Version 3.6.2.Final
11:20:47,864 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 36) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.4)
11:20:47,874 INFO  [org.jboss.as.jaxrs] (ServerService Thread Pool -- 43) WFLYRS0016: RESTEasy version 3.5.0.Final
11:20:47,876 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 42) WFLYCLINF0001: Activating Infinispan subsystem.
11:20:47,896 INFO  [org.jboss.as.jsf] (ServerService Thread Pool -- 48) WFLYJSF0007: Activated the following JSF Implementations: [main]
11:20:47,911 INFO  [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 5.0.5.Final
11:20:47,920 INFO  [org.jboss.as.connector] (MSC service thread 1-8) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.4.7.Final)
11:20:47,949 WARN  [org.jboss.as.txn] (ServerService Thread Pool -- 58) WFLYTX0013: The node-identifier attribute on the /subsystem=transactions is set to the default value. This is a danger for environments running multiple servers. Please make sure the attribute value is unique.
11:20:47,954 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 50) WFLYNAM0001: Activating Naming Subsystem
11:20:47,959 INFO  [org.wildfly.extension.io] (ServerService Thread Pool -- 41) WFLYIO001: Worker 'default' has auto-configured to 8 core threads with 64 task threads based on your 4 available processors
11:20:47,957 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 57) WFLYSEC0002: Activating Security Subsystem
11:20:47,977 INFO  [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=5.0.2.Final
11:20:47,994 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 60) WFLYWS0002: Activating WebServices Extension
11:20:48,002 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-4) WFLYUT0003: Undertow 2.0.0.Final starting
11:20:48,004 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-4) WFLYJCA0018: Started Driver service with driver-name = h2
11:20:48,066 INFO  [org.jboss.as.naming] (MSC service thread 1-3) WFLYNAM0003: Starting Naming Service
11:20:48,088 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-4) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
11:20:48,241 INFO  [org.jboss.as.ejb3] (MSC service thread 1-6) WFLYEJB0481: Strict pool slsb-strict-max-pool is using a max instance size of 64 (per class), which is derived from thread worker pool sizing.
11:20:48,242 INFO  [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0482: Strict pool mdb-strict-max-pool is using a max instance size of 16 (per class), which is derived from the number of CPUs on this host.
11:20:48,360 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 59) WFLYUT0014: Creating file handler for path '/opt/jboss/wildfly/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]']
11:20:48,366 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0012: Started server default-server.
11:20:48,372 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-4) WFLYUT0018: Host default-host starting
11:20:48,552 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-3) WFLYUT0006: Undertow HTTP listener default listening on 0.0.0.0:8080
11:20:48,674 INFO  [org.jboss.as.ejb3] (MSC service thread 1-3) WFLYEJB0493: EJB subsystem suspension complete
11:20:48,837 INFO  [org.jboss.as.patching] (MSC service thread 1-6) WFLYPAT0050: WildFly Full cumulative patch ID is: base, one-off patches include: none
11:20:48,865 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
11:20:48,885 WARN  [org.jboss.as.domain.management.security] (MSC service thread 1-2) WFLYDM0111: Keystore /opt/jboss/wildfly/standalone/configuration/application.keystore not found, it will be auto generated on first use with a self signed certificate for host localhost
11:20:49,124 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-6) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/wildfly/standalone/deployments
11:20:49,225 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-6) WFLYUT0006: Undertow HTTPS listener https listening on 0.0.0.0:8443
11:20:49,325 INFO  [org.jboss.ws.common.management] (MSC service thread 1-2) JBWS022052: Starting JBossWS 5.2.0.Final (Apache CXF 3.2.2)
11:20:49,450 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
11:20:49,455 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
11:20:49,464 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
11:20:49,465 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 12.0.0.Final (WildFly Core 4.0.0.Final) started in 4121ms - Started 292 of 513 services (308 services are lazy, passive or on-demand)