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

推薦する

Dockerが独自のローカルイメージリポジトリを構築するための手順

1. 環境と準備1. Ubuntu 14.04 2.Docker環境2. 建設プロセス1. ミラーソ...

CSS ボーダーは四隅の実装コードを追加します

1.html <div class="ログインボディ"> <...

SQLクエリの実行順序をゼロから学ぶ

SQL クエリ ステートメントの実行順序は次のとおりです。 (7)選択 (8) DISTINCT &...

静的ウェブサイトをRSSに変換するツール

<br /> この記事は allwebdesignresources.com から Ra...

MySQL データベース分離レベルと MVCC の詳細な説明

目次1. 分離レベルコミットされていない読み取りREAD COMMITED (コミット読み取り/非反...

IE8 と Chrome でテーブルの幅を修正する方法

IE8 や Chrome で上記の設定を使用すると、画面の最大幅に合わせて表示が統一され、各列の幅は...

MySQLで大きなテーブルを正常に削除する方法の詳細な説明

序文テーブルを削除するには、無意識に思い浮かぶコマンドは、DROP TABLE "テーブル...

uniAppエディタWeChatスライド問題について

ユニアプリアプレットはWeChatでも同様のドロップダウン問題を抱えることになる解決策は、app.v...

MySQL データベースのインポートとエクスポートのデータ エラーの解決例の説明

データのエクスポートエラーを報告する 「secure_file_priv」のような変数を表示します。...

WeChatアプレット開発の章:落とし穴の記録

最近、会社初のミニプログラムの開発に参加しました。開発経験は基本的にWebViewをベースとしたハイ...

MySQL における 8 つの一般的な SQL 使用例

序文MySQL は、2016 年もデータベースの人気において力強い成長傾向を維持し続けました。 My...

Docker データボリュームコンテナの作成と使用状況分析

データ ボリューム コンテナーは、データ ボリュームをマウントするために特別に使用されるコンテナーで...

Iframe の内外のページで JS がどのように動作するかの概要

目次iframeの外側のiframeのコンテンツを取得する方法1方法2 iframe 内の ifra...

Docker を使用してエンタープライズレベルのカスタムイメージを構築する方法

序文退社前に、ある依頼を受けました。基本イメージ規格の変更により、最新の Docker イメージ規格...