14
results
for docker
-
前回、docker runででnginxとphp-fpmを起動する手順をブログに書きました。 今回は、Docker初心者の私が、Dockerfileを使って基本的なイメージを作成した上で、コンテナを起動する手順をまとめておきます。 手順 大まかには下記手順で進めていきます。 手順を確立する Dockerfileを作成する イメージをビルドする docker runを実行する 1. 手順を確立する まず、いきなりDockerfileを作りだすと失敗するので、下記を読んでからはじめると良さそうです。 http://qiita.com/pottava/items/452bf80e334bc1fee69a 上記サイトはとても参考になることが書かれていました。 というのもイメージのビルドにはやはり数十秒から数分かかりますので、自分がベストだという流れのイメージを持たないままDockerfileを作り出すと失敗します。 最初に、上記サイトにも書かれているとおりにdocker runでコンテナの中に入った上で、必要なパッケージを調べたり、依存するディレクトリやファイルを確認しておくのが良さそうです。 2. Dockerfileを作成する 先日作成したCentOSにPC1のpuppet-agentが含まれるDockerfileを作成した手順を例にします。 最初からpuppet-agentが含まれるCentOSのイメージがほしかったので作成しました。 ※puppet-agentのダウンロード時間分、時間の短縮につながります。 $ vim Dockerfile FROM centos:7 MAINTAINER inamuu "https://github.com/kzm0211/" RUN rpm -U http://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm \ && yum -y -q install puppet-agent \ && rpm -e puppetlabs-release-pc1 \ ;\ yum clean all CMD ['/bin/bash'] FROMでベースになるイメージを指定します。 つぎに、MAINTAINERを指定します。ここはメールアドレスを書いたりする人もいるようです。 そして、実行するコマンドを記述します。 最後に、このプロセスが実行するコマンドを記載します。 ちなみに、yum clean allとかしているのは割りとDockerfileの常套手段で、少しでもイメージが小さくなるように不要なものは削除するのが好ましいようです。 3. イメージをビルドする イメージをビルドします。 Dockerfileのあるディレクトリで下記コマンドを実施します。※最後に “.”があるのが注意点です。 $ docker build -t kzm0211/centos7-puppet-agent .
-
Docker初心者の私がDockerの理解を深めるために実施したことを、これから何回かに渡ってブログに残していきます。 今回は、Dockerfileなどを使わずに、nginx+phpfpm環境をDockerで作る手順です。 phpfpmがバンドルされているようなnginxのイメージもあると思いますが、今回は基本的な理解を深めるために、nginxとphpfpmを別のコンテナにして作成します。 環境 docker for mac 1.13 今回はdocekr for macを使っていますが、基本的なdocker runのコマンド等を使用しているため、他のバージョンやOSでも同じように実行できるかと思います。 imageのダウンロード まず、nginxとphp-fpmのイメージをダウンロードします。 どういった名前のイメージがあるかは docker searchを使うと良さそうです。 $ docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 5195 [OK] OFFICIALが[OK]ですと公式イメージですので、最初は公式イメージを利用すると良さそうです。 イメージのダウンロードは docker pull を使用します。 $ docker pull nginx $ docker pull php:5.6-fpm イメージ名のみですと、そのイメージの最新版を取得します。 例えば、 $ docker pull php ですと、PHP7を含んだイメージがダウンロードされます。 この場合、モジュール版でApacheだったりするので、上記のように自分の希望する環境のイメージをタグで指定すると良さそうです。 ファイルの作成(php) nginxの設定ファイルとphpinfo用のファイルを置くディレクトリを作成します。 コンテナの中に置くこともできますが、変更が多いファイルはコンテナ外に置くのがDockerの理想とされています。 今回は、nginxの設定ファイルと、PHPファイルを外に置くようにします。 $ mkdir nginx $ cd nginx $ mkdir -p etc/nginx/conf.docker Created
31 Jan 2017 -
通常、docker-compose up -dをすれば、docker-composeで指定されたサービスに紐付くコンテナが起動すると思います。 ところが、なぜかdocker-compose upでコンテナが起動しても、すぐに落ちてしまうことがありました。 具体的には下記のような状態になります。 $ docker-compose up Name Command State Ports ------------------------------ test /bin/bash exit 0 しかし、下記のようにdocker runでは起動できる。 ※このdocker-composeではDockerfileをbuildするようにしていた。 $ docker run --name test -ti centos:latest /bin/bash 分かる人にはこれだけみてすぐわかる方もいると思いますが、docker初心者の私はしばらくわからず色々調べてやっと解決することができました。 参考サイト docker-compose.ymlの対象のコンテナに下記を追加してあげるだけでした。 tty: true 要は**/bin/bash**を実行しているので、ttyを割り当てないと、継続して起動できないということでした。 確かにdocker run では-t つけてた…。 docker runのリファレンスにも同様のことが記載されていて、 (シェルのような)インタラクティブなプロセスでは、コンテナのプロセスに対して tty を割り当てるために、 -i -t を一緒に使う必要があります。 たしかに、なるほど。という気持ちでした。 この辺はいつも意識しないので、言われてみればそうかという感じです。 こうやってDockerの癖みたいのがわかってくると、かなり楽しいです。 また、一つDockerの気持ちが少しわかった日でした。 最近この記事へのアクセスが増えてきたので、直近であった事例を追記。 会社の人が、docker execで起動するのに、docker-compose up -dで固まる(?)ような症状になったことがありました。 この時はどうやら名前解決に時間がかかっていたようで、MacのDNS参照先を変更することで解決しました。 具体的には、 システム環境設定>ネットワーク>接続が一番上のネットワークの詳細>DNSに8.8.8.8を追加。 ※8.8.8.8はGoogleのPublicDNSで、もう一つ8.8.4.4を追記しておくと良いです。他には1.1.1.1はCloudflare事業者が公開しているPublicDNSなので、8.8.8.8と8.8.4.4と1.1.1.1を追加しておくと良いかもです。 下記はDockerを学びはじめたときに読んで基本が学べた本です。おすすめです。 下記は最近読んで良かったDocker本です。こちらも良本です。
-
今日、会社で使っているDockerが、サーバー再起動後からサービスが起動しないことがありました。 その際に実施した対処方法です。 状況 $ sudo service docker start としても、サービスが起動せず、下記のようなエラーがログに出力されてました。 $ sudo cat /var/log/upstart/docker.log WARN[0000] /!\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\ INFO[0000] [graphdriver] using prior storage driver "aufs" INFO[0000] API listen on [::]:2375 INFO[0000] API listen on /var/run/docker.sock INFO[0000] Firewalld running: false FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints ブリッジ接続用のネットワーク設定がおかしくなっているようなエラーで、サーバーをもう一度再起動しても解消せず。docker Created
16 Jan 2017