Docker のタイムゾーンの問題とデータ移行の問題

Docker のタイムゾーンの問題とデータ移行の問題

最新のソリューション:

-v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone -v /etc/localtime:/etc/localtime:ro

docker run --name tomcat-service-0 -d -p 8080:8080 -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone -v /etc/localtime:/etc/localtime:ro -v /home/zjy/logs/tomcat-service-0:/usr/local/tomcat/logs -v /home/zjy/code/ligu/target:/usr/local/tomcat/webapps tomcat

質問1

Docker を使用してプロジェクトをデプロイしたところ、Docker コンテナ内のタイムゾーンがサーバーの時間と 8 時間異なることが判明しました。
-v /etc/localtime:/etc/localtime を使用してサーバーの時間とコンテナの時間が同期されていますが、コンテナ内の Tomcat のタイムゾーンは依然として 8 時間異なります。

例示する

-v /etc/localtime:/etc/localtime

起動時にこのコマンドを使用すると、サーバーとコンテナのシステム時刻のみがマウントされます。コンテナに入り、「date」コマンドを実行すると、コンテナ内の時刻は確かに変更されますが、コンテナ内で Tomcat が実行される環境の日付は実際には変更されません。
Tomcat イメージをプルすると Tomcat コンテナのタイムゾーンが固定されるため、唯一の解決策は、Tomcat イメージをコンパイルするときにローカル サーバーの時間をイメージにバインドすることです。

解決策(超簡単)

dockerFile を使用してイメージをコンパイルします。 Dockerfileは次の通りです

# ベースイメージをプルする 
tomcat:latest から 
ENV TZ=アジア/上海
実行 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

次のコマンドを実行します

コマンド形式:
$docker build -t イメージ名 Dockerfileパス
docker build を実行します。

その後、コンテナを起動するときに、コンパイルされたTomcatを使用します。

図のように

ここに画像の説明を挿入

Dockerコンテナの移行

例示する

Docker によってデプロイされたサーバー (データベースなど) が変更され、新しいアドレスにデプロイする場合、このデータを移行する方法は多数あります。

データベースの場合:

1 MySQLのマスタースレーブレプリケーションバックアップを使用します。プロジェクト運用中は、MySQLサーバーを複数のアドレスにバックアップします。詳細については、次のアドレスを参照してください:https://zhangjy520.github.io/

2 MySQL を起動するときに、-v を使用してローカル パスとコンテナ パスをマウントし、移行時にローカル パスを新しいサーバーにコピーします。
-v /home/mysql/master/data/db-conf:/etc/mysql/ -v /home/mysql/master/data/db-data:/var/lib/mysql

3 MySQLデータベースをエクスポートし、比較的低い新しいアドレスにインポートします。

4 Docker コンテナ移行を使用します。このブログは主にdockerについてです。ここでは主にdocker migrationの使い方についてお話します。

ソリューション(超簡単)コンテナ移行

export / import

ソースサーバーで実行

docker export 83271b648212 >time.tar // コンテナをエクスポートします。ここでの数字はコンテナ ID です。tarball が取得されます。

説明: この圧縮パッケージを開くと、実際には Linux サーバーのディレクトリ構造であることがわかります。このコマンドは、コンテナーとコンテナーが実行される環境をパッケージ化します。

宛先サーバーで実行

cat time.tar | sudo docker import - time:v2 //コンテナをインポートしてイメージを取得します。コマンド/bin/bashでdocker runを使用します。
ファイルを含む以前のコンテナを取得できます

画像を開始

sudo docker run -itd --name import_test -p 8087:8080 time:v2 /bin/bash 

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

保存/読み込み

sudo docker 保存 web > web.tar
sudo docker load < web.tar

これで、docker のタイムゾーンの問題とデータ移行の問題に関するこの記事は終了です。docker のタイムゾーンの問題とデータ移行の問題の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerコンテナのタイムゾーン調整操作
  • Docker でタイムゾーンの問題に対処する方法
  • 作成されたDockerコンテナの時刻表示エラー/日付エラー/タイムゾーンエラー
  • docker タイムゾーンの変更と一般的な docker コマンドの詳細な説明
  • Dockerコンテナのタイムゾーンと時刻同期の問題を解決する方法
  • Docker イメージを作成してコンテナを起動する 2 つの方法の違い (要約)
  • Docker コンテナのタイムゾーン エラーの問題

<<:  Mysqlがデータベースに接続するときのホストとユーザーのマッチングルールについての簡単な説明

>>:  JavaScript の手ぶれ補正とスロットリングの詳細な説明

推薦する

MySQLトリガーの使用

トリガーにより、ステートメントの実行前または実行後に他の SQL コードを実行できます。トリガーは、...

CSSオーバーフローメカニズムについての簡単な説明

CSS オーバーフローのメカニズムを詳細に学ぶ必要があるのはなぜですか?実際の開発プロセスでは、コン...

jsのディープコピーを理解しましょう

目次js ディープコピーデータ保存方法浅いコピー/深いコピーとは何か一般的なディープコピーの実装1....

CSSをiPhoneのフルスクリーンに適応させる方法

1. メディアクエリ方式 /*iPhone X への適応*/ @media 画面のみ、(デバイス幅:...

HTML+CSS+JavaScript でシンプルな三目並べゲームを作成する

目次HTMLの実装CSSを追加Javascript部分の実装デモアドレス HTMLの実装まず、hea...

Docker で Nginx イメージ サーバーを構築する方法

序文一般的な開発では、画像をディレクトリにアップロードし、ディレクトリとファイル名を連結してデータベ...

MySQL の CPU 負荷が高い問題のトラブルシューティング

MySQL による CPU 負荷の上昇今日の午後、MySQL によってサーバーの負荷が高くなる問題を...

CSS でフロートをクリアするための完全ガイド (要約)

1. 親divは疑似クラスafterとzoomを定義します <スタイル タイプ="...

フロントエンド制作に関する簡単な議論: 互換性のために IE6 はまだ必要ですか?

国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...

Linux で Jenkins プロジェクトを構築するプロセス (CentOS 7 を例に)

https://gitee.com/tengge1/ShadowEditor のデプロイメントを例...

デスクトップ仮想化を実現するために Hyper-V を展開する手順 (グラフィック チュートリアル)

Hyper-V を展開するためのハードウェア要件は次のとおりです。 64 ビット プロセッサ、具体...

CSS3で蓮の花が咲くアニメーション効果を実現

まずは効果を見てみましょう:この効果は非常に華やかに見えますが、原理は複雑ではありません。1 枚の花...

Nginx リバース プロキシを使用してクロスドメイン問題を解決する方法の詳細な説明

質問前回のクロスドメイン リソース共有に関する記事では、ドメイン間で Cookie を送信する場合、...

バージョン管理ツール Rational ClearCase の紹介

Rational ClearCase は、コードやその他のソフトウェア開発資産のバージョン管理を実...

MySQL 分離レベルの詳細な説明と例

目次MySQL の 4 つの分離レベルデータ テーブルを作成します。分離レベルの設定物事の分離レベル...