ホストOSからコンテナ内でコマンドを実行する

docker container execコマンド

ホストOSからコンテナ内でコマンドを実行するにはdocker container execコマンドを使う。

$ docker container exec <コンテナ> <コマンド>

<コンテナ>の部分はコンテナ名かUIDを指定する。

コンテナ名の調べ方

コンテナ名はdocker psコマンドなどで調べる。

$ docker ps
CONTAINER ID   IMAGE                     COMMAND       CREATED       STATUS       PORTS     NAMES
d07988d90148   rockylinux/rockylinux:8   "/bin/bash"   2 hours ago   Up 2 hours             docker-rocky-rocky-1

上記の例ではdocker-rocky-rocky-1がコンテナ名、d07988d90148がUIDとなる。

実行例

以下の例ではdocker-rocky-rocky-1コンテナのlsコマンドを実行している。

$ docker container exec docker-rocky-rocky-1 ls
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

docker-composeの場合

docker-compose execコマンド

docker-composeの場合はdocker-compose execコマンドを使う。

$ docker-compose exec <サービス> <コマンド>

<サービス>の部分はdocker-compose.ymlservicesに記述したサービス名を指定する。
例えば以下のようなdocker-compose.ymlの場合はrockyサービスを指定する。

services:
  rocky:
    image: rockylinux/rockylinux:8
(省略)

実行例

以下の例ではdocker-compose.ymlservicesに記述したrockyサービスのlsコマンドを実行している。

$ docker-compose exec rocky ls
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var