Dockerコンテナを作成し、その中ですぐにコマンドを実行するには?

Dockerコンテナを作成し、その中ですぐにコマンドを実行するには?

新しく作成されたDockerコンテナでコマンドを自動的に実行する方法が見つかりませんでした。私はしばしば、追加パッケージの利点を利用し、ソフトウェアをインストールする前に更新する必要がある使い捨てコンテナ(以下の例ではテスト環境)を作成します。

私は対話型セッションで直接コマンドを実行することを好みます。

docker run --interactive --tty --rm fedora bash
docker run --interactive --tty --rm ubuntu bash

apt update && apt upgrade -y現在は、コマンド(および含むdnf update -y)をコンテナシェルに貼り付け続けています。

ベストアンサー1

これを達成する1つの方法は、少なくとも「一時」コンテナの場合は、コマンドをsleep設定してからコンテナで実行し続け、実行中のコンテナでシェルを実行することです。

docker exec -it $(docker run -d --rm debian:unstable bash -c "apt-get update && apt-get upgrade -y && sleep 86400") bash

この方法の1つの不便な点は、更新/アップグレードが完了する前に対話型シェルが開始されることです。apt-getまた、コンテナに端末を接続しないと(別ウィンドウで)、出力は表示されません。

コマンドをインストールした後、対話型シェルを実行することもできます。

docker run -it --rm debian:unstable bash -c "apt-get update && apt-get upgrade -y && bash"

おすすめ記事