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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

nginx

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Docker

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

Q&A

解決済

1回答

15343閲覧

Docker run や exec コマンドにつける /bin/bashや/sbin/initについて

suvera

総合スコア106

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Gunicorn

Gunicorn (Green Unicorn)は、Rubyのunicornをベースに開発されたUNIX向けのPython製HTTPサーバです。他のライブラリとの依存関係がないため、容易にインストールして使用できます。

nginx

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Docker

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

0グッド

0クリップ

投稿2016/12/12 05:21

###前提・実現したいこと
dockerのrunコマンドやexecコマンドで利用する
/bin/bash/sbin/initが何を意味しているのか教えてください。

また、下記に記す問題にどう関係していて
どのように対処するのが良いのか教えてください。

###発生している問題・エラーメッセージ
コマンドを入力してもすぐにはエラーが現れず
一見動いているようにみえるのですが
exitでコンテナから抜ける際にエラーが現れます。

[root@108eea65ff9c apps]# gunicorn runFalconAPI:app --config guniconf.py [2016-12-12 05:18:20 +0000] [668] [INFO] Starting gunicorn 19.6.0 [2016-12-12 05:18:20 +0000] [668] [INFO] Listening at: unix:/run/gunicorn.sock (668) [2016-12-12 05:18:20 +0000] [668] [INFO] Using worker: sync [2016-12-12 05:18:20 +0000] [700] [INFO] Booting worker with pid: 700 [2016-12-12 05:18:20 +0000] [701] [INFO] Booting worker with pid: 701 [2016-12-12 05:18:20 +0000] [702] [INFO] Booting worker with pid: 702 ^[[A^[[B^Z [2]+ Stopped gunicorn runFalconAPI:app --config guniconf.py [root@108eea65ff9c apps]# [root@108eea65ff9c apps]# exit exit There are stopped jobs. [root@108eea65ff9c apps]# exit exit [2016-12-12 05:18:32 +0000] [667] [INFO] Worker exiting (pid: 667) [2016-12-12 05:18:32 +0000] [665] [INFO] Worker exiting (pid: 665) [2016-12-12 05:18:32 +0000] [633] [CRITICAL] WORKER TIMEOUT (pid:665) [2016-12-12 05:18:32 +0000] [668] [INFO] Handling signal: term [2016-12-12 05:18:32 +0000] [666] [INFO] Worker exiting (pid: 666) [2016-12-12 05:18:32 +0000] [633] [CRITICAL] WORKER TIMEOUT (pid:666) [2016-12-12 05:18:32 +0000] [633] [CRITICAL] WORKER TIMEOUT (pid:667) [2016-12-12 05:18:32 +0000] [633] [INFO] Handling signal: term Traceback (most recent call last): File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/arbiter.py", line 211, in run [2016-12-12 05:18:32 +0000] [700] [INFO] Worker exiting (pid: 700) [2016-12-12 05:18:32 +0000] [701] [INFO] Worker exiting (pid: 701) handler() File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/arbiter.py", line 246, in handle_term raise StopIteration StopIteration During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/root/.pyenv/versions/3.5.2/bin/gunicorn", line 11, in <module> sys.exit(run()) File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 74, in run WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run() File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/app/base.py", line 192, in run super(Application, self).run() File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/app/base.py", line 72, in run Arbiter(self).run() File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/arbiter.py", line 214, in run self.halt() File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/arbiter.py", line 331, in halt [2016-12-12 05:18:32 +0000] [702] [INFO] Worker exiting (pid: 702) self.stop() File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/arbiter.py", line 370, in stop l.close() File "/root/.pyenv/versions/3.5.2/lib/python3.5/site-packages/gunicorn/sock.py", line 123, in close os.unlink(self.cfg_addr) FileNotFoundError: [Errno 2] No such file or directory: '/run/gunicorn.sock' [2016-12-12 05:18:32 +0000] [668] [INFO] Shutting down: Master

###試したこと

前回以下のような質問をしました。
https://teratail.com/questions/58483

systemctlを利用してnginxを起動するようにしました。
しかし、
docker run ~~|省略|~~ /bin/bash
ではsystemctlが扱えず調べたところ
docker run ~~|省略|~~ /sbin/init
とすれば扱えるようだったのでこちらに変更しました。

実際nginxは下記コマンドで起動するようになりました。
sudo systemctl start nginx

しかし、/bin/bashの際は正常に動作していた
gunicornが上手く起動しない状態になってしまいました。

###補足情報(言語/FW/ツール等のバージョンなど)
Windows7にDockerToolbox
Dockerイメージのcentos:centos7を利用
Nginx,Python3,Gunicornを利用

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

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

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

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

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

guest

回答1

0

ベストアンサー

docker runの最後に付ける/bin/bashや/sbin/initなどのコマンドはコンテナを起動して最初に動かすコマンドです。
docker execの最後に付けるコマンドはdocker execで実行させたいコマンドです。

systemctl startを使いたければsystemdを起動する必要があります。
docker runで/sbin/initを実行させるのは、/sbin/initがsystemdの起動コマンドだからです。

docker execで/bin/bashを実行させるのは、シェルを起動しないとその後のコマンドが打てないからです。
(例えば、/bin/bashの代わりに/bin/dateにすると、単に現在時刻を表示するだけで終わります)

私は同じ環境を持っていないですしgunicornも触ったことがないので確かなことは言えませんが、このメッセージはexitによる終了シグナルを受け取ったために普通に終了しようとしているものに見えます。
gunicorn runFalconAPI:app --config guniconf.pynohup gunicorn runFalconAPI:app --config guniconf.py &にしてみて、exitしてもgunicornが起動し続けるか確認してみて下さい。

投稿2016/12/12 13:25

yunano

総合スコア841

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問