本記事ではDockerでコンテナ内からコマンド操作を行う方法を紹介します。起動中のコンテナでコマンドを実行するのに2通りの方法があります。
前準備:コンテナを作成
コマンドを実行するために、まずコンテナを起動します。
(コンテナがある方は飛ばしてください)
今回はDocker Composeコマンドを使用して、Ubuntuのコンテナを作成します。
所定のディレクトリに以下のyamlファイルを作成します。
services: ubuntu: image: ubuntu:22.04 tty: true
コンテナの名前は「ubuntu」です。
そして以下コマンドを実行。
docker compose up -d
するとコンテナが起動します。
コンテナが起動したかはコマンド「dicker container ls」で確認できます。
コンテナ内でコマンドを実行する方法
一つ目の方法。
以下コマンドで実行できます。
docker compose exec [コンテナ名] [実行するコマンド]
後述の二つ目の方法と比較して表現するなら、「コンテナに対してコマンド操作を依頼している」方法といった感じ。
以下は実際に実行した例(lsコマンドを実行)。
docekr compose exec ubuntu ls
以下のようにコンテナ内のファイル・フォルダ一覧が表示されます。

コンテナに入ってコマンドを実行する方法(コンテナに入る方法)
二つ目の方法。
一つ目の方法は、コマンドを1つ実行する場合は便利ですが、コンテナ内でたくさんコマンドを実行したい場合は少し面倒です。
なので複数のコマンドを実行する場合は、コンテナ内でシェルを立ち上げ、そこでコマンドを実行する方法がおススメです。
docker compose exec [コンテナ名] /bin/bash
以下は実際に実行した例。
コンテナ内でシェルを起動するコマンドは以下の通り。
docker compose exec ubuntu /bin/bash
コンテナ内のbashが起動し、そこでコマンドが打てる状態になります(以下画像)。

コンテナ内シェルでlsコマンドを実行。

コンテナ内から離脱する場合は、「exit」で抜けられます。
コメント