アイデアを通じてプロジェクトをDockerにパッケージ化する方法

アイデアを通じてプロジェクトをDockerにパッケージ化する方法

多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分のプロジェクトを Docker (Centos) に公開する方法を紹介します。

仮想マシンをインストールするDockerをダウンロードする

公式ウェブサイトのリンクに直接アクセスしてください:Docker 公式ドキュメント。

1.公式ホームページを開き、ダウンロードとインストールを選択します

表紙

2. Linux用のDockerを選択する

Linux用のDockerを選択する

3. CentOSのバージョンを選択します(システムに応じて適切なバージョンを選択してください)

Centosを選択

4. 公式サイトの操作手順に従う(必要な手順を自分で選択する)

手順に従ってください

1) 以前にインストールしたDockerを削除する(必須)

sudo yum dockerを削除します\
                  dockerクライアント\
                  docker-client-最新 \
                  docker-common \
                  docker-最新 \
                  docker-最新-logrotate \
                  docker-logrotate \
                  dockerエンジン

2) yumツールパッケージをインストールする(必須)

sudo yum インストール -y yum-utils

3) Dockerリポジトリを追加する(必須)

 sudo yum-config-manager \
    --リポジトリを追加\
    https://download.docker.com/linux/centos/docker-ce.repo

4) オプションパラメータ(選択に応じて追加)

オプションパラメータ

5) Docker Engine をインストールします (必須。他のバージョンをインストールする場合は、この手順をスキップできます)

sudo yum インストール docker-ce docker-ce-cli containerd.io

6) Docker のオプション バージョンを表示します (手順 5 を完了している場合は、この手順をスキップしてください)

yum list docker-ce --showduplicates | sort -r

7) 必要に応じて特定のバージョンの Docker をインストールします (手順 5 を完了している場合は、この手順をスキップしてください)

 sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

8) Dockerを起動する(必須)

sudo systemctl dockerを起動します

9) 起動時にDockerが自動的に起動するように設定する(オプション)

systemctl ドッカーを有効にする

10) Docker イメージ アクセラレーションを設定する (オプション、イメージのダウンロード速度を上げることができます)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "レジストリミラー": ["https://sfgi0c9b.mirror.aliyuncs.com"]
}
終了
sudo systemctlデーモンリロード
sudo systemctl dockerを再起動します

5. Docker がインストールされたので、Web プロジェクトを手動でイメージにデプロイして、Docker の状態をテストします。プロジェクトを Docker に公開する方法を知りたい場合は、この手順をスキップできます。

Web プロジェクトを手動で Docker にデプロイする

1. Webプロジェクトを作成してパッケージ化する(war)
リンク: プロジェクトをダウンロードしてください。
2. tomcat イメージをダウンロードします。すべてのイメージは docker hub で検索できます。

リンク: docker hub。

docker hubで検索するとエラーメッセージが表示されるのはto​​mcat
適切な画像バージョンを選択してください

tomcat8をインストールします。タグタブを選択し、バージョンを選択します。

ダウンロードする適切なバージョンを選択してください

docker pull tomcat:8.5-jdk8-corretto

画像をダウンロード

画像をダウンロード

3. ダウンロードした画像を表示する

Docker イメージ

ミラーを見る

4. イメージのインスタンスを実行してフォルダを作成する

mkdir -p /mydata/tomcat/webapps

Webプロジェクトを/mydata/tomcat/webappsディレクトリにアップロードします。

rzコマンドをインストールします(ファイル転送ツールをお持ちの場合は、独自のツールを使用できます)

yum インストール lrzsz
cd /mydata/tomcat/webapps

rzコマンドを実行してファイルをアップロードします

rz

ファイルの転送

ファイルが存在するか確認する

ls

ファイルを表示

Tomcatインスタンスを起動する

docker run --name tomcat -itd -v /mydata/tomcat/webapps:/usr/local/tomcat/webapps -p 8080:8080 d2b

d2b はイメージ ID の最初の 3 文字です。イメージ名とタグを記述できます。--name はインスタンスに名前を付けます。
-v は、コンテナ外のディレクトリ mydata/tomcat/webapps とコンテナ内の /usr/local/tomcat/webapps ディレクトリを一緒にマウントし、コンテナに入らずにプロジェクトを外部に直接アップロードできるようにします。
-p は、内部ポート 8080 を外部ポート 8080 にバインドします。外部ポート 8080 を介してコンテナの内部ポート 8080 にアクセスできます。これら 3 つのパラメータは最も重要なパラメータです。その他のパラメータについては、docker run パラメータ テーブルを参照してください。詳細リンク: docker run パラメータ。

ファイルを表示

現在のプロジェクト パッケージが解凍され、例が実行されていることがわかります。

docker ps (実行中のインスタンスを表示する) 

docker ps -a (開始済みと未開始のものを含むすべてのインスタンスを表示) 

インスタンスの起動を表示

インスタンスが開始され、効果を試すことができます

http://192.168.240.3:8080/hello/

5. ポート番号を 80 に変更するにはどうすればいいですか?

1) 元のインスタンスを停止して削除する

docker 停止 tomcat
docker rm <インスタンスID> 

インスタンスID

2) インスタンスを再実行してポート80をマップする

tomcat の webapps ディレクトリに docker run を実行します。

3) コンテナに入る

docker exec -it tomcat /bin/bash   
tomcatは作成されたばかりのインスタンス名です

4) /usr/local/tomcat/conf/server.xml を見つけて変更します。コンテナに入る方法は外部操作と同じです。

vi /usr/local/tomcat/conf/server.xml 

ポート80に変更

5) コンテナから出る

出口

6) コンテナを再起動する

docker で tomcat を再起動する
// コンテナが起動時に自動的に起動するように設定する docker update --restart=always <コンテナ名>

6. コンテナをパッケージ化して他の場所にデプロイするにはどうすればよいですか?
完成したコンテナを画像にパッケージ化することができます
1) コンテナ包装を画像化する
docker commit -a -m <コンテナID> <自分のコンテナ名>

docker commit -a "zhnagdong" -m "test" d98 tomcattest

2) パッケージ化された画像を表示する

Docker イメージ

パッケージ化された画像を表示する

次に、イメージを 2 つの方法でエクスポートします。1 つ目は、ファイルを直接エクスポートして移動する方法です。2 つ目は、Docker Hub にアップロードしてからリモートでプルする方法です。
3) ファイルをエクスポートしてコマンドを直接実行する

docker save -o tomcat.tar 814
//-o はファイル 814 として保存された画像の ID を表します

エクスポートした画像を表示する

適切な場所にコンテナをインポートする

docker load --input tomcat.tar または docker load < tomcat.tar

4) docker リポジトリにアップロードする (まず登録するために docker hub アカウントを持っている必要があります)
まずタグを入力する必要があります

docker タグ tomcattest:latest dwyerdocker/tomcattest:v1

//tomcattest:latest 形式は REPOSITORY:TAG です
// dwyerdocker/tomcattest:v1 形式は username/name:tag です。名前とタグは自分で作成します。ユーザー名は docker hub 上のユーザー名である必要があります。そうでない場合は、ウェアハウスにプッシュできません。

Docker Hubアカウントを登録する

Docker Hubアカウントにログインする

dockerログイン

イメージをリモートリポジトリにプッシュする

docker push dwyerdocker/tomcattest:v1

弊社の倉庫に来て、適切な場所から画像を取得してください

ここに画像の説明を挿入

上記は、docker の基本的な使用方法です。次に、idea を使用して docker イメージを構築し、プロジェクトをデプロイする方法について説明します。

アイデアを通じてプロジェクトをDockerにデプロイする

1. まず、docker 構成ファイルを変更して、リモートからアクセスできるようにします。docker はデフォルトで tcp プロトコルをサポートしていないため、tcp プロトコルを有効にするには、docker 構成ファイルを開く必要があります。

vi /lib/systemd/system/docker.service 

Docker 設定ファイル

Execstart -H tcp://0.0.0.0:2375 の最後に TCP プロトコルを設定します。

TCPプロトコルを設定する

Dockerを再起動する

systemctlデーモンリロード
systemctl dockerを再起動します

プロセス情報を見ると、dockerはすでにtcpプロトコルをサポートしていることがわかりました。

ps -ef | grep docker 

作品鑑賞情報

2. ideaにdockerプラグインがインストールされていることを確認する

Dockerプラグイン

3. ルートパスにDockerFileファイルを作成する

Dockerfileを作成する

java:8より
ボリューム /tmp
/target/spring-demo-0.0.1-SNAPSHOT.jar app.jar を追加します。
エクスポーズ8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

4. dockerが接続されているかどうかをテストする

ここに画像の説明を挿入

アクセスタイムアウトが発生した場合は、ファイアウォールが閉じられているかどうかを確認してください。

systemctl 停止 ファイアウォール

5. 設定を追加する

設定を追加

公開ポート番号を設定する

ここに画像の説明を挿入
ここに画像の説明を挿入

6. プロジェクトをパッケージ化する

パッケージプロジェクト

7. 右クリックして展開する

デプロイする前に Docker を再起動することをお勧めします。ポート番号の競合に注意してください。

ここに画像の説明を挿入

8. 効果を確認する

最終結果

これで、アイデアを通じてプロジェクトを Docker にパッケージ化する方法についての説明は終わりです。Docker へのアイデアのパッケージ化に関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • イメージのパッケージ化とワンクリック展開を実現するためにDockerを組み合わせたアイデア
  • SpringBoot のパッケージ化と Docker へのアップロード、およびマルチインスタンス デプロイメントの実装に関する簡単な分析 (IDEA バージョン)
  • DockerをIDEAに統合してパッケージングを実現する方法

<<:  CSS3 @mediaの基本的な使い方のまとめ

>>:  MySQL sql_mode の使用に関する詳細な説明

推薦する

MySQL の pid とソケットの詳細な説明

目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...

vue3.0+echarts は 3 次元の縦棒グラフを実現します

序文: Vue3.0はechartsの3次元縦棒グラフを実装します結果: 実装手順: 1. echa...

ウェブページを白黒に変換します(Google、Firefox、IE、その他のブラウザと互換性があります)

CSSファイルに書き込むコードをコピーコードは次のとおりです。 01.html {グレイスケール(1...

vscodeを使用してReact Native開発環境を構築する方法を教えます

質問コードにはプロンプトがありません: RN 開発に不慣れな、フロントエンド以外の学生の多くは、「ど...

マージントップ崩壊現象とその具体的解決策

マージントップの崩壊とはmargin-top の崩壊は、CSS ボックス モデルで発生する現象です。...

Docker Desktop で rocketmq をインストールするための非常に詳細なチュートリアル

Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...

JS の配列トラバーサルについて、一般的なループをいくつ知っていますか?

序文基本的なデータ構造として、配列とオブジェクトはさまざまなプログラミング言語で重要な役割を果たしま...

jQueryはネストされたタブ機能を実装します

この記事では、ネストされたタブ機能を実装するためのjQueryの具体的なコードを参考までに紹介します...

VMware 構成 VMnet8 ネットワーク方法の手順

目次1. はじめに2. 設定手順1. はじめに1. NAT モード (VMnet8) は、仮想マシン...

JavaScript ドラッグタイム ドラッグケースの詳細な説明

目次DragEvent インターフェースデータ転送インターフェースの概要DataTransfer の...

MySQL カウントを向上させる方法のまとめ

多くのプログラマーは MySQL に精通していると思います。多くの人が count の使い方と、最適...

MySQLの日付と時刻の間隔計算の分析例

この記事では、例を使用して、MySQL の日付と時刻の間隔計算について説明します。ご参考までに、詳細...

JavaScript の new 演算子の原理と例の詳細な説明

新しい用途new の機能は、コンストラクターを通じてインスタンス オブジェクトを作成することです。イ...

21 の MySQL 標準化および最適化のベスト プラクティス!

序文良い習慣はすべて宝物です。この記事は、SQL の後悔の治療法、SQL パフォーマンスの最適化、S...

2時間のDocker入門チュートリアル

目次1.0 はじめに2.0 Dockerのインストール3.0基本的なDockerコマンド4.0 Do...