以前、Docker コンテナ上のファイルをローカルにコピーする記事を書きました。

その際、コンテナ上の Linux では vi でプログラムを書いてコンパイルしたのですが、実は以下の Docker のイメージには最初から vim(vi)が入っていませんでした。
今回は、そのようなコンテナの場合に、ビルド時に vim(vi)をインストールする方法を紹介します。
viのコマンドがインストールされてるか確認する
起動したコンテナには、exec でシェルログインできます。例えば以下のような感じ。
docker-compose exec [コンテナ名] /bin/bash
docker-compose exec [コンテナ名] /bin/sh
ここで vi や vim のコマンドのパスを調べても結果は空の状態です。
1 2 | $ which vi $ which vim |
コンテナ上のLinuxのOSとパッケージ管理ツールを確認する
OS のバージョンは以下のファイルで確認できます。uname -a でも表示されるディストリビューションがあるかもしれませんが、Alpine は表示されなかった。
1 2 | $ cat /proc/version Linux version 4.9.93-linuxkit-aufs (root@xxxxxx) (gcc version 6.4.0 (Alpine 6.4.0) ) |
次にパッケージ管理ツールを確認します。
Alpine Linux なら apk または atp-get が主流なのでしょうか。
残念ながらこの OS には apk がなかったので、apt-get で vi をインストールすることにします。
viのインストール
Docker ファイル(Dockerfile)の内容を以下のようにします。
1 2 3 | $ vi Dockerfile FROM php:7.1.9-apache RUN apt-get update && apt-get -y install vim |
apt-get update しておかないと vim のパッケージがインストールできなかったので、最初に update しています。
これで無事にコンテナ上で vi が使えるようになります。