コンテナシェルでパッケージなどをイジる

Bash起動

色々なLinuxディストロの様々なパッケージをイジるために、Bashシェルを使いたい場合、次のようにdocker runコマンドの引数末尾にbashを渡す。

# CentOS7のBash
docker run --rm -it centos:7 bash
# フルパスで表現しても同じ
docker run --rm -it centos:7 /bin/bash
# CentOS7の場合、こうしても同じ
docker run --rm -it centos:7

最後の例でもbashが起動するのは、CentOS7はDockerfileCMD指令でそう指定されているから。openSUSEなどではコマンドを省略するとエラーになる。

docker run --rm -it opensuse:leap
docker: Error response from daemon: No command specified.
See 'docker run --help'.

各LinuxディストロのBash起動は、こんな感じ。(2018-04現在)

CentOS 7

docker run --rm -it centos:7 bash

Fedora 27

docker run --rm -it fedora:27 bash

Scientific Linux 7

docker run --rm -it sl:7 bash

Ubuntu 18.04

docker run --rm -it ubuntu:18.04 bash

Debian 9.4

docker run --rm -it debian:9 bash

openSUSE Leap

docker run --rm -it opensuse:leap bash

Bash 4(Alpine Linuxに入れたもの)

docker run --rm -it bash:4 bash

Bashが入っていない場合

Alpine LinuxやBusyBox(最低限コマンド集)などのシェル(ash)なら、

docker run --rm -it alpine:3.7 ash
docker run --rm -it busybox:1 ash