Docker は共通サービスをインストールします
1.mysqlをインストールする
# 1. mysql イメージをローカルにプルするdocker pull mysql:tag (タグはデフォルトでは最新バージョンを追加しません)# 2. mysql サービスを実行するdocker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:tag -- 外部ポートが公開されていないため、外部に接続できませんdocker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:tag -- 外部ポートを公開すると、外部から接続できるようになります (ファイアウォールが公開されたポートを開き、ポートが競合できない場合)# 3. mysqlコンテナに入るdocker exec -it コンテナ名|コンテナ ID bash# 4. mysql ログを外部から表示するdocker ログのコンテナ名|コンテナ ID# 5.mysqlコンテナ起動設定docker run --name mysql -v /root/mysql/data:/var/lib/mysql -v /home/mysql/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:タグ設定項目の説明:
-v /root/mysql/data:/var/lib/mysql: データのマウント -v /home/mysql/my.cnf:/etc/my.cnf: mysql 設定ファイルをマウントします (独自のコンテナ内の設定場所に従って、コンテナに入り、find / -name my.cnf を使用してクエリできます)設定ファイルの場所) -e MYSQL_ROOT_PASSWORD=root: root アカウントのパスワードを設定します。# 6. データのバックアップは、ウィンドウ システム | macos システム (クライアント ツール モード) でのクライアント ツールの使用など、他のクライアント アクセスを通じて実行できます。# 7. mysql データベースを SQL ファイルとしてバックアップする (コマンド モード)docker exec mysql|コンテナID sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql --すべてのデータをエクスポートしますdocker exec mysql sh -c 'exec mysqldump --databases データベース テーブル -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql -- 指定されたデータベース データをエクスポートしますdocker exec mysql sh -c 'exec mysqldump --no-data --databases データベース テーブル -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql -- 指定されたデータベース データをデータなしでエクスポートします# 9. SQL ファイルを mysql 内で実行しますdocker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /root/xxx.sql
2. Redis サービスをインストールする
# 1. Docker Hub で Redis イメージを検索するドッカー検索 Redis# 2. Redis イメージをローカルにプルするドッカープル Redis
# 3. 設定ファイルのマウント(1) 設定ファイルの作成redis.conf にタッチする(2) 設定ファイル
vim redis.confを変更する
(3) 次の設定を追加します
。bind 0.0.0.0 ----------enable Remote Accessappendonly はい --------永続性を有効にするappendfilename "appendonly.aof" ----------永続ファイル名requirepass 123456 ----------パスワードを設定してください# 4. Redis サービスを開始し、コンテナーを実行します (基本)docker run --name redis --network 3c -p 6379:6379 -v /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /home/redis/db:/データ --restart=always -d redis:5.0.10 redis-server /usr/local/etc/redis/redis.conf設定項目の説明:
- -v /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf: マウント設定ファイル
- -v /home/redis/db:/data: 永続化のためにデータをマウントします。
- --restart=always: Docker の起動時に Redis コンテナが自動的に起動するように設定します。
- redis-server /usr/local/etc/redis/redis.conf: docker で redis 構成ファイルのパスを指定します
# 5. 起動ログを表示するdocker logs -t -f コンテナ ID|コンテナ名# 6. 表示するコンテナーを入力しますdocker exec -it コンテナ ID|名前 bash
3.Nginxをインストールする
# 1. Docker Hub で nginx を検索するドッカー検索nginx# 2. nginx イメージをローカルにプルします (次のダウンロードでバージョンが指定されていない場合、デフォルトで最新バージョンがダウンロードされます)[root@localhost ~]# docker pull nginxデフォルトのタグを使用: 最新最新: ライブラリ/nginx からのプルafb6ec6fdc1c: プルが完了しましたb90c53a0b692: プルが完了しました11fa52a0fdc0: プルが完了しましたダイジェスト: sha256:30dfa439718a17baafefadf16c5e7c9d0a1cde97b4fd84f63b69e13513be7097ステータス: nginx の新しいイメージをダウンロードしました: 最新docker.io/library/nginx:最新# 3. nginxコンテナの起動(基本)docker run --name nginx01 -p 80:80 -d nginx:1.19.10# 4. コンテナに入るdocker exec -it nginx01 bashnginx ディレクトリを見つけます。find / -name 'nginx' ------------------nginx に関するすべてのディレクトリfind / -name 'nginx.conf' --------------nginx 設定ファイルが配置されているディレクトリ ( /etc/nginx/nginx.conf )find / -name 'index.html' --------------nginx のインデックス ページは、nginx のリソース ディレクトリでもあるディレクトリ ( /usr/share/nginx/html/index.html ) にあります。 )# 5. 次に、コンテナーを終了してホストにアクセスします出口# 6. 設定ファイルをホストマシンにコピーするdocker cp nginx01 (コンテナ ID|コンテナ名):/etc/nginx/nginx.conf ホスト ディレクトリ例: docker cp nginx-test:/etc/nginx/nginx.conf ./# 7. nginx 設定と HTML をホスト マシンの外にハングアップするdocker run --name nginx02 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/usr/share/nginx/html -p 80:80 -d nginx :1.19.10
nginx はロード バランサーまたはサーバーとして使用できます。
4.Tomcatをインストールする
# 1. Docker Hub で Tomcat を検索するドッカー検索トムキャット# 2. Tomcat イメージをダウンロードするdocker pull tomcat# 3. Tomcat イメージを実行するdocker run -p 8080:8080 -d --name mytomcat tomcat# 4. Tomcat コンテナに入るdocker exec -it mytomcat bash# 5. webapps ディレクトリを外部にマウントするdocker run -p 8080:8080 -v /root/webapps:/usr/local/tomcat/webapps -d --name mytomcat tomcat#注意:server.xml 構成ファイルがマウントされている場合は、server.xml ファイルへのマウント パスが正確である必要があります。#以下の例:docker run --name hkht-tomcat -p 8081:8081 -v /data/hkht/tomcat/webapps:/usr/local/tomcat/webapps -v /data/hkht/tomcat/conf/server.xml:/usr/ local/tomcat/conf/server.xml -d tomcat:8.0-jre8#ここで注意: 下の図では、設定ファイルが conf ファイルに直接マウントされています。理由はまだわかりませんが、実際には、conf へのマウントは設定ファイルに対して正確ではなく、フロントエンドへのアクセスも正確ではありません。リソースにアクセスできません (互いに分離されていない Web プロジェクトの前後)。#また、jdk イメージを個別にダウンロードする必要がないため、tomcat の 8.0-jre8 イメージが個別のバージョン番号 8.0 の代わりにここで使用されます。8.0 を使用したい場合は、パッケージ化に dockerfile を使用する必要があります。 jre を含む Tomcat をダウンロードして、プロジェクト (フロントエンドとバックエンドが分離されていない Web プロジェクト) を実行できるようにします。
5.MongoDBデータベースをインストールする
#1. mongDB を実行するdocker run -d -p 27017:27017 --name mymongo mongo ---権限は必要ありませんdocker logs -f mymongo ---mongo 実行ログを表示する# 2. mongodb コンテナに入るdocker exec -it mymongo bashmongoコマンドを直接実行して操作します# 3. 権限のある共通コンテナdocker run --name mymongo -p 27017:27017 -d mongo --auth# 4. コンテナーを入力してユーザー名とパスワードを設定しますモンゴ管理者を使用する 管理者ライブラリを選択するdb.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]}) //ユーザーを作成します。このユーザーが正常に作成されると、以降操作にはユーザー認証が必要です出口# 5. mongoDB のデータ ディレクトリをホストにマッピングするdocker run -d -p 27017:27017 -v /root/mongo/data:/data/db --name mymongo mongo
6. ElasticSearchをインストールする
-
注: JVM スレッド制限を増やします。
0. イメージをプルし、elasticsearch を実行します。
#1.dockerhubはイメージをプルしますdocker pull elasticsearch:6.4.2# 2. Docker イメージを表示するドッカーイメージ# 3. Docker イメージを実行するdocker run -p 9200:9200 -p 9300:9300 elasticsearch:6.4.2
-
起動時に以下のエラーが発生する
-
1. 事前設定済み
# 1. Centos 仮想マシンで、sysctl.conf 構成を変更します。vim /etc/sysctl.conf# 2. 次の構成を追加しますvm.max_map_count=262144# 3. 設定を有効にするsysctl -p注: この手順は、コンテナーの起動時に次のエラーが報告されるのを防ぐためのものです。ブートストラップ チェックが失敗しました。最大仮想メモリ領域 vm.max_map_count [65530] が低すぎる可能性があります。少なくとも [262144] まで増やしてください。
2. ElasticSearchコンテナを起動します
# 0. コンテナ内のデータ ディレクトリをホストにコピーします。docker cp コンテナ ID:/usr/share/share/elasticsearch/data /root/es# 1. ES コンテナを実行して、jvm メモリ サイズを指定し、ik ワード セグメンタの場所を指定します。docker run -d --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v /root/es/plugins:/usr/share/elasticsearch/plugins -v /root/ es/data:/usr/share/elasticsearch/data elasticsearch:6.4.2
3. IKワードセグメンターをインストールする
# 1. IK ワード セグメンターの対応するバージョンをダウンロードする# 2. plugins フォルダーに解凍します。yum install -y unzipunzip -d ik elasticsearch-analysis-ik-6.4.2.zip# 3. カスタム拡張ワードとストップワードを追加するcd プラグイン/elasticsearch/configvim IKAnalyzer.cfg.xml<プロパティ><comment>IK Analyzer 拡張構成</comment><!--ユーザーはここで独自の拡張辞書を構成できます--><entry key="ext_dict">ext_dict.dic</entry><!--ユーザーはここで独自の拡張ストップワード辞書を設定できます--><entry key="ext_stopwords">ext_stopwords.dic</entry></プロパティ># 4. ik word seminter ディレクトリの下の config ディレクトリに ext_dict.dic ファイルを作成します。有効にするには、エンコードが UTF-8 である必要があります。vim ext_dict.dic 拡張語を追加するだけです# 5. ik wordsegmenter ディレクトリの下の config ディレクトリに ext_stopword.dic ファイルを作成します。vim ext_stopwords.dic ストップワードを追加するだけです#6. コンテナを再起動して有効にしますdocker restart コンテナー ID# 7. このコンテナを新しいイメージとして送信しますdocker commit -a="xiaochen" -m="es with IKAnalyzer" コンテナid xiaochen/elasticsearch:6.4.2
4.キバナのインストール
# 1. kibana イメージをローカルにダウンロードするdocker pull kibana:6.4.2#2. kibanaコンテナの起動docker run -d --name kibana -e ELASTICSEARCH_URL= http://10.15.0.3:9200 -p 5601:5601 kibana:6.4.2
7.docker可視化ツール
7.1 Porttainerのインストール
公式のインストール手順:
https://www.porttainer.io/installation/
[root@ubuntu1804 ~]# docker pull porttainer/porttainer# -d: バックグラウンド起動、-p: マップされたポート、--name: コンテナー名、--restart=always: 起動時に自動起動、-v: ハングオン[root@ubuntu1804 ~]# docker run -d -p 8000:8000 -p 9000:9000 --name=porttainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v ポーター_データ:/データ ポーター/ポーター20db26b67b791648c2ef6aee444a5226a9c897ebcf0160050e722dbf4a4906e3[root@ubuntu1804 ~]# docker psコンテナ ID イメージ コマンド作成ステータス ポート名20db26b67b79 porttainer/porttainer "/porttainer" 5 秒前 4 秒前 0.0.0.0:8000->8000/tcp、0.0.0.0:9000->9000/tcp porttainer
7.2 ログインして Portainer を使用する
ブラウザを使用して http://localhost:9000にアクセスします。
7.3 管理者パスワードを忘れた場合、パスワードをリセットして確認してください
#コンテナの表示ドッカーps#コンテナの詳細を表示docker inspect 容器id/名称#画像内のディレクトリアドレスをコピーします
#次のコマンドを実行します: docker run --rm -v ディレクトリアドレス:/data porttainer /helper-reset-password でハングします。docker run --rm -v /var/lib/docker/volumes/436d93252d9a382768eab7e9b7a29b8a10cbbf990257e37c9171eedc8df21c2e/_data :/data porttainer/helper-reset-password
#その後、ポーターを再起動しますドッカースタートポーターナー#再度アクセスしてログインしてください
8.Traefikをインストールする
公式 Web サイトのアドレス: Traefik Labs: 接続性の混乱に別れを告げる
1. トレーフィックとは
Traefik は、サービスの公開を楽しく簡単にするオープンソース のエッジ ルーターです。システムに代わってリクエストを受信し、どのコンポーネントがリクエストの処理を担当しているかを調べます。
Traefik の特徴は、多くの機能に加えて、サービスの正しい構成を自動的に検出できることです。Traefik がインフラストラクチャを検査し、関連情報を見つけて、どのサービスがどのリクエストに対応するかを発見すると、魔法が起こります。
Traefik は、Kubernetes、Docker、Docker Swarm、AWS、Mesos、Marathonなどのすべての主要なクラスタリング テクノロジとネイティブ互換性があり、多くのテクノロジを同時に処理できます。(ベアメタル上で実行されているレガシー ソフトウェアでも機能します。)
Traefik を使用すると、個別の構成ファイルを保守および同期する必要がなく、すべてが自動的かつリアルタイムで行われます (再起動や接続の中断はありません)。Traefik を使用すると、システムの動作状態を構成して維持するのではなく、新しい機能の開発とシステムへの展開に時間を費やすことができます。
2. コンセプト
Traefik は、エントリ ポイント、ルーター、ミドルウェア、サービスの概念に基づいています。
主な機能には、動的構成、自動サービス検出、複数のバックエンドとプロトコルのサポートが含まれます。
-
EntryPoints: Traefik へのネットワーク エントリ ポイントです。 これらは、パケットを受信するポートと、TCP または UDP のどちらをリッスンするかを定義します。
-
ルーター: ルーターは、受信リクエストを処理できるサービスに接続する役割を果たします。
-
ミドルウェア: ルーターに接続されているミドルウェアは、サービスに送信する前にリクエストまたはレスポンスを変更できます。
-
サービス: サービスは、受信リクエストを最終的に処理する実際のサービスにアクセスする方法を構成する責任があります。
Traefik はエッジルーターです。つまり、プラットフォームへのフロントドアであり、すべての受信リクエストをインターセプトしてルーティングします。すべてのロジックと、どのサービスがどのリクエストを処理するかを決定するすべてのルールを知っています ( path、host、headersなどに基づいて)。 )。
従来、エッジ ルーター (またはリバース プロキシ) には、サービスへのすべての可能なパスを含む構成ファイルが必要でしたが、Traefik はサービス自体から構成ファイルを取得します。
サービスをデプロイするには、サービスが処理できるリクエストの特性を Traefik に伝える情報を追加します。
これは、サービスがデプロイされると、Traefik がそれを即座に検出し、ルーティング ルールをリアルタイムで更新することを意味します。同様に、サービスがインフラストラクチャから削除されると、対応するルートもそれに応じて削除されます。
IP アドレスやその他のルールが入り混じった構成ファイルを作成して同期する必要はもうありません。
3. クイックスタート (docker-compose の使用を開始)
3.1. アリババクラウド
3.1.1. まず第一に、Alibaba Cloud ドメイン名が必要であり、次にサーバーが必要です。どのプラットフォームで購入したかは関係ありません。ドメイン名は登録する必要があることに注意してください。
3.1.2. ドメイン名解決の追加
3.1.3. キーと RAM の役割の追加
キーを追加
RAM ロールを追加するには、まず [ロールの作成] を選択してロール名を指定し、次にアクセス許可を割り当て、 キーワードで承認ポリシー AliyunACMFullAccess を検索し、 承認ポリシーをクリックして、右側で選択した承認リストに追加して、[OK] をクリックします。
3.1.4. docker-compose.yml ファイルの作成
docker-compose.ymlにタッチします
3.1.5. ローカルネットワークの作成
docker ネットワークがプロキシを作成する
3.1.6. traefik の docker-compose.yml を書く
バージョン: '3.8'# 通信網ネットワーク:プロキシ:外部: true#データ量の定義ボリューム:アクメ:サービス:# サービス名渋滞:# 鏡画像:traefik:v2.5.4# 通信網ネットワーク:- プロキシ#ポートポート:- 「80:80」- 「443:443」- 「8080:8080」ボリューム:# タイムゾーン- /etc/タイムゾーン:/etc/タイムゾーン- /etc/localtime:/etc/localtime# Traefik が Docker イベントをリッスンできるようにする- /var/run/docker.sock:/var/run/docker.sock# 永続的な acme 証明書を生成する- アクメ:/etc/acme#キー の場所環境ファイル:- ./.alidns.env指示:# APIのルーティング・フォワーディング機能を有効にするかどうか- --api.insecure=true# 基礎となるプロキシとは何ですか?- --providers.docker# dockerを使ったネットワーク- --providers.docker.network=プロキシ# docker を公開するかどうか- --providers.docker.exusedByDefault=false# ウェブ# ウェブポート- --entryPoints.web.address=:80# httpをリダイレクトするかどうか- --entrypoints.web.http.redirections.entrypoint.permanent=true# リダイレクトカテゴリ- --entrypoints.web.http.redirections.entrypoint.scheme=https# エントリをリダイレクトします- --entrypoints.web.http.redirections.entrypoint.to=websecure# ウェブセキュア# ウェブセキュアポート- --entryPoints.websecure.address=:443# 証明書を自動申請するかどうか- --entrypoints.websecure.http.tls=true# 証明書申請メーカー- --entrypoints.websecure.http.tls.certresolver=ali#適用されたメインドメイン名- --entrypoints.websecure.http.tls.domains[0].main=wuxinkeoo.top# このレベルのドメイン名のすべてのドメイン名をスキャンします- --entrypoints.websecure.http.tls.domains[0].sans=*.wuxinkeoo.top#暗号化してみよう#ベンダーに応募する- --certificatesresolvers.ali.acme.dnschallenge.provider=alidns# 郵便# 証明書の保管場所を申請する- --certificatesresolvers.ali.acme.storage=/etc/acme/acme.json# 説明するラベル:#traefikに管理を引き渡すかどうか- "traefik.enable=true"#ルーティングエントリ- "traefik.http.routers.traefik.entrypoints=web、websecure"# ルーティングルール- "traefik.http.routers.traefik.rule=ホスト(`proxy.wuxinkeoo.top`)"# ルートポート- "traefik.http.services.traefik.loadbalancer.server.port=8080"
3.1.7. .alidns.env ファイルを作成し、メーカーキーを入力します。
.alidns.env をタッチ
3.1.8. キーと RAM ロール情報を .alidns.env に書き込む
ALICLOUD_ACCESS_KEY=LTAIxxxxxxxxxxxxxxxxxxxALICLOUD_SECRET_KEY=VMy3xxxxxxxxxxxxxxxxxxxALICLOUD_REGION_ID=ルート
3.1.9. 開始
docker-compose up -d
3.1.10. アクセス
3.2. テンセントクラウド
3.2.1. まず第一に、Tencent Cloud ドメイン名が必要であり、次にサーバーが必要です。どのプラットフォームで購入したかは関係ありません。ドメイン名は登録する必要があることに注意してください。」
3.2.2. ドメイン名解決の追加 (Tencent はワイルドカード * の使用をサポートしていないため、指定のみ可能です)
3.2.3. アクセスキーを作成します (すでに存在する場合は、以前のものを使用します)
クイックアクセスアドレス: Login-Tencent Cloud
3.2.4. docker-compose の作成
docker-compose.yml にタッチします
3.2.5. ネットワークの作成
docker ネットワークがプロキシを作成する
3.2.6. .tencentcloud.env の作成
タッチ.tencentcloud.env
3.2.7. キーを .tencentcloud.env に書き込む
TENCENTCLOUD_SECRET_ID=AKIxxxxxxxxxxxxxxxxTENCENTCLOUD_SECRET_KEY=rSpxxxxxxxxxxxxxxx
3.2.8. docker-compose.yml ファイルの書き込み
バージョン: '3.8'# 通信網ネットワーク:プロキシ:外部: true#データ量の定義ボリューム:アクメ:サービス:# サービス名渋滞:# 鏡画像:traefik:v2.5.4# 通信網ネットワーク:- プロキシ#ポートポート:- 「80:80」- 「443:443」- 「8080:8080」ボリューム:# タイムゾーン- /etc/タイムゾーン:/etc/タイムゾーン- /etc/localtime:/etc/localtime# Traefik が Docker イベントをリッスンできるようにする- /var/run/docker.sock:/var/run/docker.sock# 永続的な acme 証明書を生成する- アクメ:/etc/acme# キーの場所環境ファイル:- ./.tencentcloud.env指示:# APIのルーティング・フォワーディング機能を有効にするかどうか- --api.insecure=true# 基礎となるプロキシとは何ですか?- --providers.docker# dockerを使ったネットワーク- --providers.docker.network=プロキシ# docker を公開するかどうか- --providers.docker.exusedByDefault=false# ウェブ# ウェブポート- --entryPoints.web.address=:80# httpをリダイレクトするかどうか- --entrypoints.web.http.redirections.entrypoint.permanent=true# リダイレクトカテゴリ- --entrypoints.web.http.redirections.entrypoint.scheme=https# エントリをリダイレクトします- --entrypoints.web.http.redirections.entrypoint.to=websecure# ウェブセキュア# ウェブセキュアポート- --entryPoints.websecure.address=:443# 証明書を自動申請するかどうか- --entrypoints.websecure.http.tls=true# 証明書申請メーカー- --entrypoints.websecure.http.tls.certresolver=tencent#適用されたメインドメイン名- --entrypoints.websecure.http.tls.domains[0].main=wuxinke.com# このレベルのドメイン名のすべてのドメイン名をスキャンします- --entrypoints.websecure.http.tls.domains[0].sans=*.wuxinke.com#暗号化してみよう#ベンダーに応募する- --certificatesresolvers.ali.acme.dnschallenge.provider=tencentcloud# 郵便# 証明書の保管場所を申請する- --certificatesresolvers.ali.acme.storage=/etc/acme/acme.json# 説明するラベル:# 管理のためにtraefikに引き渡すかどうか- "traefik.enable=true"#ルーティングエントリ- "traefik.http.routers.traefik.entrypoints=web、websecure"# ルーティングルール- "traefik.http.routers.traefik.rule=ホスト(`proxy.wuxinke.com`)"# ルートポート- "traefik.http.services.traefik.loadbalancer.server.port=8080"
注: サーバー上でポート 8080 を開くことを忘れないでください。
3.2.9. 開始
docker-compose up -d
3.2.10. アクセステスト
注: アクセスすると、HTTPS プロトコルが安全ではなく、まだ解決されていないことを示すメッセージが表示されます。