背景ブロックチェーン ログ モジュールで作業しているときに、コンテナーが実行されている場合は、ログ ファイルをホスト マシンにマップして簡単に表示できるようにする必要があります。これを実装する方法は次のとおりです。 成し遂げるdocker-compose設定ファイルのボリュームパラメータを通じて 設定ファイルの例: ボリューム: - /var/run/:/host/var/run/ - ./channel-artifacts:/var/hyperledger/configs - ./fabric_logs:/tmp/fabric_logs/ コンテナ内の /tmp/fabric_logs ディレクトリを、ホストの現在のディレクトリ内の ./fabric_logs ディレクトリにマップします。これら 2 つのディレクトリはデータを共有します。 コンテナを作成するときは、コード内の関連パラメータを設定します。コード内でコンテナを作成するときは、以下を追加します。 func (vm *DockerVM) createContainer(ctxt context.Context, クライアント dockerClient, imageID文字列、containerID文字列、args[]文字列、 env []文字列、attachStdout bool) エラー{ ボリューム:= make(map[文字列]構造体{}) var マウント []docker.Mount var ソース文字列 var 宛先文字列 var fabricCfgPath = os.Getenv("FABRIC_CFG_PATH") var configName 文字列 _, エラー:= os.Stat(ファブリック構成パス) エラー == nilの場合{ configName = strings.ToLower(ピアプレフィックス) config := viper.New() config.SetConfigName(configName) config.AddConfigPath(ファブリック構成パス) config.ReadInConfig() config.SetEnvPrefix("CORE") config.AutomaticEnv() 置換子 := strings.NewReplacer(".", "_") config.SetEnvKeyReplacer(置換子) config.SetConfigType("yaml") 宛先 = config.GetString("logging.logpath") //fmt.Println(出力先) } 宛先 == "" の場合 { 保存先 = "/tmp/fabric_logs/" } ソース = "/tmp/chaincode_logs/" + コンテナID ボリューム[宛先] = 構造体{}{} マウント:=docker.Mount{ 名前: "bind", 出典: 出典、 目的地: 目的地、 モード: "rw"、 RW: そうですね。 ドライバー: "rprivate", } マウント = append(マウント、マウント) config := docker.Config{Cmd: args、イメージ: imageID、Env: env、ボリューム: volumes、マウント: mounts、AttachStdout: attachStdout、AttachStderr: attachStdout} ホスト構成:= getDockerHostConfig() ホストConfig.Binds = []文字列{ ソース + ":" + 宛先 + ":rw"、 } copts := docker.CreateContainerOptions{名前: コンテナID、構成: &config、ホスト構成: hostConfig} dockerLogger.Debugf("コンテナを作成: %s", コンテナID) _, エラー = client.CreateContainer(copts) err != nil の場合 { エラーを返す } dockerLogger.Debugf("コンテナを作成しました: %s", imageID) nilを返す } ボリューム、マウント、および Hostconfig.Binds パラメータは、独自のマッピング関係に従って入力する必要があります。 この道を通って: 1. Docker-compose 設定ファイルの起動 2. またはdocker -vパラメータのコマンドラインから開始します 同じ効果が得られます。 補足: Docker フォルダ マッピングの 2 つの方法 --- ホスト ボリューム マッピングと共有フォルダ マッピング Dockerコンテナはデータを保存しない 重要なデータ(データ永続性)には外部ボリュームストレージを使用してください コンテナは実際のマシンディレクトリまたは共有ストレージをボリュームとしてマウントできる ホストボリュームマッピング[root@docker1 ~]# mkdir /var/data [root@docker1 ~]# docker run -it -v /var/data:/abc myos [root@f1fb58b85671 /]# cd /abc/ [root@f1fb58b85671 abc]# f1 をタッチ [root@f1fb58b85671 abc]# ls 1 1 1 [root@docker1 ~]# cd /var/data/ [root@docker1 データ]# ls 1 1 1 [root@docker1 データ]# touch zhy 共有ストレージを使用したマッピングアイデア: 1 つのホストを NFS ホストとして使用し、対応するフォルダーを作成して、2 つの Docker ホストと共有します。2 つの Docker ホストは共有フォルダーをコンテナーにマップし、対応するコンテナーが NFS ホストのコンテンツを共有できるようにします。この形式では、http と他のサーバーの対応するページ フォルダーを使用できるため、複数のコンテナーで 1 つの業務を実行できます。 nfsホスト構成 [192.168.6.77][root@nfs ~]# yum -y nfs-utilsをインストールします [root@nfs ~]# vim /etc/exports /パブリック*(rw) [root@nfs ~]# systemctl nfs-serverを再起動します nfs-serve.service の再起動に失敗しました: ユニットが見つかりません [root@nfs ~]# mkdir /public [root@nfs ~]# cd /public/ [root@nfs public]# nfs.txt をタッチします [root@nfs パブリック]# ls テキスト Docker1ホスト構成[root@docker1 ~]# vim /etc/fstab 192.168.6.77:/public /mnt/nfs nfs デフォルト、_netdev 0 0 [root@docker1 ~]# mkdir /mnt/nfs [root@docker1 ~]# systemctl nfs-serverを再起動します [root@docker1 ~]# マウント -a [root@docker1 ~]# df -h 192.168.6.77:/public 17G 3.2G 14G 19% /mnt/nfs [root@docker1 ~]# docker run -it -v /mnt/nfs/:/zhuhaiyan 192.168.6.153:5000/myos [root@c7c376e3755a /]# cd /zhuhaiyan [root@c7c376e3755a 珠海燕]# ls テキスト Docker2ホスト構成[root@docker2 ~]# vim /etc/fstab 192.168.6.77:/public /mnt/nfs nfs デフォルト、_netdev 0 0 [root@docker2 ~]# mkdir /mnt/nfs [root@docker2 ~]# systemctl nfs-serverを再起動します [root@docker2 ~]# マウント -a [root@docker2 ~]# df -h 192.168.6.77:/public 17G 3.2G 14G 19% /mnt/nfs [root@docker2 ~]# docker run -it -v /mnt/nfs/:/zhuhaiyan 192.168.6.153:5000/myos [root@cdd805771d07 /]# cd /珠海燕/ [root@cdd805771d07 珠海燕]# ls テキスト 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: CSS3 とテーブルタグを使用して円軌道アニメーションを実装するためのサンプルコード
>>: MysqlチューニングExplainツールの詳細な説明と実践的な演習(推奨)
目次1. ユニオンタイプ2. クロスオーバータイプ3. 型保護3.1 カスタム型保護3.2 保護の種...
もう2020年です。飢えた人間は単純なテキストでは満足できなくなり、さまざまなスタイルの派手なテキス...
最近、Linux ホストに環境を展開する際に多くの問題に遭遇しました。最初の問題は、ジャンプ サーバ...
1. プロジェクトを右クリックしてプロパティを選択します2. プロジェクトファセットをクリック3. ...
スロットとは何ですか? Vue では、子コンポーネント タグの中央に何もラップできないことはわかって...
インストールプロセス中に問題が発生しないように、まず依存パッケージをインストールします。 [root...
キャンバスを使用して、参照用の影付きのグラフィックとテキストを作成します。具体的な内容は次のとおりで...
** CentOS7 で yum ソースをインストールし、rz および sz コマンドをアップロー...
React コンポーネントのライフサイクル機能とは何ですか?ライフサイクル関数は、ES6 構文クラス...
目次序文解決:ステップ1ステップ2序文環境: VMware Workstation 上に Linux...
1. はじめに最近、 Webpackの原理を勉強しています。これまでは Webpack の設定方法し...
ミックスインメソッド: ブラウザはコンパイルできません: 以前のバージョンのsassでは上記の記述方...
目次1. 概要1.1 querySelector() と querySelectorAll() の使...
みなさんこんにちは。今日は Linux コマンド クエリ アプレットでの WePY クラウド開発の実...
会社の開発者がテスト環境で挿入ステートメントを実行すると、正常に実行されるまでに 10 秒以上かかり...