質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

2267閲覧

Dockerコンテナ上でpidファイルを作成できない

Divided_by_Zero

総合スコア42

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1グッド

0クリップ

投稿2016/07/16 08:24

編集2016/07/16 14:32

パソコン初心者なので温かい目で見ていただけると幸いです。

20GB SSDのホストマシン上にDockerコンテナを幾つか立てており、その内の一つのコンテナで問題が起きたため、質問させていただこうと思いました。

そのコンテナでは、起動時にinit.shというスクリプトを実行するようにしていました。

bash

1#!/bin/sh 2 3/etc/init.d/php5-fpm start 4service nginx start 5while true; do 6 python hoge.py 7 sleep 300 8done

nginxでは、httpsサービスを立ち上げるようにしており、hoge.pyが諸事情から5分に1回アクセスするようにしていました。
コンテナ監視ツールにて、ログにhoge.pyのTracebackが記録されており、確認したところ、

hogeuser@hogepiyofuga:/# pstree init.sh---sleep

のようになっていました。
想定では、以下のようになるはずでした

hogeuser@hogepiyofuga:/# pstree init.sh---nginx ---php5-fpm ---sleep

なぜかと思い、調べてみると、nginx statusで起動していないことが確認できました。

hogeuser@hogepiyofuga:/# service nginx status * nginx is not running

nginxコマンドでも起動しようとしたところ、原因と思しき出力を確認できました

hogeuser@hogepiyofuga:/# nginx nginx [emerg] open() "/run/nginx.pid" failed (28: No space left on device)

どうやら、nginx.pidの置かれているファイルシステム上の空き容量が無いためにnginx.pidをopen() (ファイルが無いため、まず新規作成する動作になると思われる)しようとしても失敗してしまったものとみられます。

試しにtouchコマンドでnginx.pidを作成しようと試みると以下のようになりました。

hogeuser@hogepiyofuga:/run# touch nginx.pid touch: cannot touch 'nginx.pid': No space left on device

先ほどと同じことを言ってきました。

このような現象に遭遇した場合、どのように対処すれば良いか、ご教授お願いいたします。

[2016/7/16 23:23 追記]

実際に、/runにて容量を確認してみました。(通常の出力だと見づらくなってしまったため、少し編集しています)

hogeuser@hogepiyofuga:/run# df -h . |Filesystem |Size| Used| Avail| Use%| Mounted on| |-----------------------------|----|-----|------|-----|-----------| |/dev/mapper/docker-*****... |10G | 10G | 24k | 100%| / |

余裕が24kあるにもかかわらず、100%となっています。
使用率が100%なので、no space left on deviceとなるのも納得ですが、pidファイルを作成するぐらいなら24kで事足りそうな気もするのですが、ダメなのでしょうか・・・

Ryo👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

解決とは言えないですが、とりあえず他の手段を用いて乗り切ったので、時間も経ってしまったこともあり、この質問は閉じさせていただきます。
お騒がせしてしまい、申し訳ありませんでした。

投稿2016/09/07 23:31

Divided_by_Zero

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

メッセージ通りならディスクに空きがないってことらしいですが…
とりあえず、なんかクソでかいファイルがないか
確認してみてはいかがでしょうおか。

投稿2016/07/16 11:21

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Divided_by_Zero

2016/07/16 11:37

ホストマシンでディスクに空きがないということであれば分かるのですが、Dockerコンテナには必要なライブラリと2つのスクリプトを追加した程度なので、特別大きなファイルはありませんでした
Divided_by_Zero

2016/07/16 14:16

申し訳ありません。 投稿時にお伝えできず申し訳ないのですが、頂いたURIの記事は既に見ておりました。 ですが、不要なイメージ及びコンテナは追加しないようにしています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問