背景
創(chuàng)新互聯(lián)公司專注于鐵鋒企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城建設(shè)。鐵鋒網(wǎng)站建設(shè)公司,為鐵鋒等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
在做區(qū)塊鏈日志模塊時(shí),如果容器運(yùn)行,需要把日志文件映射到宿主機(jī)上以方便查看。下面介紹一下我的實(shí)現(xiàn)方式。實(shí)現(xiàn)
通過docker-compose配置文件volumes參數(shù)
配置文件示例:volumes: - /var/run/:/host/var/run/ - ./channel-artifacts:/var/hyperledger/configs - ./fabric_logs:/tmp/fabric_logs/
把容器中/tmp/fabric_logs目錄映射到宿主機(jī)當(dāng)前目錄下的./fabric_logs目錄下。這兩個(gè)目錄會共享數(shù)據(jù)。創(chuàng)建容器時(shí),代碼中配置相關(guān)參數(shù)
代碼中創(chuàng)建容器時(shí)添加:func (vm *DockerVM) createContainer(ctxt context.Context, client dockerClient, imageID string, containerID string, args []string, env []string, attachStdout bool) error { volumes := make(map[string]struct{}) var mounts []docker.Mount var source string var destination string var fabricCfgPath = os.Getenv("FABRIC_CFG_PATH") var configName string _, err := os.Stat(fabricCfgPath) if err == nil { configName = strings.ToLower(Peer_Prefix) config := viper.New() config.SetConfigName(configName) config.AddConfigPath(fabricCfgPath) config.ReadInConfig() config.SetEnvPrefix("CORE") config.AutomaticEnv() replacer := strings.NewReplacer(".", "_") config.SetEnvKeyReplacer(replacer) config.SetConfigType("yaml") destination = config.GetString("logging.logpath") //fmt.Println(destination) } if destination == "" { destination = "/tmp/fabric_logs/" } source = "/tmp/chaincode_logs/" + containerID volumes[destination] = struct{}{} mount := docker.Mount{ Name: "bind", Source: source, Destination: destination, Mode: "rw", RW: true, Driver: "rprivate", } mounts = append(mounts, mount) config := docker.Config{Cmd: args, Image: imageID, Env: env, Volumes: volumes, Mounts: mounts, AttachStdout: attachStdout, AttachStderr: attachStdout} hostConfig := getDockerHostConfig() hostConfig.Binds = []string{ source + ":" + destination + ":rw", } copts := docker.CreateContainerOptions{Name: containerID, Config: &config, HostConfig: hostConfig} dockerLogger.Debugf("Create container: %s", containerID) _, err = client.CreateContainer(copts) if err != nil { return err } dockerLogger.Debugf("Created container: %s", imageID) return nil}
其中volumes,Mounts, Hostconfig.Binds參數(shù)需要按照自己的映射關(guān)系去填寫。
這樣和通過:
1、docker-compose 配置文件啟動
2、或者docker -v 參數(shù)命令行啟動
達(dá)到一樣效果。
補(bǔ)充:docker文件夾映射的兩種方式---主機(jī)卷映射和共享文件夾映射
docker容器不保持任何數(shù)據(jù)
重要數(shù)據(jù)請使用外部卷存儲(數(shù)據(jù)持久化)
容器可以掛載真實(shí)機(jī)目錄或共享存儲為卷主機(jī)卷的映射[root@docker1 ~]# mkdir /var/data[root@docker1 ~]# docker run -it -v /var/data:/abc myos[root@f1fb58b85671 /]# cd /abc/[root@f1fb58b85671 abc]# touch f1[root@f1fb58b85671 abc]# lsf1 zhy[root@docker1 ~]# cd /var/data/[root@docker1 data]# lsf1[root@docker1 data]# touch zhy使用共享存儲的映射
思路:
將一臺主機(jī)做為nfs主機(jī), 創(chuàng)建相應(yīng)的文件夾,并將其共享給docker的兩臺主機(jī),兩臺docker主機(jī)將分享的文件夾映射到容器中,使得對應(yīng)的容器可以共享到nfs主機(jī)的內(nèi)容??梢詫ttp等服務(wù)器的相應(yīng)的頁面文件夾使用這種形式,從而實(shí)現(xiàn)多個(gè)容器跑一個(gè)業(yè)務(wù)。nfs主機(jī)配置【192.168.6.77】[root@nfs ~]# yum -y install nfs-utils[root@nfs ~]# vim /etc/exports/public *(rw)[root@nfs ~]# systemctl restart nfs-serverFailed to restart nfs-serve.service: Unit not found[root@nfs ~]# mkdir /public[root@nfs ~]# cd /public/[root@nfs public]# touch nfs.txt[root@nfs public]# lsnfs.txtdocker1主機(jī)配置[root@docker1 ~]# vim /etc/fstab 192.168.6.77:/public /mnt/nfs nfs defaults,_netdev 0 0[root@docker1 ~]# mkdir /mnt/nfs [root@docker1 ~]# systemctl restart nfs-server[root@docker1 ~]# mount -a[root@docker1 ~]# df -h192.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 zhuhaiyan]# lsnfs.txtdocker2主機(jī)配置[root@docker2 ~]# vim /etc/fstab 192.168.6.77:/public /mnt/nfs nfs defaults,_netdev 0 0[root@docker2 ~]# mkdir /mnt/nfs [root@docker2 ~]# systemctl restart nfs-server[root@docker2 ~]# mount -a[root@docker2 ~]# df -h192.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 /zhuhaiyan/[root@cdd805771d07 zhuhaiyan]# lsnfs.txt
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
網(wǎng)站題目:dockervolumes文件映射方式
當(dāng)前鏈接:http://jinyejixie.com/article0/didio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、面包屑導(dǎo)航、App開發(fā)、網(wǎng)站內(nèi)鏈、虛擬主機(jī)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)