- Docker for Windowsで手早くLinux環境を実行したい。
- デスクトップを/desktopにマウントしてUbuntu Xenialを起動したい。
- Windows側ではdocker for Windowsとcmd.exeのみ使う。
まずはコマンドプロンプトを開いて、デスクトップに移動します。
> cd %HOMEPATH%\Desktop
現在のパスをDocker for Windows用に変換します。手書きで書き換えるのは面倒なのでAlpine Linuxのsedを使います。
> cd | docker run -i --rm alpine:latest sed -e s#\\#/#g -e s#\(.\):#/\1#g
/C/Users/username/Desktop
ユーザ名が英語でスペースがないならば、/C/Users/%USERNAME%/Desktop でもいけそうです。
Docker run を実行します
> docker run --rm -it -v /C/Users/%USERNAME%/Desktop:/desktop -w /desktop ubuntu:xenial bash
# ls -al
# exit
日本語ファイル名が文字化けするので、ロケールなどを設定したDockerfileをつくって起動します。
ローカルタイムをJSTに、ミラーを理化学研究所に、ロケールをen_US.UTF-8にしています。
コマンドプロンプトでは type con > filename で標準入力の内容をfilenameに保存できます。CTRL+Cで終了。
イメージ名は myenv としました。
コマンドプロンプト
> mkdir myenv
> cd myenv
> type con > Dockerfile
以下のDockerfileの内容をペーストしてCTRL+C
Dockerfile
FROM ubuntu:xenial
RUN set -xe && \
rm /etc/localtime && \
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
echo 'Asia/Tokyo' > /etc/timezone && \
sed -i.bak 's#http://archive.ubuntu.com/ubuntu#http://ftp.riken.go.jp/Linux/ubuntu#g' /etc/apt/sources.list && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
locales && \
sed -i '/^# en_US.UTF-8 UTF-8/s/^# //' /etc/locale.gen && \
locale-gen && \
update-locale LANG=en_US.UTF-8
ENV LC_ALL en_US.UTF-8
コマンドプロンプト
> docker build -t myenv .
> docker run --rm -it -v /C/Users/%USERNAME%/Desktop:/desktop -w /desktop myenv bash
# ls -al
# exit
日本語ファイル名が文字化けせず表示されました。
bash中心の作業環境構築ならば、WSLなどをつかったほうがよいかもしれません。