アイデアを通じてプロジェクトを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 の使用に関する詳細な説明

ブログ    

推薦する

Vue のプロダクション環境と開発環境を切り替えてフィルターを使用する方法

目次1. 本番環境と開発環境を切り替える最初の方法: .envファイルを設定する2番目の方法2. フ...

Docker で hyperf を開発する完全な使用例の詳細な説明

ハイパーフ公式サイトHyperf 公式ドキュメントのインストール1. Dockerの使用docker...

WeChatミニプログラムページとコンポーネント間の情報伝達と機能呼び出し

今回は、私自身の開発経験を踏まえて、以下の観点で関連内容を解説します。ページからコンポーネントにデー...

Apache Tomcat と IDEA エディターの統合に関する詳細なチュートリアル

1. Apache Tomcat 公式サイトから Tomcat 圧縮パッケージをダウンロードします。...

ウェブデザイナーが知っておくべき効率的なナビゲーションデザインの3つの原則

ウェブサイトのナビゲーションを設計することは、家の基礎を築くようなものです。基礎がしっかりしていなけ...

Keepalived を使用して Nginx の自動再起動とデュアルアクティブ ホットスタンバイの高可用性を実現する方法について

目次1. 概要2. Keepalivedを使用してNginxを自動的に再起動する2.1 シェルスクリ...

HTML でランダムロールコーラーを実装するためのサンプルコード

この点呼装置は簡易版であり、自動停止の必要性を考慮していないため、点呼を開始した後、停止ボタンをクリ...

Centos 用の rpm パッケージのカスタマイズと yum リポジトリの構築に関するチュートリアル

1 yumでソフトウェアをインストールしたときにダウンロードしたrpmパッケージを保存しますyum ...

Windows で MySQL のルート パスワードをリセットする方法

今日、WordPress がデータベースに接続できないことがわかりました。ウィンドウ サーバーにログ...

Webpack4プラグインの実装原理についての簡単な説明

目次序文知る練習すれば完璧になる序文wabpack では、ローダーの他にプラグインがコア機能です。プ...

JS ES の新機能、変数分離割り当て

目次1. 配列の分離割り当て1.1 配列分離割り当てとは何ですか? 1.2 配列分離割り当てに失敗し...

VMware のインストールと使用時の問題と解決策

仮想マシンは使用中であるか、接続できません次のようなエラーが報告された場合解決まずこのページにアクセ...

大きな太陽の天気アイコンを純粋な CSS で記述する方法の例

効果効果図は以下のとおりです実装のアイデアDivは太陽の長方形の光と影を実現します前の疑似要素は、既...

auto.jsを使用して毎日の自動チェックイン機能を実現する

auto.js を使用して毎日のチェックインを自動化する感染症のせいで、毎日時間通りに家に帰らなけれ...

Vueプロジェクトが完了した後にプロジェクトを最適化する方法の例

目次1. 開発モードとリリースモードに異なるパッケージエントリポイントを指定する2. 外部CDNリソ...