ホームページ Java &#&チュートリアル JAVA Tomcat動作環境を構築するためのDocker学習ノートを詳しく解説

JAVA Tomcat動作環境を構築するためのDocker学習ノートを詳しく解説

Feb 03, 2017 pm 01:29 PM

前書き

Docker は、アプリケーションの自動デプロイメント ソリューションを提供することを目的としており、Linux システム上にコンテナ (軽量の仮想マシン) を迅速に作成し、アプリケーションを自動インストールによって簡単に実装できます。 、展開とアップグレードは非常に便利です。コンテナーを使用するため、実稼働環境と開発環境を相互に影響を与えることなく簡単に分離できます。これは、Docker を実行する最も一般的な方法です。その他のプレイ方法には、大規模な Web アプリケーション、データベース デプロイ、継続的デプロイ、クラスター、テスト環境、サービス指向のクラウド コンピューティング、仮想デスクトップ VDI などが含まれます。

主観的な印象: Docker は Go 言語で書かれており、cgroup を使用してリソースの分離を実現し、コンテナ テクノロジは Unix プロセスを独立して実行できる軽量の仮想化ソリューションを提供します。これは、安全で反復可能な環境でのソフトウェアの展開を自動化する方法を提供します。 LXC コマンドは少し複雑なので、興味がある方は、LXC をベースに以前に書いた記事 (JAVA PAAS クラウド プラットフォームの簡易版をゼロから構築する) を事前に確認してください。

関連する実装原理、関連する理論、アプリケーション シナリオなどについては、このシリーズの後半で説明します。ここでは、Docker に基づいて Tomcat オペレーティング環境を構築するための完全なマニュアルを簡単に説明します。まずまともなデモを作成すると、その効果がわかり、さらに前進するのに役立つ可能性があります。

環境

この記事のすべての環境では、ubuntu-13.10-server-amd64 が 64 ビット システムであることに注意してください。理論的には、他の仮想マシンも完全に実行可能です。

Docker のインストール

Docker バージョン 0.7 には、Linux カーネル 3.8 サポートと AUFS ファイル システムが必要です。

# 检查一下AUFS是否已安装
sudo apt-get update
sudo apt-get install linux-image-extra-`uname -r`
# 添加Docker repository key
sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
# 添加Docker repository,并安装Docker
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker
# 检查Docker是否已安装成功
sudo docker version
# 终端输出 Client version: 0.7.1
Go version (client): go1.2
Git commit (client): 88df052
Server version: 0.7.1
Git commit (server): 88df052
Go version (server): go1.2
Last stable version: 0.7.1
ログイン後にコピー

sudo を削除します

Ubuntu では、Docker を実行するときに毎回 sudo とパスワードを入力する必要がありますが、これは非常に面倒です。ここで微調整して、現在のユーザーの実行権限を対応する docker ユーザー グループに追加しましょう。

# 添加一个新的docker用户组
sudo groupadd docker
# 添加当前用户到docker用户组里,注意这里的yongboy为ubuntu server登录用户名
sudo gpasswd -a yongboy docker
# 重启Docker后台监护进程
sudo service docker restart
# 重启之后,尝试一下,是否生效
docker version
#若还未生效,则系统重启,则生效
sudo reboot
ログイン後にコピー

インスタンス - ubuntu 仮想マシンを実行する Docker をインストールします

Docker がインストールされ、バックグラウンド プロセスが自動的に開始されます。仮想マシン インスタンスをインストールできます (ここでは、公式デモで使用されている学習/チュートリアル イメージを例にします)。 ):

docker pull learn/tutorial
ログイン後にコピー

インストールが完了したら、効果を確認してください

docker run learn/tutorial /bin/echo hello world
ログイン後にコピー

新しくインストールされた仮想マシンを対話的に入力します

docker run -i -t learn/tutorial /bin/bash
ログイン後にコピー

次の内容が表示されます:

root@51774a81beb3:/#
ログイン後にコピー

を入力したことを意味しますインタラクティブな環境。

ログインしてアクセスするための SSH クライアントの外部使用を容易にするために、SSH ターミナル サーバーをインストールします

apt-get update
apt-get install openssh-server
which sshd
/usr/sbin/sshd
mkdir /var/run/sshd
passwd #输入用户密码,我这里设置为123456,便于SSH客户端登陆使用
exit #退出
ログイン後にコピー

操作したばかりのインスタンス コンテナ ID を取得します

#docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51774a81beb3 learn/tutorial:latest /bin/bash 3 minutes ago Exit 0 thirsty_pasteur
ログイン後にコピー

現在操作しているコンテナ ID が 51774a81beb3 であることがわかります。 。すべての操作が実行されたら、SSH ログインを容易にするために送信して保存する必要があることに注意してください:

docker commit 51774a81beb3 learn/tutorial
ログイン後にコピー

このミラー インスタンスをバックグラウンド プロセスとして長時間実行します:

docker run -d -p 22 -p 80:8080 learn/tutorial /usr/sbin/sshd -D
ログイン後にコピー

ubuntu で実行されている SSH サーバーコンテナはポート 22 を占有します。 -p 22 を指定します。 -p 80:8080 は、ubuntu がポート 8080 で Tomcat を実行しますが、外部 (コンテナーの外) にマップされたポートは 80 であることを意味します。

この時点で、正常に実行されるかどうかを確認してください。

#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
871769a4f5ea learn/tutorial:latest /usr/sbin/sshd -D About a minute ago Up About a minute 0.0.0.0:49154->22/tcp, 0.0.0.0:80->8080/tcp focused_poincare
ログイン後にコピー

ここでランダムに割り当てられた SSH 接続ポート番号は 49154 であることに注意してください:

ssh root@127.0.0.1 -p 49154
ログイン後にコピー

パスワードを入力してください。 SSH を制御したら、残りは非常に簡単です。JDK をインストールしたり、Tomcat をインストールしたりするだけです。それはあなた次第です。以下はインストール スクリプトです:

# 在ubuntu 12.04上安装oracle jdk 7
apt-get install python-software-properties
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install -y wget
apt-get install oracle-java7-installer
java -version
# 下载tomcat 7.0.47
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.47/bin/apache-tomcat-7.0.47.tar.gz
# 解压,运行
tar xvf apache-tomcat-7.0.47.tar.gz
cd apache-tomcat-7.0.47
bin/startup.sh
ログイン後にコピー

デフォルトでは、tomcat はポート 8080 を占有します。たった今ミラー インスタンスを起動するときに、-p 80:8080 が指定され、ubuntu ミラー インスタンス/コンテナーがポート 8080 を開き、ホスト ポートは 80 です。ホストの IP アドレスがわかっていれば、自由にアクセスできます。ホスト マシン上で、curl を通じてテストしてください:

curl http://192.168.190.131
ログイン後にコピー

もちろん、ブラウザを使用してアクセスすることもできます。

実際の状況では、Tomcat はポート 80 を外部に直接開くことができない場合があり、通常は nginx/Apache またはファイアウォールの内側に配置されます。

概要

Docker を使用して Tomcat ランタイム環境を構築することは一般に非常に簡単で、PAAS の存在を確認できます。はい、PAAS の基盤となるサービスとして Docker を使用すること自体は複雑ではありません。 ここで、スクリプト ファイルを使用してイメージ インスタンスを構築する方法について説明し、同時に Docker の実装原理とメカニズムについて説明します。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

Docker の学習ノートや JAVA Tomcat 動作環境の構築に関する関連記事の詳細な説明については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

エンティティクラス変数名をエレガントに取得して、データベースクエリ条件を構築する方法は? エンティティクラス変数名をエレガントに取得して、データベースクエリ条件を構築する方法は? Apr 19, 2025 pm 11:42 PM

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? 会社のセキュリティソフトウェアはアプリケーションの実行に失敗していますか?それをトラブルシューティングと解決する方法は? Apr 19, 2025 pm 04:51 PM

一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

MapsTructを使用したシステムドッキングのフィールドマッピングの問題を簡素化する方法は? MapsTructを使用したシステムドッキングのフィールドマッピングの問題を簡素化する方法は? Apr 19, 2025 pm 06:21 PM

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

Intellijのアイデアは、ログを出力せずにSpring Bootプロジェクトのポート番号をどのように識別しますか? Intellijのアイデアは、ログを出力せずにSpring Bootプロジェクトのポート番号をどのように識別しますか? Apr 19, 2025 pm 11:45 PM

intellijideaultimatiateバージョンを使用してスプリングを開始します...

Javaオブジェクトを配列に安全に変換する方法は? Javaオブジェクトを配列に安全に変換する方法は? Apr 19, 2025 pm 11:33 PM

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

ARM上のJavaプログラムとX86アーキテクチャCPUのメモリリークの違いは何ですか? ARM上のJavaプログラムとX86アーキテクチャCPUのメモリリークの違いは何ですか? Apr 19, 2025 pm 11:18 PM

さまざまなアーキテクチャCPUでのJavaプログラムのメモリリーク現象の分析。この記事では、JavaプログラムがARMおよびX86アーキテクチャCPUでさまざまなメモリ動作を示すケースについて説明します...

Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Apr 19, 2025 pm 11:36 PM

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。

名前を数字に変換してグループ内でソートを実装する方法は? 名前を数字に変換してグループ内でソートを実装する方法は? Apr 19, 2025 pm 01:57 PM

名前を数字に変換してグループ内でソートを実装する方法は?ユーザーをグループでソートする場合、ユーザーの名前を数字に変換して、異なる可能性があることがよくあります...

See all articles