DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

DockerはMysql、.Net6、Sqlserverなどのコンテナをデプロイします

CentOS 8にDockerをインストールする

1. yumを更新する

[root@VM-24-9-centos ~]# yum -y 更新

2. containerd.ioをインストールする

# centos8 はデフォルトで docker ではなく podman を使用するため、containerd.io が必要です
[root@VM-24-9-centos ~]# yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm -y

# その他の依存関係をインストールします [root@VM-24-9-centos ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@VM-24-9-centos ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3. Dockerをインストールする

[root@VM-24-9-centos ~]# yum install -y docker-ce

4. Dockerを起動する

# Dockerを起動する
[root@VM-24-9-centos ~]# systemctl dockerを起動します
# 起動時に自動的に起動するように設定する [root@VM-24-9-centos ~]# systemctl enable docker

5. コンテナを自動的に起動するように設定する

[root@VM-16-7-centos ~]# docker update --restart=always コンテナ名 --restart 特定のパラメータ値の詳細:
	no: コンテナが終了したときにコンテナを再起動しない on-failure: コンテナがゼロ以外のステータスで終了した場合にのみコンテナを再起動する always: 終了ステータスに関係なくコンテナを再起動する

Mysql8.0 の展開

1. イメージをプルする

[root@VM-24-9-centos ~]# docker pull mysql
# 特定のバージョンのイメージをプルする必要がある場合は、バージョン番号を追加します: [root@VM-24-9-centos ~]# docker pull mysql:7.6

2. マウント用のローカルファイルを作成する

[root@VM-24-9-centos ~]# mkdir -p /data/mysql/data
[root@VM-24-9-centos ~]# mkdir -p /data/mysql/conf
[root@VM-24-9-centos ~]# mkdir -p /data/mysql/conf/conf.d

3. コンテナを起動し、コンテナ内の設定ファイル/etc/mysql/my.cnfをデフォルトの設定ファイルとしてローカルコンピュータにコピーします。

# コンテナを起動して設定ファイルをコピーします [root@VM-24-9-centos ~]# docker run -d -p 3306:3306 --name mysqlone mysql:latest
07c314a5e57c3a3ca8ab8ffe5937b4fdb6c87a831b7e15666ee7266feb5af42a
[root@VM-24-9-centos ~]# docker cp mysqlone:/etc/mysql/my.cnf /data/mysql/conf/

# コンテナを停止して削除します [root@VM-24-9-centos ~]# docker stop mysqlone
mysqlone
[root@VM-24-9-centos ~]# docker rm mysqlone
mysqlone

# 設定ファイルが正常にコピーされたかどうかを確認します [root@VM-24-9-centos ~]# cd /data/mysql/conf/
[root@VM-24-9-centos conf]# ls
マイ.cnf

4. ローカル構成ファイルを使用して、コンテナ内の構成ファイルをマウントし、データファイルをマウントします。

docker run -d -p 3306:3306 --name mysqlmaster -e MYSQL_ROOT_PASSWORD='jing1996' -v /data/mysql/conf:/etc/mysql -v /data/mysql/data:/var/lib/mysql mysql

Mysql8.0 デプロイメント マスタースレーブ レプリケーション

1. 設定ファイルを書く

[mysqld]
pid ファイル = /var/run/mysqld/mysqld.pid
ソケット = /var/run/mysqld/mysqld.sock
データディレクトリ = /var/lib/mysql
セキュアファイルプライベート = NULL

# カスタム設定はここに記述します
!includedir /etc/mysql/conf.d/
サーバーID=1
ログ bin = mysql bin
binlog-do-db=モリン
binlog-ignore-db=mysql
  • server-id: サーバー ID。同じにすることはできません。
  • log-bin: バイナリファイルの保存パス。必須ではありません。mysql8 以降では、デフォルトで /var/lib/mysql に保存されます。
  • binlog-do-db: 同期する必要があるデータベース。複数のデータベースがある場合は、スペースで区切ります: db1 db2 db3
  • binlog-ignore-db: 同期する必要のないデータベースが複数ある場合は、スペースで区切ります: db1 db2 db3

2. ノード構成

2.1 マスターノードの構成

# 同期用のデータベース アカウントを追加します CREATE USER 'rootslave1'@'110.40.158.72' IDENTIFIED WITH mysql_native_password BY '123456';
# *.* のレプリケーションスレーブを 'rootslave1'@'110.40.158.72' に許可します。
# 構成を更新 FLUSH PRIVILEGES;
# すべてをクエリする select user,host from mysql.user;
#マスターノードのステータスを照会します。show master status;

2.2 スレーブノードの構成

# マスターとスレーブの同期を構成するには、マスターを master_host='xxxx'、master_user='rootslave1'、master_password='123456'、master_log_file='mysql-bin.000003'、master_log_pos=2384 に変更します。
# 同期を有効にするスレーブを起動します。
# スレーブノードのステータスを表示します。show slave status;

注記:

  • マスター・スレーブ同期を構成するためのmaster_log_fileおよびmaster_log_posパラメータは、マスターノード構成のquery master node statusコマンドに基づいています。ここでのパラメータは、使用するために直接コピーされます。
  • 同期を開始したら、スレーブ ノードのステータスを確認します。同期を成功させるには、Salve_IO_Running と Salve_SQL_Running が Yes であることを確認する必要があります。いいえの場合は、通常、上記の 2 つのフィールドの値が正しくないことを意味します。

同期するデータベースがマスターデータベースにすでに存在する場合、自動的に同期されません。データを保持し、データベースを削除して再構築することをお勧めします。そうすると、スレーブデータベースに自動的に同期されます。

.Net6 プロジェクトがリリースされました

1. VSでプロジェクトを公開し、Dockerfileファイルを書き込む

Dockerfile の内容は次のとおりです。

mcr.microsoft.com/dotnet/aspnet:6.0 AS ベースから
ワークディレクトリ /app
エクスポーズ8989

mcr.microsoft.com/dotnet/sdk:6.0 ASビルドから
ワークディレクトリ /src
コピー 。 。

エントリポイント ["dotnet", "x.API.dll"]

2. イメージを構築する

リリースファイル(Dockerfileファイルを含む)をCentosサーバーにコピーし、現在のディレクトリでイメージをビルドします。

[root@VM-0-17-centos conf]# docker build -t イメージ名: バージョン番号。

例:注意最后有個小點.この點指的是Dockerfile文件所在的目錄。現在のディレクトリにある場合は、そのディレクトリが現在のディレクトリです。他のディレクトリの場合は、完全なディレクトリ パスを入力する必要があります。

3. コンテナを構築し、設定ファイルをマウントする

[root@VM-0-17-centos conf]# docker run -d -p 9999:9999 -v /usr/local/release/project/appsettings.json:/src/appsettings.json --name projectapi project:1.0

SQL Server の展開

前提条件:

  • サーバーには 2G 以上のメモリが必要です。十分でない場合、正常に起動しない可能性があります

1. SQL Serverイメージを取得する

[root@VM-24-9-centos ~]# docker pull mcr.microsoft.com/mssql/server:2019-latest

2. データマウント用のデータファイルを作成する

[root@VM-24-9-centos ~]# mkdir -p /data/sqlserver/data

# ディレクトリの権限を変更します。権限を変更しないと、エラーが報告されます [root@VM-24-9-centos ~]# chown -R 10001:0 /data/sqlserver/data/

3. コンテナを実行する

[root@VM-24-9-centos sqlserverdata]# docker run -d -p 1433:1433 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=sa123456.?' -v /data/sqlserver/data:/var/opt/mssql --name sqlserver mcr.microsoft.com/mssql/server:2019-latest

注記:

  • ACCEPT_EULA=Yはライセンス契約に同意することを意味します。必須です
  • MSSQL_SA_PASSWORD はパスワードです。大文字、小文字、数字、特殊記号を含む 8 文字以上の強力なパスワードにする必要があります。そうしないと、Docker は SQL Server コンテナーを起動してから数秒後に停止します。
  • navcat を使用して接続する場合、ポート番号と IP アドレスはコロンではなくカンマで区切られます。
  • 作成されたデータマウントディレクトリの権限を変更する必要があります

ElasticSearch クラスターの展開

ElasticSearch をデプロイする

1. イメージをプルし、設定ファイルをバッチで生成する

# イメージをプルします [root@VM-24-9-centos ~]# docker pull elasticsearch:7.2.0

# ポートの設定ファイルとディレクトリを生成します $(seq 1 6); \
する \
mkdir -p /data/es/node-${port}/conf
mkdir -p /data/es/node-${port}/data
mkdir -p /data/es/node-${port}/plugins
chmod 777 /data/es/node-${port}/data
/data/es/node-${port}/conf/es.yml をタッチします。
cat << EOF >>/data/es/node-${port}/conf/es.yml
クラスター名: lbj
ノード名: ノード${ポート}
ノードマスター: true
ノードデータ: true
bootstrap.memory_lock: 偽
ネットワークホスト: 0.0.0.0
http.port: 920${port}
トランスポート.tcp.ポート: 930${ポート}
検出シードホスト: ["xxxx:9301","xxxx:9302","xxxx:9303","xxxx:9304"]
クラスターの初期マスターノード: ["node1","node2","node3","node4"]
クラスター.ルーティング.割り当て.クラスター同時再バランス: 32
クラスタールーティング割り当てノード同時回復: 32
クラスタールーティング割り当てノード初期プライマリ回復: 32
http.cors.enabled: 有効
http.cors.allow-origin: "*"
discovery.zen.最小マスターノード数: 2
終了
終わり;

2. コンテナを一括作成し、クラスター情報を表示する

# ポートのコンテナをバッチ作成します $(seq 1 4); \
する \
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-d -p 920${ポート}:920${ポート} -p 930${ポート}:930${ポート} \
-e ES_MIN_MEM=128m \
-e ES_MAX_MEM=2048m \
-v /data/es/node-${port}/conf/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/es/node-${port}/data/:/usr/share/elasticsearch/data/ \
-v /data/es/node-${port}/plugins/:/usr/share/elasticsearch/plugins \
--name ES-${ポート} \
エラスティックサーチ:7.2.0
終わり

# 単一ノードの情報を表示 [root@VM-24-9-centos ~]# curl http://xxxx:9201/
{
  「名前」:「ノード1」、
  "クラスター名" : "lbj",
  "クラスタUUID" : "Vjb7cu6fQ6y2-ZWk0YGIiQ",
  「バージョン」: {
    "番号" : "7.2.0",
    "build_flavor" : "デフォルト",
    「ビルドタイプ」:「docker」、
    "build_hash" : "508c38a",
    「ビルド日付」:「2019-06-20T15:54:18.811730Z」、
    "build_snapshot" : 偽、
    "lucene_version" : "8.0.0",
    "最小ワイヤ互換性バージョン" : "6.8.0",
    "最小インデックス互換性バージョン" : "6.0.0-beta1"
  },
  「タグライン」:「検索用です」
}

# クラスター情報を表示 [root@VM-24-9-centos ~]# curl http://xxxx:9201/_cat/nodes?pretty
172.17.0.2 37 97 0 0.00 0.00 0.08 mdi * ノード1
172.17.0.4 35 97 0 0.00 0.00 0.08 mdi - ノード3
172.17.0.3 39 97 1 0.00 0.00 0.08 mdi - ノード2
172.17.0.6 34 97 1 0.00 0.00 0.08 mdi - ノード4

ElasticSearch-Headをデプロイする

ElasticSearch-HeadはElasticSearch関連情報を表示できる管理インターフェースです。

1. ElasticSearch-Headイメージを取得する

[root@VM-24-9-centos ~]# docker pull mobz/elasticsearch-head:5

2. ElasticSearch-Headコンテナを実行する

# コンテナを作成 [root@VM-24-9-centos ~]# docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

# 管理ツールを使用してクラスタ情報を表示するには、PCからIP:9100にアクセスします

これで、Docker を使用して Mysql、.Net6、Sqlserver およびその他のコンテナーをデプロイする方法に関するこの記事は終了です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援して頂ければ幸いです。

以下もご興味があるかもしれません:
  • Docker 経由で Linux システムに SQL Server データベースをインストールする
  • Docker を使用して Microsoft Sql Server を展開するための詳細な手順
  • SQL Server 2019 Always On クラスターの Docker デプロイメントの実装
  • Docker を使用した SQL Server の実行の実装
  • Docker を使用して Microsoft SQL Server 2017 を実行する方法
  • DockerコンテナにMSSQLをデプロイする

<<:  TSで最も一般的な宣言マージ(インターフェースマージ)

>>:  CSSは位置+マージンを使用して、固定ボックスの水平および垂直の中央揃えの方法を実現します。

推薦する

Navicat for MySQL チュートリアル

まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...

NginxはIP経由の直接アクセスを禁止し、カスタム500ページにリダイレクトします

設定ファイルに直接 サーバー{ listen 80 default; # IPへの直接アクセスを禁止...

HTML ブロックレベルタグとインラインタグの違い

1. ブロックレベル要素: 独立して存在できる能力を指します。通常、ブロックレベル要素は改行によって...

RR および RC 分離レベルでのインデックスとロックのテスト スクリプトのサンプル コード

基本概念現在の読み取りとスナップショットの読み取りMVCC では、読み取り操作はスナップショット読み...

MySQLはmysqldump+binlogを使用して、削除されたデータベースの原理分析を完全に復元します。

1. 概要MySQL データベースの日常的な操作とメンテナンスにおいて、ユーザーが誤ってデータを削...

Ubuntu 20.04 に Xrdp サーバー (リモート デスクトップ) をインストールする方法

Xrdp は、グラフィカル インターフェイスを通じてリモート システムを制御できる Microsof...

JSオブジェクトの走査順序の詳細な説明

JavaScript ではオブジェクトを走査する順序は固定されていないと聞いたことがある人もいるかも...

初心者がHTMLタグを学ぶ(2)

初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...

docker compose helloworld を使い始めるための詳細なプロセス

前提条件Compose は、Docker コンテナをオーケストレーションするためのツールです。Doc...

Tomcat のパフォーマンス最適化のための Apr モジュールの構築方法

序文Tomcat は、無数のチューニング オプションを備えた、広く使用されている Java Web ...

HTML での非同期ファイルアップロードの例

コードをコピーコードは次のとおりです。 <form action="/hehe&qu...

Vue は Websocket カスタマー サービス チャット機能を実装します

この記事では主に基本的なチャットの実装方法を紹介します。今後は絵文字や写真のアップロードなどの機能も...

Linuxコマンドとファイル検索の詳しい説明

1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...

Vue+nodeはオーディオ録音・再生機能を実現

結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありま...

MySQL 5.7 のキーワードと予約語の詳細な説明

序文MySQL と Oracle のキーワードはまったく同じではありません。Oracle データベー...