いくつかの基本的な概念
画像ファイルとは何ですか?
Docker は、アプリケーションとその依存関係をイメージ ファイルにパッケージ化します。このファイルを介してのみ Docker コンテナを生成できます。画像ファイルはコンテナのテンプレートとして見ることができます。Docker はイメージ ファイルに基づいてコンテナのインスタンスを生成します。同じイメージ ファイルで、同時に実行される複数のコンテナ インスタンスを生成できます。
画像はバイナリファイルです。実際の開発では、別のイメージ ファイルを継承し、独自の設定を追加してイメージ ファイルを生成することがよくあります。たとえば、Apache サーバーを Ubuntu イメージに追加してイメージを形成できます。
イメージ ファイルはユニバーサルであり、あるマシンのイメージ ファイルを別のマシンにコピーしても引き続き使用できます。一般に、時間を節約するには、自分で画像ファイルを作成するのではなく、他の人が作成した画像ファイルを使用するように努めるべきです。カスタマイズする必要がある場合でも、最初からではなく、他の人の画像ファイルに基づいて処理する必要があります。
共有しやすいように、画像ファイルを作成した後、オンライン ウェアハウスにアップロードできます。Docker の公式ウェアハウスであるDocker Hub は、最も重要で最も一般的に使用されているイメージ ウェアハウスです。また、自分で作成した画像ファイルを販売することも可能です。
このマシンにロードされたイメージを表示する
docker images
どのコンテナ ファイルですか?
イメージファイルによって生成されるコンテナインスタンス自体は、コンテナファイルと呼ばれるファイルです。つまり、コンテナが生成されると、イメージ ファイルとコンテナ ファイルの 2 つのファイルが同時に存在することになります。また、コンテナーを閉じてもコンテナー ファイルは削除されず、コンテナーの実行が停止されるだけです。
イメージ ファイルを実行すると、コンテナ ファイルが生成されます。
docker run -it <image_name> /bin/bash
実行中のコンテナをリストします。
docker ps
終了したコンテナを含む、マシン上のすべてのコンテナをリストします。
docker ps -a
共通コマンド
docker docker イメージを root 以外でロードする
1. Docker ではユーザーに sudo 権限が必要です。すべてのコマンドを入力する手間を省くためにsudo
、ユーザーを Docker ユーザー グループに追加できます。
sudo usermod -aG docker <username>
2. コンピュータを再起動します
3. イメージ ファイル (つまり、イメージ ファイル) を解凍し、ユーザーとしてイメージをロードします。
docker load --input /home/developer/rknn-toolkit/rknn-toolkit-1.7.1-docker.tar.gz
イメージをロードすると、/var/lib/docker ディレクトリの下の overlay2 フォルダーに保存されるため、/ パーティションが小さすぎる場合は、不要なイメージを頻繁に削除することを忘れないでください。
4. 画像が読み込まれているか確認する
root@lrj-HLY-WX9XX:/var/lib/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rknn-toolkit 1.7.3 9cce319ebc29 11 months ago 3.7GB
5.rknn-toolkit:1.7.3
イメージに基づいてコンテナ内で対話型シェルを開き、ホストの USB デバイスとコンテナ内のファイル システムにアクセスするための十分な権限をコンテナに与えます。ホスト/dev/bus/usb/
と/home/lrj/work/rv1126/model_convert/
ディレクトリをコンテナ/dev/bus/usb/
と/test
ディレクトリにマウントすることで、ホストとコンテナの間でデバイスとファイルの共有が実現されます。
docker run -t -i --privileged -v /dev/bus/usb/:/dev/bus/usb -v /home/lrj/work/rv1126/model_convert/:/test rknn-toolkit:1.7.3 /bin/bash
-
docker run
: 新しいコンテナを開始します。 -
-t
: コンテナに擬似端末(擬似TTY)を割り当てます。 -
-i
: インタラクティブなコマンドラインを使用してコンテナを開いたままにします。 -
--privileged
: ホストデバイス上での操作を許可する権限をコンテナに与えます。 -
-v /dev/bus/usb/:/dev/bus/usb
: ホストの/dev/bus/usb/
ディレクトリをコンテナの/dev/bus/usb/
ディレクトリにマウントして、ホストとコンテナの間で USB デバイスへのアクセスを共有します。 -
-v /home/lrj/work/rv1126/model_convert/:/test
: ホストとコンテナ間でファイルを共有するには、ホスト上のディレクトリ/home/lrj/work/rv1126/model_convert/
をコンテナ内のディレクトリにマウントします。/test
-
rknn-toolkit:1.7.3
: 実行中のコンテナ イメージの名前とそのバージョン番号。 -
/bin/bash
: コンテナの起動直後に実行するコマンド。以下は、コンテナーを対話型シェルとして開くためのコマンド ラインです。
ミラーを削除するにはどうすればよいですか?
イメージを削除する前に、イメージの実行中のコンテナを停止し、コンテナを削除する必要があります。その後、イメージを削除できます。
docker stop <container_ID> && docker rm <container_ID> && docker rmi <image_name>
停止したコンテナに対話的に入るにはどうすればよいですか?
まずコンテナを起動します
docker start <container_ID>
次に対話的にコンテナに入ります
docker exec -it <container_ID> /bin/bash