背景ブロックチェーン ログ モジュールで作業しているときに、コンテナーが実行されている場合は、ログ ファイルをホスト マシンにマップして簡単に表示できるようにする必要があります。これを実装する方法は次のとおりです。 成し遂げる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. ヘビの動き4. ヘビの死を判定する方法 ヘビの死...
開発を行う際に、次のような状況に遭遇することがよくあります。 a.swf が Web ページに追加さ...
Linux システムの Swap パーティション、つまり swap パーティションは、一般に仮想メモ...
MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...
注意: スコープアニメーションは使用できません。 ! ! ! GIF経由 <テンプレート>...
この記事では、Linux システム コマンドについて説明します。ご参考までに、詳細は以下の通りです。...
1. tomcat とは誰ですか? 2. Tomcat は何ができますか? Tomcat は Web...
最近、element-ui を統合したプロジェクトで vuethink を使用しました。以前は bo...
目次いつ使うか構造的ブランチコードいつ使うか選択動作を完了するには、2 つの列間で要素を直感的に移動...
npm インストールチュートリアル: 1. Node.jsインストールパッケージをダウンロードする公...
では、ドメイン名を登録して仮想ホストを購入した後、IE でドメイン名を入力して Web サイトを開く...
序文CentOS に MySQL をインストールして設定する手順は次のとおりです。文章yumソースか...
自宅のルーターが300Mの帯域幅を80Mに強制的に減らしたため、3205Uソフトルーターを購入しまし...
最近、MySQL の起動中にエラーが発生しました。エラー メッセージは次のとおりです。 エラー 20...
1 はじめに優れたコーディング習慣は優れたプログラマーが備えるべき資質ですが、コードの品質を保証する...