#【HostとContainerの繋がり】
かめさん いつもありがとうございます。
米国AI開発者がゼロから教えるDocker講座
・ファイルシステムの共有
・ファイルへのアクセス権限
・ポートを繋げる
・コンピュータリソースの上限
→ $docker run コマンド時のオプションで設定
##ホストのファイルシステムをコンテナにマウント
-v < host/path >:< container/path >オプション
HostのファイルシステムにあるcodeをContainerにあるかのように扱える。
これによって、Containerのファイルが大きくならない。
$ cd ~/Documents
$ mkdir mounted_folder
$ touch mounted_folder/file_at_host
$ docker build .
$ docker run -it -v ~/Documents/mounted_folder:/new_dir < image > bash
$ ls /new_dir
##ユーザIDとグループIDを指定してコンテナをrunする
-u < user id >:< group id >オプション
Containerを起動する時にrootじゃなくて、指定したユーザIDとグループIDでrunをするようにする。
セキュリティを向上させる。
$ cd ~/Documents
$ docker build .
$ docker run -it -u 501:20 -v ~/Documents/mounted_folder:/created_in_run < image > bash
$ touch /created_in_Docker/sample_file
$ touch /created_in_run/sample_file
##ホストのポートをコンテナのポートに繋げる
-p < host_port >:< container_port >オプション
コンテナをWebサービスとして立てるといった使い方はよくさせる。
HostのポートからContainerのポートにアクセス(publish)するために繋げる必要がある。
$ docker run -it -p 8888:8888 --rm jupyter/datascience-notebook bash
$ jupyter notebook
##コンテナがアクセスできる上限のCPU、メモリを設定
コンテナがアクセスできる上限のCPUを設定
→ --cpus < # ofCPUs >
コンテナがアクセスできる上限のメモリを設定
→ --memory < byte >
$ docker run -it --rm --cpus 4 --memory 2g ubuntu bash
$ docker ps
$ docker inspect < container >
→ コンテナの詳細を表示する。
$ docker inspect < container > | grep -i < something >
##補足
1 K byte = 1024 byte
1 M byte = 1024 * 1024 byte
1 G byte = 1024 * 1024 * 1024 byte
※1024 = 2^10