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

推薦する

よくある MySQL 設計エラーをご存知ですか?

インターネットの発達により、バスを待ったり地下鉄に乗ったりする時間など、断片的な時間を活用して、いつ...

CSS で平均レイアウトを実現するためにネガティブ マージン テクノロジーを使用する方法

通常、IE ブラウザでの CSS の互換性の問題を解決するために、フロート レイアウトが使用されます...

jsは前のページに戻り、コードを更新します

1. Javascript は前のページ history.go(-1) に戻り、2 つのページを返し...

Vue カスタム オプション時間カレンダー コンポーネント

この記事の例では、参考のためにvueカスタムオプションタイムカレンダーコンポーネントの具体的なコード...

MySQL における distinct と group by の違い

簡単に言うと、distinct は重複を削除するために使用され、group by は統計を集計するよ...

Docker のインストールと構成コマンドのコード例

Dockerのインストール依存パッケージをインストールする sudo yum install -y ...

jsBridgeの動作メカニズムを1つの記事で学ぶ

目次js 呼び出しメソッドアンドロイド1.jsはネイティブを呼び出す2. ネイティブコールjs iO...

CSS 画面サイズ適応実装例

CSS 画面サイズの適応を実現するには、まず CSS3 @media メディア クエリを導入する必要...

Windows Server 2016 リモート デスクトップ サービスの構成とライセンスのアクティブ化 (2 ユーザー)

Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...

Linux システムが VMware にインストールされているかどうかを確認する方法

現在の Linux システムが VMware にインストールされているかどうかを確認する方法を教えて...

MySQL グリーンバージョン設定コードと 1067 エラーの詳細

MySQL グリーンバージョン設定コードと 1067 エラーMySQL エンコーディングを表示 &#...

Linux で yum と入力した後に -bash: /usr/bin/yum: No such file or directory という問題を解決する方法

Linuxでyumを入力すると、プロンプトが表示されます: -bash: /usr/bin/yum:...

SSL を実装するために nginx を設定する方法の例

環境説明サーバーシステム: Ubuntu 18.04 64ビットnginx: 1.14この記事では主...

ウェブデザイナーのための超便利なツール 50 選

ウェブデザイナーになるのは簡単ではありません。デザインやアーキテクチャを考慮するだけでなく、さまざま...

axios リクエストのカプセル化に基づく Vue アプリケーションのサンプルコード

目次axiosとは何ですか? Axios リクエストタイプ? Axiosはデフォルトのカスタム構成を...