本記事ではMacを使って、Docker上でPythonを実装する方法を初心者の方向けに簡単に解説していきます。
また同時に、もっとも初心者に適したと思われるJupyter Labでの開発環境の構築も同時に行います。
ぼくの使用環境は以下の通りです。
- Hardware: Macbook Pro 13 inch 2016
- OS: macOS Mojave ver. 10.14.6
また、2020年11月に発表されたM1チップ搭載のMacでは現状(2020年11月16日現在)ではDocker自体に対応していないようです。順次対応はなされていくと思いますが、ご留意ください。
Dockerとは
Dockerとは仮想環境を構築してその中でアプリケーションを開発できるオープンソースのソフトウェアです。米Docker社から提供されており、現在IT企業などを中心に広く活用されています。
それでは、どうしてDockerは現在広く活用されているのでしょうか。
まずは、Dockerのメリット・デメリットを簡単にまとめてみました。
Dockerを使うことのメリット
- ローカル環境内でもDockerにてコンテナにより環境の囲い込みを行うことができる。これによってDocker内外の環境を分離して、相互間の影響を遮断することができる。
- DockerはホストOSベースのコンテナイメージを用意することができ、チーム開発を行う場合は、このDockerFileを共有することで、チーム内で同じ開発環境を構築できる。
- Dockerのイメージ, コンテナの新設・破棄が簡単に行える。
- 構築、本番の環境が異なっても、Dockerイメージごと移動することによって、環境の違いによるエラーを極力軽減できる。
- オープンソースであり、コストがかからない。
Dockerを使うことのデメリット
- 後に述べるコンテナエンジンを必要とするので、その分のストレージリソースを必要とする。
- Dockerを本番環境として使う場合にはセキュリティー対策が必要になる。
他の仮想化技術との違い
Dockerはコンテナ型仮想環境と呼ばれてルものの一つですが、仮想技術にはそれ以外に、ホスト型仮想環境やハイパーバイザー型仮想環境と言われるものがあります。
それぞれと特徴と長所・短所を以下に簡単にまとめます。
コンテナ型仮想環境
上図がコンテナ型仮想環境を模式的に示したものです。コンテナエンジン(Docker等)はホストOSのカーネルを利用するので、コンパクトにまとめることができます。また、その為、Dokcerの場合、ホストOSがLinux出ない場合はLinuxを仮想的に立ち上げる必要があります。
ホスト型仮想環境
ホスト型仮想環境は、上図のように土台となるホストOSの上にゲストOSを立ち上げるタイプの仮想環境です。MacにWindowsを走らせるParallels Desktopなどを思い浮かべていただけるとイメージしやすいかと思います。
一般的には、VMwareやWindows7でのXPモードなどが、これに分類されます。全ての処理はホストOSも経由して行われる為、パフォーマンスの低下がかなりあります。
ハイパーバイザー型仮想環境
一般ユーザーはあまり馴染むがないハイパーバイザー型仮想環境は上記のような模式図で表されます。ハードに直接仮想環境を構築するので、ホストOSがなく、効率よくハードのリソースを活用できます。また、複数の仮想環境を稼働することができます。
Docker本体のインストール
前置きが長くなってしまいましたが、それでは早速、Docker自体のインストールを行なっていきましょう。
まず、ブラウザーの検索窓に"docker.com"と入力し、Dockerのホームページにアクセスします。
Dockerのホームページ(英語です)が開いたら、上記の①(Get Started)をクリック。
次に、①(Download for Mac)の右側にある下向きの印をクリック。
プルダウンメニューが出るので、①をクリック。ダウンロードが開始すると②が表示されるので、これをクリック。
ダウンロードが終わったら、Dockerのインストールを行います。上記のようなウインドーが開くので、このウインドー上で①のDockerアイコンを②のApplicationsのホルダーまでドラッグアンドドロップします。
あとは、インストーラーの指示に従い、パスワードの代入指示がありますので、慌てず、Macを起動するときに代入するパスワードを代入してください。すばらくするとインストールが完了します。
インストールに必要な時間はインターネットの接続環境により様々ですが、十数分かかる場合もあります。一見とまてしまったように見える時もあるかもしれませんが、コーヒーなどを飲みながら気長に待ちましょう。
インストールが完了したら、ターミナルを開いて、①の"docker run hello world"とコマンドを入力してエンターを押し、コマンドを実行します。
②にありますように、"Hello from Docker!"と表示されれば、Dockerのインストールの完了が確認されました。お疲れ様でした。
また、ターミナルのことがよくわからない方は、以下のぼくのターミナルに関する記事を参照してください。
【Mac】ターミナルの使い方の初歩・よくわからん黒いやつ【初心者向け】
DockerfileとDocker Composeについて
それでは、Docker上で開発環境(エディター)であるJupyter Labを動かせるように設定を行なっていきます。
まずは適当な場所に適当な名前のフォルダーを作ります。例えばここでは、Desktopにpython_on_dockerというフォルダーを作るという前提で話を進めます。
そしてお手持ちのエディターにより、そのフォルダー内に、以下のDockerfileとDocker-compose.ymlというファイルをセーブします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
FROM ubuntu:latest RUN apt-get update && apt-get install -y sudo wget vim curl gawk make gcc RUN wget https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh && \ sh Anaconda3-2019.03-Linux-x86_64.sh -b && \ rm -f Anaconda3-2019.03-Linux-x86_64.sh && \ sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - && \ sudo apt-get install -y nodejs ENV PATH $PATH:/root/anaconda3/bin RUN pip install --upgrade pip RUN wget --quiet http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -O ta-lib-0.4.0-src.tar.gz && \ tar xvf ta-lib-0.4.0-src.tar.gz && \ cd ta-lib/ && \ ./configure --prefix=/usr && \ make && \ sudo make install && \ cd .. && \ pip install TA-Lib && \ rm -R ta-lib ta-lib-0.4.0-src.tar.gz RUN mkdir /python_files CMD ["jupyter-lab", "--ip=0.0.0.0","--port=8888" ,"--no-browser", "--allow-root", "--LabApp.token=''"] |
上記をDockerfileとしてセーブします。
1 2 3 4 5 6 7 8 9 10 11 |
version: "3.7" services: jupyterlab: build: . container_name: python_on_docker volumes: - '.:/python_files' environment: - JUPYTER_ENABLE_LAB=yes ports: - "8891:8888" |
上記をdocker-compose.ymlとしてセーブします。
ここで、この記事のソースコードのコピーの方法を説明します。コードが記述されている黒い部分にカーソルを乗せると、上部にメニューバーが降りてきます。この中の平氏から5番目のアイコンをクリックするとコードがコピーされます。あとはお使いのエディターのペーストして目的のフォルダーにセーブすれば一連の作業は完了です。
また、この機能はWordPress上でCrayon Syntax Highlighterというプラグインを使って実装しています。ブログを作成されている方で、興味のある方は以下のぼくの記事を参照してみて下さい。(実装に少しコツがあります。)
ここで少し細かな話になるのですが、Portの8888はJupyter LabをDockerを使わずに使っていると、使用されるので、ここでは8891に変更しています。(ぼくは8889、8890もすでに使っているので、 8891となっています。基本的に使っていない番号ならば、なんでも構いませんが、お約束的に8000番台にしましょう。)
このポートの変更はdocker-compose.ymlの最後の行の8891を変更することにより可能です。
Jupyter Labの開発環境
それでは、ターミナルに戻って、ターミナル上で上記の2つのファイルをセーブしたフォルダーにcdコマンドで移動します。(ここでの例ではDesktopの下のpython_on_dockerフォルダーです。)
そして、上記のスクショにある通り、"docker-compose up -d"と入力してリターンを押して下さい。
このコマンドによって、Dockerのコンテナの作成とその起動を行います。
処理がかなりの間行われ(環境にもよりますが、十数分。)最終的に上記のように"Successfully Built"と表示されれば完了です。
この後、ブラウザーに移り、"http://localhost:8891/lab"と入力してリターンを押します。ここでの8891は以前設定したPort番号です。設定された番号に従って、代入して下さい。
上記のアニメーションに続いて、下記のJupyter Labの画面が開きます。これでJupyter Labが起動しました。
ここで注意していただきたいのは、上記のスクショにあるフォルダー"pyhon_files"が以前作成した"python_on_docker"と連動しており、その中身は同じになります。つまりこの2つのフォルダーを通じてコンテナの内外間のデータのやりとりを行います。
まとめ
かなり長くなってしましました。この記事としてはここまでの環境構築までを一区切りとさせていただき、次の記事で使い方を説明させていただければと思います。
また、今回の記事の作成につき、キノコードさんのYouTubeの動画、「MacでPythonインストール徹底解説」を参考にさせていただいています。以下から動画を閲覧できます。
それでは最後までお付き合いいただき、ありがとうございました。さようなら。
おすすめプログラミングスクール
テックキャンプ エンジニア転職
ビジネス系YouTuberとして著名なマコなり社長が社長を務める株式会社Divが運営するTECH CAMP。
やり切れる教材と就職までのサポートが大きな強めです。
また、受講の際には各自Macを準備する必要があります。(有料でレンタルあり)就職できなければ授業料返還の保証がありますが、39才以下との条件があります。ご注意ください。
費用は短期集中で一括払いで総額税抜648,000円、夜間・休日で848,000円と安くない費用になります。
コロナの影響で閉鎖していた教室もマスク着用などの条件付きで、全室、2020年11月2日より使用可能になりました。
眺めていても何も始まりません。これを機に、まずは以下のリンクから無料カウンセリングを受けられてみてはいかがでしょうか。
■教育について ・圧倒的コミット量と網羅性 テックキャンプ エンジニア転職は600時間をかけてフロント/サーバーサイド/インフラ全てを一通り学びます。
■サポート体制について ・学習環境 オンライン問わずメンターに質問し放題なため、途中で諦めてしまうことがありません。 ・専属のトレーナーの存在 トレーナーは毎週の学習計画の作成、日々の進捗確認、 キャリアアドバイザーへのフィードバックなど期間中は二人三脚となってサポートします。 ・専属のキャリアアドバイザー 毎週のキャリア面談、面接対策や履歴書の添削、企業提案など転職が決定するまでサポートし続けます。 また、企業に入社した後も半年間であれば無料でキャリア相談を受け付けています。
受講スタイル:通学またはオンライン
場所:東京(渋谷)、大阪、名古屋、福岡
価格:
入会金不要で月々21,200円(税込)から、一括は648,000円(税抜)(短期集中)
主な学習言語:HTML/CSS、JavaScriptRuby on Rails等
期間:短期集中で10週間、夜間・休日で6ヶ月
コメント