1. まずhello-world.cppファイルを作成します プログラムコードは次のとおりです。 #include <iostream> 名前空間 std を使用します。 intメイン(){ cout << "hello-world" << endl; cout << "私の最初の docker" << endl; 0を返します。 } たとえば、ホームパスにDockerFile/hello-worldディレクトリを作成し、その中にhello-world.cppソース ファイルを作成しました。 2. DockerFileファイルを書き込む このファイルとソース ファイルは、上記のようにhello-dockerfileという名前のフォルダーにあります。 codenvy/cpp_gcc より mkdir /home/user/myapp を実行します。 hello-world.cpp /home/user/myapp を追加します。 ワークディレクトリ /home/user/myapp g++ hello-world.cpp -o helloを実行します CMD ["./hello"] Dockerfile のコマンドについては、私の別のブログでご覧いただけます: https://www.jb51.net/article/197996.htm 1. codenvy/cpp_gccから FROM の後には、ターゲット イメージで使用されるベース イメージが続きます。ベース イメージは 1 つだけ指定できます。docker searchコマンドを使用して、 docker Hubで必要なベース イメージを見つけることができます。 C++ ファイルをコンパイルしたいので、g++ または gcc のイメージをベース イメージとして使用できます。以下のように、g++ のイメージを検索できます。 たとえば、2番目の方法を使用し、次の図に示すように、 docker pullコマンドを使用してイメージをローカルにプルします。 次の図に示すように、 docker imagesコマンドを入力して、すべてのローカル イメージを表示します。 たとえば、ここには 2 つのイメージがあります。1 つは先ほどダウンロードしたcodenvy/cpp_gccで、もう 1 つはubuntuイメージです。 ここで、なぜ Ubuntu イメージを使用しないのかと疑問に思う人もいるかもしれません。私たちの印象では、Ubuntu には g++ および gcc コンパイラが付属しており、このイメージは比較的小さいです。ここで説明させてください。docker の ubuntu イメージは ubuntu カーネルに関連するものだけを保持するため、コア以外のものはすべて可能な限り削除されています。これは、通常インストールする ubuntu イメージが約 2 GB であるのに対し、docker の ubuntu イメージが 70 MB 強である理由も説明しています。この Ubuntu イメージには gcc コマンドや g++ コマンドはなく、sudo コマンドさえも含まれていないため、手動でダウンロードして設定する必要があります。 たとえば、ubuntu イメージを使用してコンテナを生成します。 次に、g++ のバージョンを確認します。 g++がインストールされていないことが判明 sudo コマンドも同様です。 2. mkdir /home/user/myappを実行します。 コンテナを構築するときは、 RUNコマンドと、それに続く一般的な Linux コマンドが必要です。 このコマンドは、/home/user パスに新しい myapp フォルダーを作成します。 3. hello-world.cpp /home/user/myappを追加します。 ADDコマンドは、ホストマシンからイメージにファイルをコピーします。 COPYコマンドも使用できますが、 ADD はCOPYよりも強力です。 ADD には解凍機能があります。 このコマンドは、最初の手順で作成された hello-world.cpp ソース ファイルをイメージ内の /home/user/myapp パスにコピーします。 4. ワークディレクトリ /home/user/myapp WORKDIRコマンドは、コンテナを作成するときにコンテナのデフォルトの作業ディレクトリを指定します。 このコマンドは、イメージ内の home/user/myapp パスをデフォルトの作業パスとして使用します。 5. g++ hello-world.cpp -o helloを実行します。 このコマンドはg++を使用してhello-world.cppソースファイルをコンパイルし、実行可能ファイルhelloをビルドします。 6. CMD ["./hello"] CMD は、指定されたコンテナが作成された後に実行される最初のコマンドです。 このコマンドは、前の手順でビルドされた実行可能ファイルhelloを実行します。 3. イメージを作成する コマンドを使用します: hello-docker ファイルをビルドします。
イメージを構築するプロセスを次の図に示します。 ビルドが完了したら、ビルドが成功したかどうかを確認し、 docker imagesコマンドを使用して現在のローカル イメージをすべて表示します。 ここで、もう 1 つのイメージmy_hello_dockerが表示されます。これは、先ほど作成したイメージであり、イメージが正常に構築されたことを示しています。 4. イメージを通してコンテナを実行する 次のコマンドでコンテナをインスタンス化します docker 実行 my_hello_docker:v1.0 すると、次の出力が得られます。 出力は私たちが作成した C++ ファイルと一致しており、Docker を使用して単純な C/C++ プログラムをデプロイし、目的を達成できたことを示しています。 これで、docker を使用して簡単な c/c++ プログラムをデプロイする方法についての記事は終了です。docker を使用して c/c++ プログラムをデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 全体または単一のテーブルデータのエクスポート
今日、私はプロジェクトの移行の問題に取り組んでいましたが、突然、大量の写真をどうやって移動したらよい...
1. コマンドの紹介read コマンドは、シェルの組み込みコマンドで、標準入力または -u オプショ...
1. KVM仮想マシンの移行方法と注意すべき点KVM 仮想マシンを移行する方法は 2 つあります。...
目次1. はじめに2. MySQLルーターを構成する2.1 MySQLルーターのインストール2.2 ...
1. Dockerの紹介1.1 仮想化1.1.1 仮想化とは何ですか?コンピュータにおける仮想化とは...
CSS には 4 種類の配置方法があり、シナリオによって効果が異なります。ここでは、これら 4 種類...
最近 Linux をいじっていたので、nginx の新しいバージョンをインストールしたいと思いました...
今日、誰かがコードを調整するのを手伝っていたとき、次のようなスタイルを見つけました。 背景位置: 5...
序文binlog は、MySQL のすべての追加、削除、および変更ステートメントを記録するバイナリ ...
序文この記事では、山括弧のその他の用途をさらに詳しく見ていきます。前回の記事では、山括弧 (<...
2048ミニゲーム、参考までに具体的な内容は以下のとおりですまず、2048ゲームは16のグリッドか...
1. 背景私たちは時々社内研修を行っており、実験環境をよく利用しています。最初はdockerコンテナ...
1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...
目次1. プロトタイプ(明示的なプロトタイプ) 2. __proto__ (暗黙のプロトタイプ) 3...
Nginxの仕組みNginx はコアとモジュールで構成されています。 Nginx 自体は実際にはほと...