Dockerの使い方 2日でDocker習得編 (udemy 米国AI開発者がゼロから教えるDocker講座)


夏のDocker合宿2日目

機械学習の環境構築をDockerで行う(Jupiter Lab)
メリット 
★環境構築のエラー回避
チーム開発の手間を下げる
リソースの有効活用(企業レベル?)

前提
Q「パス」を通すとは?
環境変数 $PATHにパスを追加すること。
コンピューターがプログラムをそのパスから持ってこれるようにすること。
パスを通すためのLinuxコマンド

sudo
どのコマンドもルート権限で実行できるようになる。

1 $echo$PATH (今どこにパスが通っているのか確認)
2  $export PATH=/path/to/something:$PATH パスを追加する

実践 Anacondaをコンテナに持っていき、インストールする

手順
1 docker run
2 sh Anaconda~(パッケージ名).sh
3 export PATH ~
4 sh /パス -b -p /パス   (インストール時、面倒なインタラクティブなやりとりを回避するため)

ブラウザでlocal:host8888にアクセスする(Jupyterlabにアクセスする)
ブラウザ上でコンテナのなかでJupyterlabを立ち上げ、ホストにコードが保存される形で、コンテナからコードを書く。
(マウントする)

docker run -p 8888:8888 -v ~/Desktop/フォルダ名(Host側):/(コンテナ側) --name my-lab \ <docker image>

Dockerfileの中身

FROM ubuntu:latest
RUN apt-get update && apt-get install -y \
sudo \
wget \
vim
WORKDIR /opt 
RUN wget https://repo.continuum.io/archive/Anaconda3-2020.02-Linux-x86_64.sh&& \
    sh Anaconda3-2020.02-Linux-x86_64.sh -b -p /opt/anaconda3 && \
    rm -f Anaconda3-2020.02-Linux-x86_64.sh

ENV PATH /opt/anaconda3/bin:$PATH

RUN pip install --upgrade pip
WORKDIR /
CMD ["jupyter","lab","--ip=0.0.0.0","--allow-root","--LabApp.token=''"]

大事なことは、上のコマンドの流れを覚えることではなくて、(いきなりスラスラ作るのは無理!)
Dockerfileをどういう風に作るかのプロセスを試行錯誤しながら慣れていくこと

AWSにDockerを立ち上げる

EC2ににアクセスするときの、権限を書く (sshで接続)

chmod400<file>
ssh -i  <keyname> ubuntu@<インスタンスDNS>

※キーがあるディレクトリからアクセスを行う。 (場所が違うとキーを見つけられずアクセスできない)

SFTP(Secure File Transfer Protocol) ファイルを送信するためのプロトコル(コマンド)
SSH (Secure Shell) シェルを動かすためのコマンド

AWSでDockerコンテナを起動する方法
1 tarファイルに圧縮して送る (EC2のサーバーのセキュリティが厳しい時など)

#docker image → tar ファイル  ... dockerimageを tar.fileに変換する
$docker save {image} > {tar.file}

#tarファイル→docker image  ...EC2コンテナに送り、コンテナ内でtar.file(image)を開く
docker load < {tar.file}

2 Dockerfileを送って、開く