no_picture

Dockerコンテナの中からDockerコンテナを動かす話をした - LT駆動19

LT駆動開発19で「Docker >>= Docker」という話した。 「どっかーばいんどどっかー」と読む。 cronの中でDockerコマンドがつかいたかった。そのcrondはDockerホストでは当然動かしたくない。Dockerコンテナ内におきたい。 Remote APIでたたいてもいいけど、ちょっとしたものならコマンドが楽でよい。 dockerが使えるイメージはdockerがある。docker run サブコマンドは $ docker run イメージ コマンド なので、イメージを節約して、dockerイメージをつかいまわすと、 $ docker run docker docker run docker ls` という不思議な呪文になった。 実際はDockerfileでRUNで指定したりするので、 $ docker run docker docker run hoge とかですんだり、そもそもdocker run hogeで済むようにつくることになるだろう。 ちなみに $ docker run docker "docker run docker ls"` だとうまくうごかない。 $ docker run docker bin/sh -c "docker run docker ls" とすると良い。 sh -c の中でdockerコマンドで複数のプログラムをうごかしてパイプで処理をつないだりもできる。 そういう話をしました。 あと一番大事なことだけど、Docker Hostが動いているコンピュータ上のdockerコマンドは/var/run/docker.sockをつかって通信しているようなので、-v /var/run/docker.sock:/var/run/docker.sockを共有してやると、コンテナ内からHostと簡単に通信できる。 これって安全なのかはよくしらない。 Dockerの中でDockerを起動すると Docker Docker A になりそうだけど、Docker

no_picture

LT駆動開発11で「 dockerをどこかで使う」という話をした

LT駆動開発11でライトニングトークをしました。 LT駆動開発11はオープンセミナー2015@広島の懇親会内で行われました。 そういえば、「タイトルがつまらないと」言われましたが、Dockerなんていますごく盛り上がってるのにキャッチーなタイトルつけたら死んでしまいます。 まさかり怖い。 Dockerいろいろつかってますが、すごく楽しいです。 Dockerつかってやりたいことも結構あります。 Docker自体はまだ使わないだろうとおもってたんですが、ちょっとDocker使いたくなってどっぷり使っています。 「Railsのアプリを開発するのにRubyをインストールする必要がなかったり、production環境でRailsアプリを動かすのにRubyやnodejsをインストールする必要がなかったり」 その辺すごく良いとおもったので、そのあたりを強調した話をしました。 CI環境で使えないミドルウェアがあっても安心っすね。Werckerがあるけど。 僕自身そんなに頭は良くないので、シンプルに考えることができるようになるプロダクトは好きです。 そのひとつはDockerでしょう。「Gitのコミットしてブランチが切っていれば良い」みたいな安心感があります。 そういえば、このスライドの内容は遊びでつくってるサービスでもやってるのでご自由に閲覧ください。 Github Parkmap-h/parkmap そういえば、時間があまらなかったので、もう一個スライドがあまってるのでどう消化するか悩み中です。(どうでもいい)

no_picture

DockerでCMSの会 Vol.2に挑む - 準備編

CMSの会 Vol.2というイベントが2月7日(土)に広島で行われるらしい。 a-blog CMS,concrete5,Wordpressの3つのCMSを使って、同一のウェブサイトを作成して、個々の長所短所を学べるらしい。 こっちも確認しておくとよいだろう。 川谷制作所 » CMSの会Vol.2をやります さて、参加するかどうかは不明だが、参加条件に環境を準備をしてくる必要がある。 どうやって環境を用意するかと考えた結果。「ここはDockerしかない」と思い、環境を整えてみた。 実際に参加してみるとどんな問題にぶつかるかわからないので、参加する場合に参考にする場合は注意しておいたほうが良いでしょう。 事前にテキスト的なものがいただけたら確認はできるかもしれないが。 さて本題。 dockerがインストールされていれば以下のコマンドで環境を構築できる。 Windowsは想定していない。(そろそろOSが欲しいが空いてる64bitマシンもない) docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD="secret" eiel/mysql:concrete5 docker run -d --name my-wordpress --link my-mysql:mysql -p 8001:80 -v `pwd`/wordpress:/var/www/html eiel/wordpress docker run -d --name my-concrete5 --link my-mysql:mysql -p 8002:80 -v `pwd`/concrete5:/var/www/html eiel/concrete5 docker run -d --name my-acms --link my-mysql:mysql -p 8003:80 -v `pwd`/acms:/var/www/html eiel/acms イメージをダウンロードするので時間がかかります。 二度目からはダウンロードの必要がないのでだいぶはやくなります。 wordpress concrete5 acms の3つのディレクトリが作成されます。 それぞれのCMSの作業ディレクトリとなっていて必要なものが準備されています。 CMSの動作を見るにはdockerの動いているホストのそれぞれのポートにアクセスすればOKです。 boot2dockerを使っている場合はまずIPを確認します。 $ boot2docker

no_picture

Mac で docker 起動できない時。具体的にはDOCKER_HOSTを指定してない時

DOCKER_HOST を指定しとけって話。 個人的には Docker を外部マシンで起動して使えないか検討したいが、ここでは関係ない。 Macだと VirtuaBox 上で docker が動くので DOCKR_HOST を設定してないといけない。 その状態で使おうとすると下記のようになる。 http:///var/run/docker.sock/v1.13/containers/create: dial unix /var/run/docker.sock: no such file or directory boot2docker up を実行すると設定すべき値を確認できる。 $ boot2docker up Waiting for VM to be started... Started. To connect the Docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://xx.xx.xx.xx:2375 表示された export DOCKER_HOST=tcp://xx.xx.xx.xx:2375 をコピペしとけばいい。 設定ファイルで export しとけって。

no_picture

Docker Hub を少し試してきた

Docker 初心者です。 難しいことはよくわかりません。 いまさら Docker Hub で遊んだ。 ちなみに #すごい広島 60 で遊んでたことらしいです。 今回は何をしたのか docker さえインストールされていれば、以下のコマンドを実行できます。 $ docker run eiel/banner ###### ####### ##### # # ####### ###### # # # # # # # # # # # # # # # # # # # # # # # # # # ### ##### ###### # # # # # # # # # # # # # # # # # # # # # ###### ####### ##### # # ####### # # $ docker run -e BANNER_ENV="happy hacking" eiel/banner # # # ###### ###### # # # # # # # # # # # # # # # # # # # # # # ####### # # ###### ###### # # # ####### # # # # # # # # # # # # # # # # # # # # ##### # # ### # # ##### # # # # # # # # # ## # # # # # # # # # # # # # # # ####### # # # ### # # # # # #### # # ####### # # # # # # # # # # # # # # # # # # # ## # # # # # # ##### # # ### # # ##### BANNER_ENV を設定すると出力を変えられます。 これの何が嬉しいかというと、banner コマンドの実行環境が簡単に用意できることだと思います。 redmine を実行するのに、 GitLab を実行するのに、Wordpressを実行するのに docker run でリポジトリ名を指定するだけでできるとしたらとても嬉しいと思います。 (実際にはDbのデータどうすんの?とかある気がするけど、どうするのがいいのかよく知らないけど) 定時実行するスクリプトが Docker さえインストールしていれば実行できたりするわけですね。 Docke Hub はどこで使ってるのか eiel/banner というイメージが Docker Hub にあいてあるので、docker run eiel/banner を実行すると、まだローカルにイメージがなければ取得して実行できます。 それだけ。 このイメージはここにあります イメージを作成するのに Dockerfile をつかっており、コードは GitHub に up してあります。 FROM eiel/gentoo-sample:banner MAINTAINER Tomohiko Himura <eiel.hal@gmail.com> ENV BANNER_ENV docker CMD banner $BANNER_ENV このファイルをカレントディレクトリに置いて docker build -t banner .