この記事では、を使用してポートを公開する方法を紹介します Dockerfile 実世界の例で。始めましょう。
まず、プロジェクトディレクトリを作成する必要があります。このディレクトリには、すべてのプロジェクトファイルと Dockerfile 。
次のコマンドを実行して、プロジェクトディレクトリを作成します myapp / ユーザーのホームディレクトリで、次の場所に移動します。
$mkdir〜/myapp&& CD〜/myapp
Webアプリの準備:
次に、ディレクトリを作成します src / の中に 〜/ myapp / 次のコマンドを使用してディレクトリを作成します。
$mkdirsrc
の中に src / ディレクトリ、私のNodeJSアプリケーションのすべてのソースコードが保持されます。
簡単なものを作成します app.js のファイル src / ディレクトリを作成し、ポートで単純なWebサーバーを実行します 8080 デモンストレーションのためだけに。
NS src / app.js ファイルには、次のコード行が含まれています。
Dockerfileの作成とポートの公開:
次に、を作成します Dockerfile の中に 〜/ myapp 次のコマンドを使用してディレクトリを作成します。
$接するDockerfile
次に、次の行を次のように入力します。 Dockerfile そしてそれを保存します。これらの行の意味については後で説明します。
ここ、 高山から:3.8 つまり、 高山:3.8 これから構築する新しいイメージのベースとしてのDockerイメージ Dockerfile 。
APKアップデートを実行する つまり、を実行します APKアップデート ベースDockerイメージのコマンド 高山:3.8 。
apk add –no-cachenodejsを実行します つまり、を実行します apk add NodeJSプログラミング言語をインストールするコマンド 高山:3.8 Dockerベースイメージ。
コピー./src/ app つまり、からすべてのファイルをコピーします 〜/ myapp / src ディレクトリへの /アプリ を使用してビルドする新しいDockerイメージのディレクトリ Dockerfile 。
CMD [/usr/bin/node、/app/app.js] つまり、を実行します /app/app.js を使用して新しいコンテナからファイル ノード にあるバイナリ / usr / bin / node 。
最後に、 EXPOSE 8080 / tcp つまり、TCPポートを公開またはオープンします 8080 ホストコンピュータに。
Dockerfileを使用したカスタムDockerイメージの作成:
それでは、カスタムDockerイメージを作成しましょう アルパインノード:v1 を使用して Dockerfile 作成したばかりです。
まず、あなたが 〜/ myapp / ディレクトリを作成し、次のコマンドを実行してカスタムDockerイメージを作成します アルパインノード:v1 :
$Dockerビルド-NSalpine-node:v1。
ご覧のとおり、カスタムDockerイメージ アルパインノード:v1 作成中です。必要なベースDockerイメージとパッケージがインターネットから取得されています。
ご覧のとおり、カスタムDockerイメージ アルパインノード:v1 正常に作成されました。
カスタムDockerイメージのテスト:
これで、カスタムDockerイメージをテストできます アルパインノード:v1 とても簡単に。私たちがしなければならないのは、からコンテナを作成することです アルパインノード:v1 画像。
次のコマンドを実行して、Dockerコンテナを作成します www から アルパインノード:v1 Dockerイメージ:
$docker run-NS -それ - 名前www alpine-node:v1
コンテナ www 創造された。
それでは、のIPアドレスを調べてみましょう。 www 次のコマンドを使用したDockerコンテナ:
$Dockerはwwwを検査します| グリップ住所ご覧のとおり、私の場合、IPアドレスは 172.17.0.3 。したがって、私が作成したNodeJSアプリケーションは、ポートのWebブラウザーからアクセスできる必要があります。 8080 このIPアドレスの。
出来上がり!ポートにアクセスできます 8080 私の www Dockerコンテナ。
これは基本的に、使用して構築するカスタムDockerイメージで特定のポートを公開する方法です。 Dockerfile 。
Dockerfileを使用したTCPおよびUDPポートの公開:
この記事の前のセクションでは、を使用してTCPポートを公開する方法を示しました。 Dockerfile 。
TCPポート(たとえば、TCPポート)を簡単に公開できます 53 )あなたの Dockerfile 次の行で:
公開53/tcpUDPポート(UDPポートとしましょう)を公開することもできます 53 )あなたの次の行で Dockerfile :
公開53/udpTCPポートとUDPポートは、次の行で同時に公開できます。 Dockerfile :
公開53/tcp公開53/udp
使用するプロトコル(TCPまたはUDP)を指定しない場合、デフォルトでTCPが使用されます。たとえば、次の行を Dockerfile :
公開53次に、DockerはTCPポート53を使用することを想定します。
Dockerfileを使用して複数のポートを公開する:
カスタムのMEANスタックDockerイメージを作成するとします。この場合、あるポート(たとえば、TCPポート80または8080)でHTTPサーバーを実行し、TCPポート21で実行されるFTPサーバー、TCPポート3306で実行されるSQLデータベースサーバー(たとえば、MySQL)を実行します。または、TCPポート27017または27018で実行されるNoSQLデータベースサーバー(たとえば、MongoDB)、TCPポート22で実行されるSSHサーバー。これは多くのポートです。
良いニュースは次のとおりです。を使用して作成されたカスタムDockerイメージで必要な数のポートを公開できます Dockerfile 。
上記の例のポートは、次の行で公開できます。 Dockerfile :
公開80/tcp公開8080/tcp
公開21/tcp
公開22/tcp
公開3306/tcp
公開27017/tcp
公開27018/tcp
必要に応じて、DockerはデフォルトでTCPを使用するため、プロトコル仕様をそのままにして、次の行で同じことを行うことができます。 Dockerfile :
公開80公開8080
公開21
公開22
公開3306
公開27017
公開27018
必要に応じて、TCPポートとUDPポートを混在させることができます Dockerfile 。たとえば、DNSサーバー(UDPポート53で実行)を実行している場合、上記の例とともに、次の行をに追加します。 Dockerfile 。
公開80公開8080
公開21
公開22
公開53/udp
公開3306
公開27017
公開27018
これが、を使用してポートを公開する方法です。 Dockerfile 。詳細については Dockerfile を使用してポートを公開します Dockerfile 、 読む Dockerfile のリファレンスガイド https://docs.docker.com/engine/reference/builder/#expose
この記事を読んでくれてありがとう。