以前、https://www.jb51.net/article/205922.htm で、Dockerfile を使用して Ubuntu 16.04 イメージをビルドし、コンテナー内で Messy_Test プロジェクトをコンパイルして実行する方法を紹介しました。ここでは、コンテナー内で NFS サーバー上の共有ディレクトリをマウントする方法を紹介します。 Dockerfile の内容は次のとおりです。 ubuntu:16.04より ラベル メンテナー="FengBingchun [email protected]" \ バージョン="1.0" \ 説明="dockerfile テスト" dep_items='git g++-5 nfs-common make' を実行します。 && apt-get アップデート \ && apt-get install -y $dep_items \ && ln -s /usr/bin/g++-5 /usr/bin/g++ \ && ln -s /usr/bin/gcc-5 /usr/bin/gcc \ && mkdir -p /mnt/nfs \ && rm -rf /var/lib/apt/lists/* イメージをビルドします。次のコマンドを実行すると、fengbingchun/ubuntu:16.04 という名前のイメージが正常に生成されます。 Ubuntu 16.04 で docker build を実行します。 ホスト ディレクトリをマウントして、新しいコンテナ テストを作成し、次のコマンドのいずれかを実行します。最初のコマンドが推奨されます。 docker run --cap-add sys_admin -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash docker run --privileged=true -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash NFS サーバーの IP が 10.107.2.1 であり、共有ディレクトリが共有されていると仮定して、マウントするコンテナーで次のコマンドを実行します。 /etc/init.d/rpcbind 開始 マウント -t nfs 10.107.2.1:/shared /mnt/nfs ソフト リンクを作成し、cmake 実行可能ファイルのパスを環境変数に追加して、次のコマンドを順番に実行します。 ln -s /mnt/nfs/Ubuntu-16.04/ /usr/local/toolchains echo "export PATH=/usr/local/toolchains/bin:$PATH" >> /etc/profile ソース /etc/profile したがって、イメージの作成時に cmake はインストールされていません。source コマンドを実行した後、cmake --version を実行して、次の図に示すように、cmake のバージョン情報を確認します。 次に、コンテナ内で /home/fengbingchun ディレクトリに移動し、Messy_Test をクローンして、次のコマンドを実行します。 git クローン https://github.com/fengbingchun/Messy_Test 次に、Messy_Test/prj/linux_cmake_CppBaseTest ディレクトリに cd し、次のコマンドを順番に実行します。 ./build.sh ./build/CppBaseTest 実行結果は下図の通りで、Dockerfile でビルドしたイメージを NFS 共有ディレクトリのあるコンテナにマウントした後、共有ディレクトリ内の cmake を通じて Messy_Test を正常にコンパイルして実行できることがわかります。 次のコマンドを実行すると、コンテナ内の NFS サーバーによって共有されているディレクトリを表示することもできます。 ショーマウント -e 10.107.2.1 イメージ fengbingchun/ubuntu:16.04 を tarball に保存し、次のコマンドを実行します。 docker save -o ubuntu_16.04.tar fengbingchun/ubuntu:16.04 ubuntu_16.04.tar を Ubuntu システムにコピーし、tarball からイメージをロードして、次のコマンドを実行します。 docker load -i ubuntu_16.04.tar 次に、Windows で同様の操作を実行し、新しく作成されたコンテナー test で Messy_Test をコンパイルして実行し、次のコマンドを順番に実行します。 docker run --privileged=true -it -P --name test --mount type=bind,source=/home/xxxx/Disk/GitHub/docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash を実行します。 /etc/init.d/rpcbind 開始 マウント -t nfs 10.107.2.1:/shared /mnt/nfs ln -s /mnt/nfs/Ubuntu-16.04/ /usr/local/toolchains echo "export PATH=/usr/local/toolchains/bin:$PATH" >> /etc/profile ソース /etc/profile cd /home/fengbingchun/ git クローン https://github.com/fengbingchun/Messy_Test cd Messy_Test/prj/linux_cmake_CppBaseTest/ ./build.sh ./build/CppBaseTest 実行結果は下図の通りです。Windows で生成されたイメージをパッケージ化した後、Ubuntu にロードすると正常に使用できることがわかります。 知らせ: (1) Ubuntuでは、コンテナを作成するときに「--privileged=true」を使用してください。そうしないと、マウント時に「mount.nfs: access denied by server while mount 10.107.2.1:/shared」というエラーが報告されます。 (2)Windowsでは、コンテナが動かなくなることがあります。コンテナを削除して新しいコンテナを作成してください。 これで、Docker コンテナで NFS 共有ディレクトリをマウントする方法についての記事は終了です。Docker コンテナで NFS 共有ディレクトリをマウントする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: HTML チュートリアル: DOCTYPE の省略形
MySQLでは、2つ以上のベーステーブルにビューを作成します。学生テーブルとstu_infoテーブル...
この記事の例では、Vueモバイル端末で指のスライド効果を実現するための具体的なコードを紹介します。具...
Ubuntu 20.04をインストールする NVIDIAドライバーをインストールする Pytouch...
フロートはWebページのレイアウトでよく使用されますが、フローティングブロックレベル要素は標準のドキ...
序文「データベース トランザクションの特徴は何ですか?」と尋ねられたら、 ACID 特性である原子性...
目次序文&& 演算子|| 演算子|| 演算子の簡単なデモ章の目的ケース演習(json...
計算機の主な機能は数値計算を実行することです。計算機機能の Web インスタンスを開発すると、js ...
目次前に書いてビジネスコードは環境変数を使用するwebpack.DefinePlugin プラグイン...
1. レスポンシブ デザインとは何ですか?レスポンシブデザインとは、ウェブサイトの開発プロセス中に、...
以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...
次のように: docker run -d -p 5000:23 -p 5001:22 --name ...
0x0 はじめにまず、ハッシュアルゴリズムとは何でしょうか?メッセージやセッション項目など、一部のデ...
前回の記事では、Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決...
序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...
1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...