【Docker13】docker run時のオプションについて

前回はDockerfileの書き方について詳しく解説してきました。

今回は、ホストとコンテナの関係を深く理解しよう!ということでホストPC⇔コンテナの
ファイル/フォルダ共有、アクセス権限やポート接続の方法についてみていこう!

本記事の対象者

○プログラミング初心者

○Dockerの基礎の基礎部分を勉強したい人

docker run時のオプション指定で実現できること

✅ファイルシステムの共有

✅ファイルへのアクセス権限

✅ポートを繋げる

✅コンピューターリソースの上限

-vオプションを使い、ホストPC↔︎コンテナ間のファイル共有

ホスト側、Docker環境側のフォルダを指定し共有

$ docker run -it -v <host_dir>:<container_dir> <imageID> <command>

-u,-gオプションを使い、ホストPC↔︎コンテナ間のアクセス権限を共有

ホストPC↔︎コンテナ間のアクセス権限を共有

$ docker run -it -u $(id -u):$(id -g) <imageID> <command>

コマンドでファイル/フォルダのアクセス権限一覧確認

I have no name!@<containerID>:/$ ls -la

もう少し詳しくみていこう。ユーザー権限を追加(今回はaaaとbbbというユーザー)し、それぞれに対して/home/aaacと/home/bbb ディレクトリを作る。aaaでコンテナないに入り、/home/bbbにアクセス権限がないところまで確認する。

ユーザー権限の追加

$ sudo adduser –uid <uid> <username> :
        ユーザーID<uid>、ユーザーネーム<username>として追加する

-pオプションを使い、ホストPC↔︎コンテナ間のポートを繋げる

ホストPC↔︎コンテナ間のポート接続

$ docker run -it -p <host_port>:<container_port> <imageID> <command> ※p(publish:繋げる)

コンテナに割り当てるコンピュータリソース(メモリ、CPU)の設定

ホストPC↔︎コンテナ間のポート接続

$ docker run -it –cpus <#of CPUs> –memory <bytes> <imageID> <command>

MacでのCPU・メモリの確認コマンド

$ sysctl -n hw.physicalcpu_max : 物理コア数
$ sysctl -n hw.logicalcpu_max : 論理コア数
$ sysctl hw.memsize : メモリ(byte)

1Kbyte=1024byte, 1Mbyte=1024×1024byte, 1Gbyte=1024×1024×1024byte

コンテナの詳細な情報を確認する方法(inspctで全表示、grepでピンポイントに表示)

$ docker inspect <containerID>
$ docker inspect <containerID> | grep -i <something>

以上となります。今回はdocker run時の様々なオプションについて解説しましたが、いかがだったでしょうか?

次回はDockerを使って、UbuntuOSのGPU環境構築の方法について解説して行きたいと思います。

今回はこの辺で、バイバイ👋