はじめに
この記事はとりあえずなんでも Advent Calendar 2019の21日目の記事です。
とある日に思った
Windows環境にPythonとpyTorchを入れて適当に機械学習を回していたのですが、突然
「あー、自由にいじれるLinuxがほしい。でもVMはなんかかっこ悪いし、重たいしやだ(偏見)」
「DockerでUbuntu入れてみるとDockerの勉強になったりするのでは?」
「なんかモダンな環境構築っぽい(知識少なすぎて他の構築方法VMくらいしか知らない)」
「1時間あるし、構築チャレンジするか!!」
と、完全に思いつきだけで構築チャレンジをしてみました。
なので、Win10にDockerを使ってUbuntu環境を作る、です。
その時のメモを公開します。
自分のスペック
・VM構築経験なし(なのに偏見持ち)
・Linux初心者(実は初めてのLinux環境構築)
・Docker初心者(1回触ったくらい)
という初心者丸出しのスペックなので、相当躓きました。
躓いた箇所を全部メモしておいたので、温かい目で見てください。
1時間もかかるの?
そんなことありません。ある程度知っている方がやれば1時間どころか15分くらいで終わると思います。
躓いて、調べて、PC再起動して、野暮用で時間を消費して、間にこのメモを書きつつ実行してを全て含めて、1時間です。
(記事にするにあたって色々MarkDownで囲っただけなので、コマンドのメモとかも全部その1時間内に書いています)
タイマーを使って何度か時間を確認していたので、時間軸でお楽しみください。
それでは構築スタート。
https://www.docker.com/get-started
からDocker Desktopを入手
サインインが必要
適当にサインアップしてゲット
~2分~
installer起動して、すべてデフォルトでポチポチ
その間にUbuntuを起動する方法を調べておく
https://weblabo.oscasierra.net/docker-ubuntu1604/
docker pull ubuntu:16.04
docker run -it -d --name ubuntu1604 ubuntu:16.04
でOKっぽいが、18.04を使うか
install完了にサインアウトが必要らしく、投げ出される
~5分~
PC起動待ち
~7分~
Hyper-V無効化されていると言われる
有効化したいので再起動
なんか更新プログラムも走って2回再起動した
野暮用もあり時間を消費する
~24分~
コマンドプロンプトから
docker pull ubuntu:18.04
を打ち込む
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for conne ction (Client.Timeout exceeded while awaiting headers)
dockerのsettingsからプロキシ設定する
リトライしてok
~27分~
docker run -it -d --name ubuntu1804 ubuntu:18.04
docker exec -it ubuntu1604 /bin/bash
bashが起動できた!
~28分~
pythonが入っていないので入れることにした
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-linux-python.html
$ apt-get install python3
E: Unable to locate package python3
https://qiita.com/hatorijobs/items/c503840c13672e12d188
え、vimも入っていないの…
$apt update
Connection refusedする。IPは91.189.88.24 の80番ポート
$ping 91.189.88.24
ping: command not found
え、pingも入っていないの…!?
まぁつながらないのは99%くらいプロキシだろうからいいか。
$export HTTP_PROXY=[使っているプロキシ]
$export HTTPS_PROXY=[使っているプロキシ]
これでも駄目。
https://qiita.com/48saaan/items/47f8d9cd3321c3bcfce6
aptは小文字らしい。Case Sensitiveなの知らなかった。
$export http_proxy=[使っているプロキシ]
$export https_proxy=[使っているプロキシ]
$apt update
いけた。
~40分~
$apt install vim
$apt install python3.8
いけたいけた。
ここでお菓子を取りに行って時間を消費。
~48分~
pipを入れようと思う
$curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
curlないの!?
$apt install curl
$curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
★ちなみにcurlは大文字のHTTP_PROXYを参照する…
$python3.8 get-pip.py
ModuleNotFoundError: No module named 'distutils.util'
https://www.bioerrorlog.work/entry/install-pip-pip3-ubuntu
pip3はget-pip.pyから入れられないのか…
$apt install python3-pip
入った。
試しにnumpyとか入れてみるか。
$pip3 install numpy
★16.04の版ではここでエラー。python2系と3系が同居してしまっていた。
ImportError: cannot import name main
https://qiita.com/Suzukaze31/items/e6d15ddd9ffcd5e6c246
二つ目の対処をやればOKだった。
めでたくUbuntu+python環境完成!!!
~57分~
調子に乗ってtorch入れる
$pip install torch
確認する。
$python3
>>>import torch
>>>x=torch.ones(2,2)
>>>print(x)
>>>exit(0)
2x2の単位行列が作れたことを確認したのでOK。
ここで60分。
終わりに
今の時代こんなに簡単に環境構築できるとは。そして自分のスキルのなさを痛感しました。
dockerfile書けとか言われてもまだ書けないので、今度書いてみます。
なんにせよ、好きにいじれるLinux環境をゲットできたので、色々やってLinux勉強しようと思います。