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

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

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

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

Q&A

解決済

2回答

5409閲覧

docker startで別のコマンドを上書きする。

mobile105

総合スコア20

Docker

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

0グッド

0クリップ

投稿2020/10/27 09:52

編集2020/10/27 10:19

dockerの勉強中です。
クジラのアスキーアートに好きな文字を喋らせることができるdocker/whalesayというdockerイメージがdocker hubにあります。

docker run docker/whalesay cowsay 'hello!' =>hello! (アスキーアートは省略)

docker startで再度コンテナを呼び出すと同じ文字を出力します。

docker start -a 6fed4aedf156 =>hello! CONTAINER ID IMAGE COMMAND 6fed4aedf156 docker/whalesay "cowsay 'hello!'"

別の文字を出力してみます。

docker run docker/whalesay cowsay 'good moning' =>good moning CONTAINER ID IMAGE COMMAND 8275babad3b6 docker/whalesay "cowsay 'good moning'" 6fed4aedf156 docker/whalesay "cowsay hello!"

ここで疑問に思ったのは別の文字を喋らせるためにdocker runを実行するとコンテナが増えてしまいます。
例えばdocker startの時にCOMMANDを上書きしてコンテナID6fed4aedf156good moningといった文字を出力することはできるのでしょうか??

-iオプションはインタラクティブモードということで起動後にそのまま別のコマンドを打てるようですがこのコンテナは-iをつけてもすぐにコンテナが終了するため別のコマンドを続けて入力することができません。

Docker version 19.03.13

詳しい方見えましたらご回答いただけますと幸いです。

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

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

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

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

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

ebal

2020/10/27 10:05

Go のタグは外したほうが良さそうです.
mobile105

2020/10/27 10:19

ありがとうございます!修正しました。
guest

回答2

0

ベストアンサー

例えば

shell

1$ docker run -d -i docker/whalesay /bin/sh

で起動して常駐させて

shell

1$ docker exec -t fe96aed7a1be cowsay 'test1' 2$ docker exec -t fe96aed7a1be cowsay 'test2'

みたいな(コンテナIDは環境に合わせて)


追記

-iオプションはインタラクティブモードということで起動後にそのまま別のコマンドを打てるようですがこのコンテナは-iをつけてもすぐにコンテナが終了するため別のコマンドを続けて入力することができません。

これは

shell

1$ docker run -it docker/whalesay /bin/sh

ってやればお望みの事が可能。
bashの入ってるコンテナだから、/bin/shじゃなくて/bin/bashでもいいけど。

投稿2020/10/27 10:06

編集2020/10/27 10:13
gentaro

総合スコア8947

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

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

gentaro

2020/10/27 10:08

基本コンテナは使い捨てして別のことをしたくなったら新規に作るものだからお勧めはしないけど、あくまで質問文でやろうとしている事を実現するならこんな感じ。
mobile105

2020/10/27 10:24

なるほどですね。run時点のコマンドでシェルが動くようにして実行の時にコマンドを引数として渡すようにすれば一つのコンテナで済むんですね。 あんまり推奨される方法ではないのですね。勉強になります。
guest

0

同じコンテナでの実行にこだわらないのでしたら

shell

1docker run --rm docker/whalesay cowsay 'hello!'

のように--rm オプションを付けて実行すればプロセス終了後にコンテナが削除されます.

投稿2020/10/27 10:04

ebal

総合スコア62

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

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

mobile105

2020/10/27 10:25

なるほどそういう方法もあるんですね。 テストで色々実行してるとコンテナがどんどん増えていって気になっていたので-rmオプションはかなり使えそうです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問