Rubyと筋肉とギターとわたし

エンジニア二年目の雑魚です。プログラミング・ギター・筋トレのことをメインにブログを書いていきます。

【備忘録】docker exec <container ID> bash -cで怒られた

f:id:rdwbocungelt5:20180816164743p:plain

docker execlsコマンドを打とうとしたらエラーが出たので、備忘録として。

環境

  • Docker 17.12.0-ce, build c97c6d6
  • elementary OS 0.4.1 Loki (ubuntu 16.04.1)

状態

docker psで出てくるのが以下2つです。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
5f5341ffb035        0f9e103b1a23        "bash"              About an hour ago   Up About an hour                        xenodochial_albattani
402d9d6b0227        ubuntu:16.04        "bash"              About an hour ago   Up About an hour                        gifted_meninsky

一番上のコンテナ内のルートディレクトリを参照したい。

$ docker exec 5f5341ffb035 bash -c 'ls /'
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"/bin/bach\": stat /bin/bach: no such file or directory": unknown

だめっぽい。

bashディレクトリをちゃんと指定してあげても・・・

$ docker exec 5f5341ffb035 /bin/bash -c 'ls /'
OCI runtime exec failed: exec failed: container_linux.go:296: starting container process caused "exec: \"/bin/bach\": stat /bin/bach: no such file or directory": unknown

だめですね。

解決

stackoverflow.com

これですね。

docker execのオプションが足りなかった模様。

docker exec -i 5f5341ffb035 bash -c 'ls /'
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
samplefile
sbin
srv
sys
tmp
usr
var

わざわざコンテナの中に入らずとも無事参照できました。

おわりに

dockerのロゴ使用に決まりとかあったんですね。

みなさんも気をつけましょう。

www.docker.com