Help us understand the problem. What is going on with this article?

DockerでUbuntu18.04+Pythonの機械学習用の環境を1時間で用意するチャレンジをしてみた

はじめに

この記事はとりあえずなんでも 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勉強しようと思います。

sfead
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした