非プログラマのDocker覚書
プログラミングをしていると目に付く’Docker’という単語。調べてみたけど結局Dockerは何を解決するために存在しているのかわからない。そもそも何をどう調べたらいいかわからない。Dockerはわかったけどどう使うの?
そんな人の為に覚書を書いてみました。
目次
- なぜDockerを使わなければいけないのか?
- Dockerとは何?
- どうやってDockerを使えばいいのか?
Q:なぜDockerを使わなければいけないのか?
A:環境を同じにするためです
「自宅のMacbookで動くけど、会社のwindowsでは動かないコード」とか「git上にあるサンプルコードはLinuxで動かすことを前提として作られていた。windowsで試しても謎のエラーが発生した。該当するエラー記事もない、オワタ\(^o^)/」といった状況に陥らないためにもコードは同じ環境で動かしたいですね。そんなときにDockerの登場です。
Q:Dockerとは何?
A:コンテナ型仮想環境。ゲストOSを起動せずにホストOS上の実行環境(ドッカーコンテナ)でアプリケーションを動作させる。従来型より軽い。
例えば、Windows上でLinux環境を構築しようと思ったら一つのOSの上に別のOSを構築するわけですから手順もややこしく、メモリ消費も大きいわけです。Dockerのコンテナ機能を使えば手順も画一化されているし、メモリ消費も最小に抑えられるといったメリットがあります。
Q:どうやってDockerを使えばいいのか?
A デスクトップ上のファイルからDocker上の環境にアクセスできるようにする
今回は例としてWEB上で動くデータサイエンス環境を作って行こうと思います。以下ロードマップ。
- DockerHubの登録とDocker Desktopのインストール
- Docker login
- Docker imageをpullする
- デスクトップ上のファイルにDockerのコンテナ内のファイルをマウントする
DockerHubの登録とDockerDesktopのインストール
以下DockeHubリンク
https://hub.docker.com
DockerHubに登録したIDとPassは控えておきましょう
以下リンクからDockerDesktopをインストール。
https://docs.docker.jp/desktop/toc.html
Mac、Windows、Ubuntuと環境におうじて適切なパッケージを選びましょう。
Doker login
DockerDesktopアプリの起動。または、ターミナルから
$ docker login
login時、DokerHubのIDとPassが必要
Docker imageをpullする
以下リンクよりUbuntuにAnacondaが搭載されたJupyterNotebook用imageをpull
https://hub.docker.com/r/jupyter/datascience-notebook
$ docker pull jupyter/datascience-notebook
デスクトップ上のファイルにDockerのコンテナ内のファイルをマウントする
$ mkdir desktop/jupyter_datascience-notebook
$ cd desktop/jupyter_datascience-notebook
$ docker run -v ~/desktop/jupyter_datascience-notebook:/home/jovyan/work -p 10000:8888 --name jupyter jupyter/datascience-notebook
完成!!(緑で光ってるとこが新しく作成された)
webにlocalhost:10000と入力すると
※初回はtokenを求められるので、以下の記事を参考にしてください。
でたー!
- マウントするコンテナのpathは/home/jovyan/workになっているので注意