プロジェクトのシナリオと問題の説明
この記事は、Docker イメージの構築、起動、実行、保存、エクスポート、新しい環境へのインポートの完全なプロセスを迅速に実現できる、Docker を使用するための簡単な説明ガイドです。各コマンドには多くのパラメーターと知識が含まれています。詳細な説明は自分で確認できます。この記事を使用すると、Xiaobi でイメージをすばやく構築して使用できます。
Dockerfileを使用してイメージを自動的に構築する
まず、使用するベースイメージに関する情報を含む Dockerfile を準備します。次の Dockerfile を例に挙げます。基本イメージは ubuntu20.04 オペレーティング システムに基づいており、cuda バージョンは 11.2.0、nvidia ドライバーのバージョンは 450.80.02、wget、git、vim、python3、python3-pip です。 、ffmpeg およびその他の一般的に使用されるツールを使用して、作業ディレクトリ /app を作成します。詳細については、この記事の最後にある参照リンクを参照してください。通常、GitHub 上の一部のプロジェクトでは、作成者の環境の Dockerfile も提供されます。
Dockerfile
FROM nvidia/cuda:11.2.0-devel-ubuntu20.04
RUN export DEBIAN_FRONTEND=noninteractive;apt-get update && \
apt-get install -y --no-install-recommends wget git vim python3 python3-pip ffmpeg
WORKDIR /app
Dockerfile の準備ができたら、Dockerfile が配置されているディレクトリで次のコマンドを実行してイメージをビルドします。
docker build -t MyUbuntu .
(最後の「.」を見逃さないでくださいね~)
パラメータ -t の後には画像のタグ名 (tag) が続きます。デフォルトでは、docker はビルド コンテキストから Dockerfile を検索します。また、-f パラメーターを使用して Dockerfile の場所を指定することもできます。
イメージが正常に作成されたら、docker images
コマンドを使用して、リポジトリ、タグ、イメージ ID などの情報を含む、作成されたイメージを表示できます。
上の写真を例にすると、新しく構築されたイメージ REPOSITORY は ebxxx06、TAG は最新、IMAGE ID は 4baxxxe34 (xxx はモザイク) です。
docker run 開始イメージ
簡単な開始コマンド:
docker run -it <镜像的REPOSITORY:TAG>
のように:
docker run -it MyUbuntu:latest
より複雑な起動コマンド:
docker run -it -v /home/app/VeraCode:/app/VeraCode/ -p 8060:8060 --entrypoint="/bin/bash" --gpus all --name MyUbuntu2023 MyUbuntu:latest
その中で、
パラメータ -v の後にローカル ディレクトリ (docker 内のディレクトリ) が続き、2 つのディレクトリは共有されます。パラメータ
-p の後にポート マッピングが続きます。
パラメータ --gpus all は GPU
パラメータを有効にするためのものです --名前の後にコンテナ名が続きます。
最後の MyUbuntu を取得します。latest は、開始するイメージの REPOSITORY:TAG です。
コンテナーが開始されると、コマンドはコンテナーに直接入り、コマンドはexit
コンテナーを終了できます。
docker exec コンテナを実行する
起動したコンテナに対して再度実行コマンドを入力するのは比較的簡単ですが、コンテナが起動しているか確認する必要があります。実行中のコンテナを表示する
手順履歴内のすべてのコンテナを表示する手順docker ps
docker ps -a
通常、最初の実行コマンドを使用してコンテナを起動して終了した後、コンテナのステータスは「終了」になりますコマンドを通じて起動するコンテナの CONTAINER ID を確認します (通常は最初の 3 桁のみが必要です)。コンテナーのステータスが Up ですが、
そうでないコンテナーを実行状態にし、次のコマンドを使用してコンテナーを実行できます。docker ps -a
docker start <CONTAINER ID> 或 <CONTAINER ID的前三位>
docker exec -it <CONTAINER ID> 或 <CONTAINER ID的前三位> /bin/bash
上の図を例にとります。コマンドは次のとおりです。
docker exec -it 074 /bin/bash
docker commit 保存コンテナ
コマンドを使用しdocker commit
てコンテナをイメージにパッケージ化すると、pip によってインストールされた Python ライブラリなど、コンテナの実行時にインストールした環境を維持できますが、エクスポートされたイメージのサイズは維持されます。初期の基本イメージよりもはるかに大きくなる必要があります。コマンドは次のとおりです。
docker commit <CONTAINER ID> <镜像的REPOSITORY:TAG>
のように:
docker commit 074 MyUbuntu:latest
docker save イメージ エクスポート
ローカル イメージのエクスポートには、次の 2 つのコマンドが使用できます。
docker save -o MyUbuntu.tar <IMAGE ID>
または
docker save <IMAGE ID> > MyUbuntu.tar
のように:
docker save -o MyUbuntu.tar 4baxxxe34
或
docker save 4baxxxe34 > MyUbuntu.tar
上記の IMAGE_ID は、次のような<mirror REPOSITORY:TAG> に置き換えることもできます。
docker save -o MyUbuntu.tar MyUbuntu:latest
或
docker save MyUbuntu:latest > MyUbuntu.tar
docker ロードイメージインポート
エクスポートされたイメージ MyUbuntu.tar パッケージを、イメージ パッケージを使用する必要がある Docker ホストに転送できます。次の 2 つのコマンドを使用してイメージをインポートできます。
docker load -i MyUbuntu.tar
または
docker load < MyUbuntu.tar
インポート後、docker images
コマンドを使用して、新しい環境にインポートされたイメージを表示します。起動して実行するには、上記で紹介した手順を使用します。
説明:
1. docker save と docker export の違い:
docker save はイメージのすべての情報を保存します (履歴情報を含む)。
現在の情報のみをエクスポートするには dockerload で docker import を使用し、docker import で使用します
。イメージをエクスポートするときはイメージ ID。新しい環境をインポートするときは、イメージの REPOSITORY と TAG が存在しない場合があります。次のコマンドを使用してイメージの名前を変更できます。
docker tag <IMAGE ID> <新镜像名称>:<新镜像标签>
参考文献、補足資料
Docker Dockerfile
Docker イメージを作成するにはいくつかの方法があります
Docker イメージの構築、Docker イメージとコンテナーのインポートとエクスポート