背景ブロックチェーン ログ モジュールで作業しているときに、コンテナーが実行されている場合は、ログ ファイルをホスト マシンにマップして簡単に表示できるようにする必要があります。これを実装する方法は次のとおりです。 成し遂げる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ツールの詳細な説明と実践的な演習(推奨)
MySQL では通常、limit を使用してページ上のページング機能を完了しますが、データ量が大きな...
序文Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が単一の値...
問題の説明Ele.me UI のフレームワークでは、入力データは el-form であり、出力データ...
ソフトウェアバージョンウィンドウズ: ウィンドウズ10 MySQL: mysql-8.0.16-wi...
React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...
序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...
1. 要件の説明特定の要素については、背景background-imageを半透明にしたいが、テキス...
実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...
データ型と操作データテーブル1.1 MySQL 型: 整数 1.2 MySQL データ型: 浮動小数...
一般的なフォーム プロンプトは常にフォームのスペースを占有し、フォームが長くなったり広くなったりして...
ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...
序文Linux では、コンパイルとリンクには Makefile を使用する必要がありますが、適切な ...
導入: Lambda Probe (旧称 Tomcat Probe) は、Apache Tomcat...
現在の需要:グループとファクターの 2 つのテーブルがあります。1 つのグループは複数のファクターに...
まずコードを書いて (int i=0;i<1000;i++){ (int j=0;j<5...