[{"data":1,"prerenderedAt":9508},["ShallowReactive",2],{"navigation":3,"/depoly/docker":650,"/depoly/docker-surround":9504},[4,12,31,103],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"更新日志","/update-log","1.update-log/1.index",[9],{"title":10,"path":6,"stem":7},"日志","i-line-md-calendar",{"title":13,"icon":14,"path":15,"stem":16,"children":17,"page":30},"食用指南","i-line-md-cookie","/getting-started","2.getting-started",[18,22,26],{"title":19,"path":20,"stem":21},"微信群聊","/getting-started/wechat","2.getting-started/1.wechat",{"title":23,"path":24,"stem":25},"精彩视频","/getting-started/videos","2.getting-started/2.videos",{"title":27,"path":28,"stem":29},"选购指南","/getting-started/tier","2.getting-started/4.tier",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":-1},"应用部署","i-material-symbols-logo-dev-outline","/depoly","3.depoly",[37,41,46,62,67,72,77,82,87],{"title":38,"path":34,"stem":39,"icon":40},"视频教程汇总","3.depoly/index","i-tabler-brand-youtube",{"title":42,"path":43,"stem":44,"icon":45},"CloudFlare","/depoly/cloudflare","3.depoly/cloudflare","i-simple-icons-cloudflare",{"title":47,"icon":48,"path":49,"stem":50,"children":51,"page":30},"数据库","i-material-symbols-database-outline","/depoly/database","3.depoly/database",[52,57],{"title":53,"path":54,"stem":55,"icon":56},"MySQL","/depoly/database/mysql","3.depoly/database/mysql","i-lineicons-mysql",{"title":58,"path":59,"stem":60,"icon":61},"SQLite","/depoly/database/sqlite","3.depoly/database/sqlite","i-file-icons-sqlite",{"title":63,"path":64,"stem":65,"icon":66},"Docker","/depoly/docker","3.depoly/docker","i-mdi-docker",{"title":68,"path":69,"stem":70,"icon":71},"邮件","/depoly/mail","3.depoly/mail","i-heroicons-envelope",{"title":73,"path":74,"stem":75,"icon":76},"服务器指标监控","/depoly/monitoring","3.depoly/monitoring","i-cbi-prometheusio",{"title":78,"path":79,"stem":80,"icon":81},"安全","/depoly/security","3.depoly/security","i-gravity-ui-firewall",{"title":83,"path":84,"stem":85,"icon":86},"建站","/depoly/site","3.depoly/site","i-cbi-nginx-proxy-manager",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":30},"操作系统","i-simple-icons-linux","/depoly/system","3.depoly/system",[93,98],{"title":94,"path":95,"stem":96,"icon":97},"Debian","/depoly/system/debian","3.depoly/system/debian","i-simple-icons-debian",{"title":99,"path":100,"stem":101,"icon":102},"磁盘","/depoly/system/disk","3.depoly/system/disk","i-streamline-cyber-harddisk-4",{"title":104,"path":105,"stem":106,"children":107,"icon":649},"商户测评","/review","4.review/1.index",[108,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375,379,383,387,391,395,399,403,407,411,415,419,423,427,431,435,439,443,447,451,455,459,463,467,471,475,479,483,487,491,495,499,503,507,511,515,519,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579,583,587,591,595,599,604,608,612,616,621,625,629,633,637,641,645],{"title":109,"path":105,"stem":106,"icon":110},"总表","i-ph-ranking-duotone",{"title":112,"path":113,"stem":114},"100TB","/review/100tb","4.review/2.100tb",{"title":116,"path":117,"stem":118},"AaITR","/review/aaitr","4.review/2.aaitr",{"title":120,"path":121,"stem":122},"AkileCloud（AK）","/review/akile","4.review/2.akile",{"title":124,"path":125,"stem":126},"AkkoCloud","/review/akkocloud","4.review/2.akkocloud",{"title":128,"path":129,"stem":130},"DreamCloud","/review/as211392","4.review/2.as211392",{"title":132,"path":133,"stem":134},"Back Waves","/review/backwaves","4.review/2.backwaves",{"title":136,"path":137,"stem":138},"BageVM","/review/bagevm","4.review/2.bagevm",{"title":140,"path":141,"stem":142},"Bandwagon（搬瓦工）","/review/bandwagon","4.review/2.bandwagon",{"title":144,"path":145,"stem":146},"BestVM（富婆）","/review/bestvm","4.review/2.bestvm",{"title":148,"path":149,"stem":150},"BUG NET","/review/bug","4.review/2.bug",{"title":152,"path":153,"stem":154},"ByteVirt","/review/bytevirt","4.review/2.bytevirt",{"title":156,"path":157,"stem":158},"Churros","/review/churros","4.review/2.churros",{"title":160,"path":161,"stem":162},"Ciallo Networks","/review/ciallonetworks","4.review/2.ciallonetworks",{"title":164,"path":165,"stem":166},"CloudCone（CC）","/review/cloudcone","4.review/2.cloudcone",{"title":168,"path":169,"stem":170},"CloudLeadInno","/review/cloudleadinno","4.review/2.cloudleadinno",{"title":172,"path":173,"stem":174},"ColoCrossing（CCS）","/review/colocrossing","4.review/2.colocrossing",{"title":176,"path":177,"stem":178},"CstoneCloud","/review/cstonecloud","4.review/2.cstonecloud",{"title":180,"path":181,"stem":182},"CubeCloud（魔方云）","/review/cubecloud","4.review/2.cubecloud",{"title":184,"path":185,"stem":186},"DataOnline","/review/dataonline","4.review/2.dataonline",{"title":188,"path":189,"stem":190},"DesiVPS","/review/desivps","4.review/2.desivps",{"title":192,"path":193,"stem":194},"DigitalVirt","/review/digitalvirt","4.review/2.digitalvirt",{"title":196,"path":197,"stem":198},"DMIT（大妈）","/review/dmit","4.review/2.dmit",{"title":200,"path":201,"stem":202},"DogYun（狗云）","/review/dogyun","4.review/2.dogyun",{"title":204,"path":205,"stem":206},"Dotdot Networks","/review/dotdot","4.review/2.dotdot",{"title":208,"path":209,"stem":210},"Ethernet Servers","/review/ethernetservers","4.review/2.ethernetservers",{"title":212,"path":213,"stem":214},"Evoxt（益沃斯）","/review/evoxt","4.review/2.evoxt",{"title":216,"path":217,"stem":218},"Fast Line（台灣速連）","/review/fast-line","4.review/2.fast-line",{"title":220,"path":221,"stem":222},"FiberState（FS）","/review/fiberstate","4.review/2.fiberstate",{"title":224,"path":225,"stem":226},"Flawless Node","/review/flawlessnode","4.review/2.flawlessnode",{"title":228,"path":229,"stem":230},"Fourplex","/review/fourplex","4.review/2.fourplex",{"title":232,"path":233,"stem":234},"GoMami（狗妈）","/review/gomami","4.review/2.gomami",{"title":236,"path":237,"stem":238},"HaloCloud","/review/halocloud","4.review/2.halocloud",{"title":240,"path":241,"stem":242},"Haruka","/review/haruka","4.review/2.haruka",{"title":244,"path":245,"stem":246},"HighEndNetwork","/review/highendnetwork","4.review/2.highendnetwork",{"title":248,"path":249,"stem":250},"HostDare","/review/hostdare","4.review/2.hostdare",{"title":252,"path":253,"stem":254},"iON cloud","/review/ion","4.review/2.ion",{"title":256,"path":257,"stem":258},"iPRaft","/review/ipraft","4.review/2.ipraft",{"title":260,"path":261,"stem":262},"is*hosting","/review/ishosting","4.review/2.ishosting",{"title":264,"path":265,"stem":266},"ISIF Cloud","/review/isif","4.review/2.isif",{"title":268,"path":269,"stem":270},"JUSTG","/review/justg","4.review/2.justg",{"title":272,"path":273,"stem":274},"LightCone（光锥云）","/review/lightcone","4.review/2.lightcone",{"title":276,"path":277,"stem":278},"Lightlayer","/review/lightlayer","4.review/2.lightlayer",{"title":280,"path":281,"stem":282},"Lime Network（烧纸云）","/review/limee","4.review/2.limee",{"title":284,"path":285,"stem":286},"LinkCLi免备案服务器","/review/linkcli","4.review/2.linkcli",{"title":288,"path":289,"stem":290},"Lisahost（丽萨主机）","/review/lisahost","4.review/2.lisahost",{"title":292,"path":293,"stem":294},"Md5Host","/review/md5host","4.review/2.md5host",{"title":296,"path":297,"stem":298},"MOACK（蘑菇）","/review/moack","4.review/2.moack",{"title":300,"path":301,"stem":302},"MoeCloud","/review/moe","4.review/2.moe",{"title":304,"path":305,"stem":306},"NoBrand Cloud","/review/nbdnet","4.review/2.nbdnet",{"title":308,"path":309,"stem":310},"Neburst Networks（奶爸）","/review/neburst","4.review/2.neburst",{"title":312,"path":313,"stem":314},"NETfront","/review/netfront","4.review/2.netfront",{"title":316,"path":317,"stem":318},"NetJett(YVGS)","/review/netjett","4.review/2.netjett",{"title":320,"path":321,"stem":322},"NiiHost","/review/niihost","4.review/2.niihost",{"title":324,"path":325,"stem":326},"NovixLink 诺联主机","/review/novixlink","4.review/2.novixlink",{"title":328,"path":329,"stem":330},"Nube Cloud","/review/nube","4.review/2.nube",{"title":332,"path":333,"stem":334},"Onidel Cloud","/review/onidel","4.review/2.onidel",{"title":336,"path":337,"stem":338},"OrangeVPS","/review/orangevps","4.review/2.orangevps",{"title":340,"path":341,"stem":342},"PittQiao（PQS）","/review/pqs","4.review/2.pqs",{"title":344,"path":345,"stem":346},"QDE","/review/qde","4.review/2.qde",{"title":348,"path":349,"stem":350},"QQG","/review/qqg","4.review/2.qqg",{"title":352,"path":353,"stem":354},"Rabisu","/review/rabisu","4.review/2.rabisu",{"title":356,"path":357,"stem":358},"RackNerd（RN）","/review/racknerd","4.review/2.racknerd",{"title":360,"path":361,"stem":362},"RakSmart","/review/raksmart","4.review/2.raksmart",{"title":364,"path":365,"stem":366},"RFCHost（花卷）","/review/rfchost","4.review/2.rfchost",{"title":368,"path":369,"stem":370},"Sakura（樱络云）","/review/sakura","4.review/2.sakura",{"title":372,"path":373,"stem":374},"SaltyFish（咸鱼）","/review/saltyfish","4.review/2.saltyfish",{"title":376,"path":377,"stem":378},"SixtyNet","/review/sixtynet","4.review/2.sixtynet",{"title":380,"path":381,"stem":382},"Skyline Connect","/review/skylineconnect","4.review/2.skylineconnect",{"title":384,"path":385,"stem":386},"SkyStroll","/review/skystroll","4.review/2.skystroll",{"title":388,"path":389,"stem":390},"Skywolf","/review/skywolf","4.review/2.skywolf",{"title":392,"path":393,"stem":394},"Spartan（斯巴达）","/review/spartan","4.review/2.spartan",{"title":396,"path":397,"stem":398},"SpeedOnline","/review/speedonline","4.review/2.speedonline",{"title":400,"path":401,"stem":402},"StarryDNS（星光网络）","/review/starrydns","4.review/2.starrydns",{"title":404,"path":405,"stem":406},"Tarekcloud","/review/tarekcloud","4.review/2.tarekcloud",{"title":408,"path":409,"stem":410},"Terabix","/review/terabix","4.review/2.terabix",{"title":412,"path":413,"stem":414},"Tokyonline","/review/tokyonline","4.review/2.tokyonline",{"title":416,"path":417,"stem":418},"TOTHOST","/review/tothost","4.review/2.tothost",{"title":420,"path":421,"stem":422},"V.PS（小秘书）","/review/v.ps","4.review/2.v.ps",{"title":424,"path":425,"stem":426},"V5 Server","/review/v5","4.review/2.v5",{"title":428,"path":429,"stem":430},"VIP Cloud","/review/vipcloud","4.review/2.vipcloud",{"title":432,"path":433,"stem":434},"VIRCS","/review/vircs","4.review/2.vircs",{"title":436,"path":437,"stem":438},"VMISS","/review/vmiss","4.review/2.vmiss",{"title":440,"path":441,"stem":442},"VMRack","/review/vmrack","4.review/2.vmrack",{"title":444,"path":445,"stem":446},"VmShell","/review/vmshell","4.review/2.vmshell",{"title":448,"path":449,"stem":450},"VollCloud","/review/vollcloud","4.review/2.vollcloud",{"title":452,"path":453,"stem":454},"VoyraCloud","/review/voyracloud","4.review/2.voyracloud",{"title":456,"path":457,"stem":458},"wap.ac","/review/wap.ac","4.review/2.wap.ac",{"title":460,"path":461,"stem":462},"WePC（车库云）","/review/wepc","4.review/2.wepc",{"title":464,"path":465,"stem":466},"YT.NET（云途）","/review/yt","4.review/2.yt",{"title":468,"path":469,"stem":470},"Zenlayer Cloud","/review/zenlayer","4.review/2.zenlayer",{"title":472,"path":473,"stem":474},"ZgoCloud","/review/zgovps","4.review/2.zgovps",{"title":476,"path":477,"stem":478},"ZoroCloud（索隆云）","/review/zorocloud","4.review/2.zorocloud",{"title":480,"path":481,"stem":482},"七九网络","/review/079idc","4.review/3.079idc",{"title":484,"path":485,"stem":486},"六六云","/review/666clouds","4.review/3.666clouds",{"title":488,"path":489,"stem":490},"阿里云","/review/aliyun","4.review/3.aliyun",{"title":492,"path":493,"stem":494},"数掘科技","/review/gfvps","4.review/3.gfvps",{"title":496,"path":497,"stem":498},"华纳云","/review/hncloud","4.review/3.hncloud",{"title":500,"path":501,"stem":502},"华瑞云","/review/huaruidc","4.review/3.huaruidc",{"title":504,"path":505,"stem":506},"极络云","/review/jiluoyun","4.review/3.jiluoyun",{"title":508,"path":509,"stem":510},"快快網絡","/review/kkidc","4.review/3.kkidc",{"title":512,"path":513,"stem":514},"莱卡云","/review/lcayun","4.review/3.lcayun",{"title":516,"path":517,"stem":518},"领创云","/review/lcyidc","4.review/3.lcyidc",{"title":520,"path":521,"stem":522},"荔枝云（Lycheen）","/review/lycheen","4.review/3.lycheen",{"title":524,"path":525,"stem":526},"轻松云","/review/qyun","4.review/3.qyun",{"title":528,"path":529,"stem":530},"热陈互联IDC","/review/rcvps","4.review/3.rcvps",{"title":532,"path":533,"stem":534},"伤心的云（Sad Cloud）","/review/sadidc","4.review/3.sadidc",{"title":536,"path":537,"stem":538},"速维云","/review/svyun","4.review/3.svyun",{"title":540,"path":541,"stem":542},"腾讯云（Tencent Cloud）","/review/tencent","4.review/3.tencent",{"title":544,"path":545,"stem":546},"野草云","/review/yecaoyun","4.review/3.yecaoyun",{"title":548,"path":549,"stem":550},"蔭雲（YINNET）","/review/yin-net","4.review/3.yin-net",{"title":552,"path":553,"stem":554},"云悠（YUNYOO）","/review/yunyoo","4.review/3.yunyoo",{"title":556,"path":557,"stem":558},"朝暮数据","/review/zhaomu","4.review/3.zhaomu",{"title":560,"path":561,"stem":562},"智贸云","/review/zmyhost","4.review/3.zmyhost",{"title":564,"path":565,"stem":566},"慈云数据","/review/zovps","4.review/3.zovps",{"title":568,"path":569,"stem":570},"AcckCloud","/review/acck","4.review/997.acck",{"title":572,"path":573,"stem":574},"ClawCloud（爪云）","/review/claw","4.review/997.claw",{"title":576,"path":577,"stem":578},"EasyVM","/review/easy","4.review/997.easy",{"title":580,"path":581,"stem":582},"ReliableSite（RS）","/review/reliablesite","4.review/997.reliablesite",{"title":584,"path":585,"stem":586},"TapHip","/review/taphip","4.review/997.taphip",{"title":588,"path":589,"stem":590},"TechnoVM","/review/techno","4.review/997.techno",{"title":592,"path":593,"stem":594},"破碎工坊云","/review/crash","4.review/998.crash",{"title":596,"path":597,"stem":598},"哇沃","/review/wawo","4.review/998.wawo",{"title":600,"path":601,"stem":602,"icon":603},"Admd","/review/admd","4.review/999.admd","i-mdi-dead",{"title":605,"path":606,"stem":607,"icon":603},"DuoCloud","/review/duocloud","4.review/999.duocloud",{"title":609,"path":610,"stem":611,"icon":603},"Faconhost","/review/faconhost","4.review/999.faconhost",{"title":613,"path":614,"stem":615,"icon":603},"HostBlazer","/review/hostblazer","4.review/999.hostblazer",{"title":617,"path":618,"stem":619,"icon":620},"Kurun（昆仑）","/review/kurun","4.review/999.kurun","i-mdi-offline",{"title":622,"path":623,"stem":624,"icon":603},"lingcloud","/review/lingcloud","4.review/999.lingcloud",{"title":626,"path":627,"stem":628,"icon":603},"OMAO（欧猫）","/review/omao","4.review/999.omao",{"title":630,"path":631,"stem":632,"icon":603},"Saturney（萨特尼）","/review/saturney","4.review/999.saturney",{"title":634,"path":635,"stem":636,"icon":603},"SpikeTel","/review/spiketel","4.review/999.spiketel",{"title":638,"path":639,"stem":640,"icon":603},"TWOMEN","/review/twomen","4.review/999.twomen",{"title":642,"path":643,"stem":644,"icon":603},"UserCloud（台妹云）","/review/user","4.review/999.user",{"title":646,"path":647,"stem":648,"icon":603},"VKVM","/review/vkvm","4.review/999.vkvm","i-line-md-clipboard-list",{"id":651,"title":63,"body":652,"description":9496,"extension":9497,"idcId":9498,"meta":9499,"navigation":9501,"path":64,"seo":9502,"stem":65,"__hash__":9503},"docs/3.depoly/docker.md",{"type":653,"value":654,"toc":9408},"minimark",[655,660,673,677,751,754,941,944,1060,1063,1084,1087,1242,1251,1517,1526,1529,1570,1573,1740,1743,1766,1768,1927,1929,1945,1948,1975,1981,2033,2037,2041,2049,2063,2085,2088,2111,2115,2118,2133,2139,2145,2152,2163,2170,2178,2181,2187,2190,2196,2199,2205,2209,2363,2367,2370,2442,2445,2669,2672,2918,2922,3148,3152,3312,3316,3362,3366,3369,3396,3457,3461,3483,3487,3491,3843,3847,3974,3978,3985,4063,4068,4071,4093,4099,4138,4143,4186,4190,4207,4211,4268,4272,4384,4388,4409,4413,4419,4423,4429,4433,4439,4443,4468,4472,4496,4500,4515,4519,4559,4563,4577,4581,4630,4634,4735,4739,4746,4749,4753,4759,4763,4766,4770,4776,4780,4791,4805,4811,4815,4822,4835,4839,4842,4869,4873,4880,4895,4899,4912,4924,4928,4931,4953,4972,5023,5027,5053,5056,5083,5087,5090,5107,5110,5116,5134,5138,5141,5144,5155,5168,5172,5175,5214,5218,5289,5292,5324,5327,5362,5366,5370,5376,5380,5385,5391,5395,5418,5422,5444,5452,5456,5459,5462,5490,5493,5576,5580,5584,5686,5770,5774,5918,5922,5984,5988,6727,6731,6735,6738,6744,7135,7139,7142,7145,7171,7176,7479,7688,7692,7695,7700,7704,7707,7732,7737,7933,7937,7940,7945,7970,7974,7977,8043,8046,8113,8117,8235,8239,8242,8284,8287,8327,8332,8391,8395,8399,8402,8405,8431,9263,9267,9298,9301,9404],[656,657,659],"h2",{"id":658},"install-docker","一、安装 Docker",[661,662,664,665,672],"h3",{"id":663},"_11-ubuntu-中安装","1.1 ",[666,667,671],"a",{"href":668,"rel":669},"https://docs.docker.com/engine/install/ubuntu/",[670],"nofollow","Ubuntu"," 中安装",[674,675,676],"p",{},"删除旧版本",[678,679,685],"pre",{"className":680,"code":681,"filename":682,"language":683,"meta":684,"style":684},"language-bash shiki shiki-themes one-light one-light one-dark-pro","for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done\n","terminal","bash","",[686,687,688],"code",{"__ignoreMap":684},[689,690,693,697,701,704,708,711,714,717,720,723,726,730,733,737,740,743,746,748],"span",{"class":691,"line":692},"line",1,[689,694,696],{"class":695},"sRLjE","for",[689,698,700],{"class":699},"s3_5o"," pkg",[689,702,703],{"class":695}," in",[689,705,707],{"class":706},"sBZeU"," docker.io",[689,709,710],{"class":706}," docker-doc",[689,712,713],{"class":706}," docker-compose",[689,715,716],{"class":706}," docker-compose-v2",[689,718,719],{"class":706}," podman-docker",[689,721,722],{"class":706}," containerd",[689,724,725],{"class":706}," runc",[689,727,729],{"class":728},"skGaQ","; ",[689,731,732],{"class":695},"do",[689,734,736],{"class":735},"sgdWN"," sudo",[689,738,739],{"class":706}," apt-get",[689,741,742],{"class":706}," remove",[689,744,745],{"class":699}," $pkg",[689,747,729],{"class":728},[689,749,750],{"class":695},"done\n",[674,752,753],{},"设置Docker源",[678,755,757],{"className":680,"code":756,"filename":682,"language":683,"meta":684,"style":684},"# Add Docker's official GPG key:\nsudo apt-get update\nsudo apt-get install ca-certificates curl\nsudo install -m 0755 -d /etc/apt/keyrings\nsudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc\nsudo chmod a+r /etc/apt/keyrings/docker.asc\n\n# Add the repository to Apt sources:\necho \\\n  \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \\\n  $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\nsudo apt-get update\n",[686,758,759,765,776,792,812,832,845,852,858,868,886,914,932],{"__ignoreMap":684},[689,760,761],{"class":691,"line":692},[689,762,764],{"class":763},"slzXe","# Add Docker's official GPG key:\n",[689,766,768,771,773],{"class":691,"line":767},2,[689,769,770],{"class":735},"sudo",[689,772,739],{"class":706},[689,774,775],{"class":706}," update\n",[689,777,779,781,783,786,789],{"class":691,"line":778},3,[689,780,770],{"class":735},[689,782,739],{"class":706},[689,784,785],{"class":706}," install",[689,787,788],{"class":706}," ca-certificates",[689,790,791],{"class":706}," curl\n",[689,793,795,797,799,803,806,809],{"class":691,"line":794},4,[689,796,770],{"class":735},[689,798,785],{"class":706},[689,800,802],{"class":801},"soiGB"," -m",[689,804,805],{"class":801}," 0755",[689,807,808],{"class":801}," -d",[689,810,811],{"class":706}," /etc/apt/keyrings\n",[689,813,815,817,820,823,826,829],{"class":691,"line":814},5,[689,816,770],{"class":735},[689,818,819],{"class":706}," curl",[689,821,822],{"class":801}," -fsSL",[689,824,825],{"class":706}," https://download.docker.com/linux/debian/gpg",[689,827,828],{"class":801}," -o",[689,830,831],{"class":706}," /etc/apt/keyrings/docker.asc\n",[689,833,835,837,840,843],{"class":691,"line":834},6,[689,836,770],{"class":735},[689,838,839],{"class":706}," chmod",[689,841,842],{"class":706}," a+r",[689,844,831],{"class":706},[689,846,848],{"class":691,"line":847},7,[689,849,851],{"emptyLinePlaceholder":850},true,"\n",[689,853,855],{"class":691,"line":854},8,[689,856,857],{"class":763},"# Add the repository to Apt sources:\n",[689,859,861,865],{"class":691,"line":860},9,[689,862,864],{"class":863},"sXhqU","echo",[689,866,867],{"class":863}," \\\n",[689,869,871,874,877,880,883],{"class":691,"line":870},10,[689,872,873],{"class":706},"  \"deb [arch=$(",[689,875,876],{"class":735},"dpkg",[689,878,879],{"class":801}," --print-architecture",[689,881,882],{"class":706},") signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian ",[689,884,885],{"class":863},"\\\n",[689,887,889,892,895,898,900,903,906,909,912],{"class":691,"line":888},11,[689,890,891],{"class":706},"  $(",[689,893,894],{"class":863},".",[689,896,897],{"class":706}," /etc/os-release && ",[689,899,864],{"class":863},[689,901,902],{"class":706}," \"",[689,904,905],{"class":699},"$VERSION_CODENAME",[689,907,908],{"class":706},"\") stable\"",[689,910,911],{"class":728}," | ",[689,913,885],{"class":863},[689,915,917,920,923,926,929],{"class":691,"line":916},12,[689,918,919],{"class":735},"  sudo",[689,921,922],{"class":706}," tee",[689,924,925],{"class":706}," /etc/apt/sources.list.d/docker.list",[689,927,928],{"class":728}," > ",[689,930,931],{"class":706},"/dev/null\n",[689,933,935,937,939],{"class":691,"line":934},13,[689,936,770],{"class":735},[689,938,739],{"class":706},[689,940,775],{"class":706},[674,942,943],{},"安装Docker",[678,945,947],{"className":680,"code":946,"filename":682,"language":683,"meta":684,"style":684},"# 安装最新版本\nsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n# 安装指定版本\n# List the available versions:\napt-cache madison docker-ce | awk '{ print $3 }'\n\n5:24.0.0-1~ubuntu.22.04~jammy\n5:23.0.6-1~ubuntu.22.04~jammy\n...\nVERSION_STRING=5:24.0.0-1~ubuntu.22.04~jammy\nsudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin\n",[686,948,949,954,977,982,987,1005,1009,1014,1019,1024,1035],{"__ignoreMap":684},[689,950,951],{"class":691,"line":692},[689,952,953],{"class":763},"# 安装最新版本\n",[689,955,956,958,960,962,965,968,971,974],{"class":691,"line":767},[689,957,770],{"class":735},[689,959,739],{"class":706},[689,961,785],{"class":706},[689,963,964],{"class":706}," docker-ce",[689,966,967],{"class":706}," docker-ce-cli",[689,969,970],{"class":706}," containerd.io",[689,972,973],{"class":706}," docker-buildx-plugin",[689,975,976],{"class":706}," docker-compose-plugin\n",[689,978,979],{"class":691,"line":778},[689,980,981],{"class":763},"# 安装指定版本\n",[689,983,984],{"class":691,"line":794},[689,985,986],{"class":763},"# List the available versions:\n",[689,988,989,992,995,997,999,1002],{"class":691,"line":814},[689,990,991],{"class":735},"apt-cache",[689,993,994],{"class":706}," madison",[689,996,964],{"class":706},[689,998,911],{"class":728},[689,1000,1001],{"class":735},"awk",[689,1003,1004],{"class":706}," '{ print $3 }'\n",[689,1006,1007],{"class":691,"line":834},[689,1008,851],{"emptyLinePlaceholder":850},[689,1010,1011],{"class":691,"line":847},[689,1012,1013],{"class":735},"5:24.0.0-1~ubuntu.22.04~jammy\n",[689,1015,1016],{"class":691,"line":854},[689,1017,1018],{"class":735},"5:23.0.6-1~ubuntu.22.04~jammy\n",[689,1020,1021],{"class":691,"line":860},[689,1022,1023],{"class":863},"...\n",[689,1025,1026,1029,1033],{"class":691,"line":870},[689,1027,1028],{"class":699},"VERSION_STRING",[689,1030,1032],{"class":1031},"sQ8GY","=",[689,1034,1013],{"class":706},[689,1036,1037,1039,1041,1043,1046,1049,1052,1054,1056,1058],{"class":691,"line":888},[689,1038,770],{"class":735},[689,1040,739],{"class":706},[689,1042,785],{"class":706},[689,1044,1045],{"class":706}," docker-ce=",[689,1047,1048],{"class":699},"$VERSION_STRING",[689,1050,1051],{"class":706}," docker-ce-cli=",[689,1053,1048],{"class":699},[689,1055,970],{"class":706},[689,1057,973],{"class":706},[689,1059,976],{"class":706},[674,1061,1062],{},"验证安装",[678,1064,1066],{"className":680,"code":1065,"filename":682,"language":683,"meta":684,"style":684},"$ sudo docker run hello-world\n",[686,1067,1068],{"__ignoreMap":684},[689,1069,1070,1073,1075,1078,1081],{"class":691,"line":692},[689,1071,1072],{"class":735},"$",[689,1074,736],{"class":706},[689,1076,1077],{"class":706}," docker",[689,1079,1080],{"class":706}," run",[689,1082,1083],{"class":706}," hello-world\n",[674,1085,1086],{},"替换国内软件源",[678,1088,1090],{"className":680,"code":1089,"filename":682,"language":683,"meta":684,"style":684},"# 查看当前是否有镜像源配置,如果有输出把服务文件中的--registry-mirror删掉\n$ systemctl cat docker | grep '\\-\\-registry\\-mirror'\n# 编辑docker配置文件加入一下内容\n$ vim /etc/docker/daemon.json\n{\n  \"registry-mirrors\": [\n    \"https://mirror.baidubce.com\"\n    \"https://ccr.ccs.tencentyun.com\"\n  ]\n}\n# 重启服务\n$ sudo systemctl daemon-reload\n$ sudo systemctl restart docker\n# 查看docker信息\n$ docker info\n# 测试源镜像\ndocker pull mirror.baidubce.com/library/nginx:latest\ndocker pull ccr.ccs.tencentyun.com/library/nginx:latest\n",[686,1091,1092,1097,1117,1122,1132,1137,1148,1153,1158,1163,1168,1173,1184,1198,1204,1214,1220,1232],{"__ignoreMap":684},[689,1093,1094],{"class":691,"line":692},[689,1095,1096],{"class":763},"# 查看当前是否有镜像源配置,如果有输出把服务文件中的--registry-mirror删掉\n",[689,1098,1099,1101,1104,1107,1109,1111,1114],{"class":691,"line":767},[689,1100,1072],{"class":735},[689,1102,1103],{"class":706}," systemctl",[689,1105,1106],{"class":706}," cat",[689,1108,1077],{"class":706},[689,1110,911],{"class":728},[689,1112,1113],{"class":735},"grep",[689,1115,1116],{"class":706}," '\\-\\-registry\\-mirror'\n",[689,1118,1119],{"class":691,"line":778},[689,1120,1121],{"class":763},"# 编辑docker配置文件加入一下内容\n",[689,1123,1124,1126,1129],{"class":691,"line":794},[689,1125,1072],{"class":735},[689,1127,1128],{"class":706}," vim",[689,1130,1131],{"class":706}," /etc/docker/daemon.json\n",[689,1133,1134],{"class":691,"line":814},[689,1135,1136],{"class":728},"{\n",[689,1138,1139,1142,1145],{"class":691,"line":834},[689,1140,1141],{"class":735},"  \"registry-mirrors\"",[689,1143,1144],{"class":863},":",[689,1146,1147],{"class":728}," [\n",[689,1149,1150],{"class":691,"line":847},[689,1151,1152],{"class":735},"    \"https://mirror.baidubce.com\"\n",[689,1154,1155],{"class":691,"line":854},[689,1156,1157],{"class":735},"    \"https://ccr.ccs.tencentyun.com\"\n",[689,1159,1160],{"class":691,"line":860},[689,1161,1162],{"class":728},"  ]\n",[689,1164,1165],{"class":691,"line":870},[689,1166,1167],{"class":728},"}\n",[689,1169,1170],{"class":691,"line":888},[689,1171,1172],{"class":763},"# 重启服务\n",[689,1174,1175,1177,1179,1181],{"class":691,"line":916},[689,1176,1072],{"class":735},[689,1178,736],{"class":706},[689,1180,1103],{"class":706},[689,1182,1183],{"class":706}," daemon-reload\n",[689,1185,1186,1188,1190,1192,1195],{"class":691,"line":934},[689,1187,1072],{"class":735},[689,1189,736],{"class":706},[689,1191,1103],{"class":706},[689,1193,1194],{"class":706}," restart",[689,1196,1197],{"class":706}," docker\n",[689,1199,1201],{"class":691,"line":1200},14,[689,1202,1203],{"class":763},"# 查看docker信息\n",[689,1205,1207,1209,1211],{"class":691,"line":1206},15,[689,1208,1072],{"class":735},[689,1210,1077],{"class":706},[689,1212,1213],{"class":706}," info\n",[689,1215,1217],{"class":691,"line":1216},16,[689,1218,1219],{"class":763},"# 测试源镜像\n",[689,1221,1223,1226,1229],{"class":691,"line":1222},17,[689,1224,1225],{"class":735},"docker",[689,1227,1228],{"class":706}," pull",[689,1230,1231],{"class":706}," mirror.baidubce.com/library/nginx:latest\n",[689,1233,1235,1237,1239],{"class":691,"line":1234},18,[689,1236,1225],{"class":735},[689,1238,1228],{"class":706},[689,1240,1241],{"class":706}," ccr.ccs.tencentyun.com/library/nginx:latest\n",[661,1243,1245,1246,672],{"id":1244},"_12-centos-中安装","1.2 ",[666,1247,1250],{"href":1248,"rel":1249},"https://docs.docker.com/engine/install/centos/",[670],"CentOS",[678,1252,1254],{"className":680,"code":1253,"filename":682,"language":683,"meta":684,"style":684},"# 安装Docker\nsudo yum remove docker\\*\nsudo yum install -y yum-utils\n\n#配置docker的yum地址\nsudo yum-config-manager \\\n--add-repo \\\nhttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\n\n\n#安装指定版本\nsudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6\n\n#yum install -y docker-ce docker-ce-cli containerd.io \n\n# 启动&开机启动docker\nsystemctl enable docker --now\n\n# docker加速配置\nsudo mkdir -p /etc/docker\nsudo tee /etc/docker/daemon.json \u003C\u003C-'EOF'\n{\n  \"registry-mirrors\": [\"https://5j8ttgd9.mirror.aliyuncs.com\"],\n  \"exec-opts\": [\"native.cgroupdriver=systemd\"],\n  \"log-driver\": \"json-file\",\n  \"log-opts\": {\n    \"max-size\": \"100m\"\n  },\n  \"storage-driver\": \"overlay2\"\n}\nEOF\nsudo systemctl daemon-reload\nsudo systemctl restart docker\n\n# 修改docker Cgroup Driver为systemd 上面配置已经修改\n#sed -i.bak \"s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g\" /usr/lib/systemd/system/docker.service\n",[686,1255,1256,1261,1275,1289,1293,1298,1307,1314,1319,1323,1327,1332,1351,1355,1360,1364,1369,1382,1386,1392,1406,1422,1427,1433,1439,1445,1451,1457,1463,1469,1474,1480,1489,1500,1505,1511],{"__ignoreMap":684},[689,1257,1258],{"class":691,"line":692},[689,1259,1260],{"class":763},"# 安装Docker\n",[689,1262,1263,1265,1268,1270,1272],{"class":691,"line":767},[689,1264,770],{"class":735},[689,1266,1267],{"class":706}," yum",[689,1269,742],{"class":706},[689,1271,1077],{"class":706},[689,1273,1274],{"class":863},"\\*\n",[689,1276,1277,1279,1281,1283,1286],{"class":691,"line":778},[689,1278,770],{"class":735},[689,1280,1267],{"class":706},[689,1282,785],{"class":706},[689,1284,1285],{"class":801}," -y",[689,1287,1288],{"class":706}," yum-utils\n",[689,1290,1291],{"class":691,"line":794},[689,1292,851],{"emptyLinePlaceholder":850},[689,1294,1295],{"class":691,"line":814},[689,1296,1297],{"class":763},"#配置docker的yum地址\n",[689,1299,1300,1302,1305],{"class":691,"line":834},[689,1301,770],{"class":735},[689,1303,1304],{"class":706}," yum-config-manager",[689,1306,867],{"class":863},[689,1308,1309,1312],{"class":691,"line":847},[689,1310,1311],{"class":728},"--add-repo ",[689,1313,885],{"class":863},[689,1315,1316],{"class":691,"line":854},[689,1317,1318],{"class":728},"http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo\n",[689,1320,1321],{"class":691,"line":860},[689,1322,851],{"emptyLinePlaceholder":850},[689,1324,1325],{"class":691,"line":870},[689,1326,851],{"emptyLinePlaceholder":850},[689,1328,1329],{"class":691,"line":888},[689,1330,1331],{"class":763},"#安装指定版本\n",[689,1333,1334,1336,1338,1340,1342,1345,1348],{"class":691,"line":916},[689,1335,770],{"class":735},[689,1337,1267],{"class":706},[689,1339,785],{"class":706},[689,1341,1285],{"class":801},[689,1343,1344],{"class":706}," docker-ce-20.10.7",[689,1346,1347],{"class":706}," docker-ce-cli-20.10.7",[689,1349,1350],{"class":706}," containerd.io-1.4.6\n",[689,1352,1353],{"class":691,"line":934},[689,1354,851],{"emptyLinePlaceholder":850},[689,1356,1357],{"class":691,"line":1200},[689,1358,1359],{"class":763},"#yum install -y docker-ce docker-ce-cli containerd.io \n",[689,1361,1362],{"class":691,"line":1206},[689,1363,851],{"emptyLinePlaceholder":850},[689,1365,1366],{"class":691,"line":1216},[689,1367,1368],{"class":763},"# 启动&开机启动docker\n",[689,1370,1371,1374,1377,1379],{"class":691,"line":1222},[689,1372,1373],{"class":735},"systemctl",[689,1375,1376],{"class":706}," enable",[689,1378,1077],{"class":706},[689,1380,1381],{"class":801}," --now\n",[689,1383,1384],{"class":691,"line":1234},[689,1385,851],{"emptyLinePlaceholder":850},[689,1387,1389],{"class":691,"line":1388},19,[689,1390,1391],{"class":763},"# docker加速配置\n",[689,1393,1395,1397,1400,1403],{"class":691,"line":1394},20,[689,1396,770],{"class":735},[689,1398,1399],{"class":706}," mkdir",[689,1401,1402],{"class":801}," -p",[689,1404,1405],{"class":706}," /etc/docker\n",[689,1407,1409,1411,1413,1416,1419],{"class":691,"line":1408},21,[689,1410,770],{"class":735},[689,1412,922],{"class":706},[689,1414,1415],{"class":706}," /etc/docker/daemon.json",[689,1417,1418],{"class":728}," \u003C\u003C-",[689,1420,1421],{"class":728},"'EOF'\n",[689,1423,1425],{"class":691,"line":1424},22,[689,1426,1136],{"class":706},[689,1428,1430],{"class":691,"line":1429},23,[689,1431,1432],{"class":706},"  \"registry-mirrors\": [\"https://5j8ttgd9.mirror.aliyuncs.com\"],\n",[689,1434,1436],{"class":691,"line":1435},24,[689,1437,1438],{"class":706},"  \"exec-opts\": [\"native.cgroupdriver=systemd\"],\n",[689,1440,1442],{"class":691,"line":1441},25,[689,1443,1444],{"class":706},"  \"log-driver\": \"json-file\",\n",[689,1446,1448],{"class":691,"line":1447},26,[689,1449,1450],{"class":706},"  \"log-opts\": {\n",[689,1452,1454],{"class":691,"line":1453},27,[689,1455,1456],{"class":706},"    \"max-size\": \"100m\"\n",[689,1458,1460],{"class":691,"line":1459},28,[689,1461,1462],{"class":706},"  },\n",[689,1464,1466],{"class":691,"line":1465},29,[689,1467,1468],{"class":706},"  \"storage-driver\": \"overlay2\"\n",[689,1470,1472],{"class":691,"line":1471},30,[689,1473,1167],{"class":706},[689,1475,1477],{"class":691,"line":1476},31,[689,1478,1479],{"class":728},"EOF\n",[689,1481,1483,1485,1487],{"class":691,"line":1482},32,[689,1484,770],{"class":735},[689,1486,1103],{"class":706},[689,1488,1183],{"class":706},[689,1490,1492,1494,1496,1498],{"class":691,"line":1491},33,[689,1493,770],{"class":735},[689,1495,1103],{"class":706},[689,1497,1194],{"class":706},[689,1499,1197],{"class":706},[689,1501,1503],{"class":691,"line":1502},34,[689,1504,851],{"emptyLinePlaceholder":850},[689,1506,1508],{"class":691,"line":1507},35,[689,1509,1510],{"class":763},"# 修改docker Cgroup Driver为systemd 上面配置已经修改\n",[689,1512,1514],{"class":691,"line":1513},36,[689,1515,1516],{"class":763},"#sed -i.bak \"s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g\" /usr/lib/systemd/system/docker.service\n",[661,1518,1520,1521,1525],{"id":1519},"_13-debian-中安装","1.3 ",[666,1522,94],{"href":1523,"rel":1524},"https://docs.docker.com/engine/install/debian/",[670],"  中安装",[674,1527,1528],{},"移除旧软件",[678,1530,1532],{"className":680,"code":1531,"language":683,"meta":684,"style":684},"for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done\n",[686,1533,1534],{"__ignoreMap":684},[689,1535,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568],{"class":691,"line":692},[689,1537,696],{"class":695},[689,1539,700],{"class":699},[689,1541,703],{"class":695},[689,1543,707],{"class":706},[689,1545,710],{"class":706},[689,1547,713],{"class":706},[689,1549,719],{"class":706},[689,1551,722],{"class":706},[689,1553,725],{"class":706},[689,1555,729],{"class":728},[689,1557,732],{"class":695},[689,1559,736],{"class":735},[689,1561,739],{"class":706},[689,1563,742],{"class":706},[689,1565,745],{"class":699},[689,1567,729],{"class":728},[689,1569,750],{"class":695},[674,1571,1572],{},"设置软件源",[678,1574,1576],{"className":680,"code":1575,"filename":682,"language":683,"meta":684,"style":684},"# Add Docker's official GPG key:\nsudo apt-get update\nsudo apt-get install ca-certificates curl gnupg\nsudo install -m 0755 -d /etc/apt/keyrings\ncurl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\n\n# Add the repository to Apt sources:\necho \\\n  \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \\\n  \"$(. /etc/os-release && echo \"$VERSION_CODENAME\")\" stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\nsudo apt-get update\n",[686,1577,1578,1582,1590,1605,1619,1643,1653,1657,1661,1667,1687,1720,1732],{"__ignoreMap":684},[689,1579,1580],{"class":691,"line":692},[689,1581,764],{"class":763},[689,1583,1584,1586,1588],{"class":691,"line":767},[689,1585,770],{"class":735},[689,1587,739],{"class":706},[689,1589,775],{"class":706},[689,1591,1592,1594,1596,1598,1600,1602],{"class":691,"line":778},[689,1593,770],{"class":735},[689,1595,739],{"class":706},[689,1597,785],{"class":706},[689,1599,788],{"class":706},[689,1601,819],{"class":706},[689,1603,1604],{"class":706}," gnupg\n",[689,1606,1607,1609,1611,1613,1615,1617],{"class":691,"line":794},[689,1608,770],{"class":735},[689,1610,785],{"class":706},[689,1612,802],{"class":801},[689,1614,805],{"class":801},[689,1616,808],{"class":801},[689,1618,811],{"class":706},[689,1620,1621,1624,1626,1628,1630,1632,1635,1638,1640],{"class":691,"line":814},[689,1622,1623],{"class":735},"curl",[689,1625,822],{"class":801},[689,1627,825],{"class":706},[689,1629,911],{"class":728},[689,1631,770],{"class":735},[689,1633,1634],{"class":706}," gpg",[689,1636,1637],{"class":801}," --dearmor",[689,1639,828],{"class":801},[689,1641,1642],{"class":706}," /etc/apt/keyrings/docker.gpg\n",[689,1644,1645,1647,1649,1651],{"class":691,"line":834},[689,1646,770],{"class":735},[689,1648,839],{"class":706},[689,1650,842],{"class":706},[689,1652,1642],{"class":706},[689,1654,1655],{"class":691,"line":847},[689,1656,851],{"emptyLinePlaceholder":850},[689,1658,1659],{"class":691,"line":854},[689,1660,857],{"class":763},[689,1662,1663,1665],{"class":691,"line":860},[689,1664,864],{"class":863},[689,1666,867],{"class":863},[689,1668,1669,1672,1675,1677,1679,1682,1685],{"class":691,"line":870},[689,1670,1671],{"class":706},"  \"deb [arch=\"",[689,1673,1674],{"class":728},"$(",[689,1676,876],{"class":735},[689,1678,879],{"class":801},[689,1680,1681],{"class":728},")",[689,1683,1684],{"class":706},"\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian ",[689,1686,885],{"class":863},[689,1688,1689,1692,1694,1696,1699,1702,1704,1706,1708,1711,1713,1716,1718],{"class":691,"line":888},[689,1690,1691],{"class":706},"  \"",[689,1693,1674],{"class":728},[689,1695,894],{"class":863},[689,1697,1698],{"class":706}," /etc/os-release",[689,1700,1701],{"class":728}," && ",[689,1703,864],{"class":863},[689,1705,902],{"class":706},[689,1707,905],{"class":699},[689,1709,1710],{"class":706},"\"",[689,1712,1681],{"class":728},[689,1714,1715],{"class":706},"\" stable\"",[689,1717,911],{"class":728},[689,1719,885],{"class":863},[689,1721,1722,1724,1726,1728,1730],{"class":691,"line":916},[689,1723,919],{"class":735},[689,1725,922],{"class":706},[689,1727,925],{"class":706},[689,1729,928],{"class":728},[689,1731,931],{"class":706},[689,1733,1734,1736,1738],{"class":691,"line":934},[689,1735,770],{"class":735},[689,1737,739],{"class":706},[689,1739,775],{"class":706},[674,1741,1742],{},"安装docker",[678,1744,1746],{"className":680,"code":1745,"filename":682,"language":683,"meta":684,"style":684},"sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n",[686,1747,1748],{"__ignoreMap":684},[689,1749,1750,1752,1754,1756,1758,1760,1762,1764],{"class":691,"line":692},[689,1751,770],{"class":735},[689,1753,739],{"class":706},[689,1755,785],{"class":706},[689,1757,964],{"class":706},[689,1759,967],{"class":706},[689,1761,970],{"class":706},[689,1763,973],{"class":706},[689,1765,976],{"class":706},[674,1767,1086],{},[678,1769,1771],{"className":680,"code":1770,"filename":682,"language":683,"meta":684,"style":684},"# 查看当前是否有镜像源配置,如果有输出把服务文件中的--registry-mirror删掉\n$ systemctl cat docker | grep '\\-\\-registry\\-mirror'\n\n# 编辑docker配置文件加入一下内容\nsudo tee /etc/docker/daemon.json \u003C\u003C-'EOF'\n{\n  \"registry-mirrors\": [\n    \"https://mirror.baidubce.com\"\n    ,\"https://ccr.ccs.tencentyun.com\"\n    ,\"https://5j8ttgd9.mirror.aliyuncs.com\"\n  ]\n}\nEOF\n\n# 重启服务\n$ sudo systemctl daemon-reload\n$ sudo systemctl restart docker\n\n# 查看docker信息\n$ docker info\n\n# 测试源镜像\ndocker pull mirror.baidubce.com/library/nginx:latest\ndocker pull ccr.ccs.tencentyun.com/library/nginx:latest\ndocker pull 5j8ttgd9.mirror.aliyuncs.com/library/nginx:latest\n",[686,1772,1773,1777,1793,1797,1801,1813,1817,1822,1826,1831,1836,1840,1844,1848,1852,1856,1866,1878,1882,1886,1894,1898,1902,1910,1918],{"__ignoreMap":684},[689,1774,1775],{"class":691,"line":692},[689,1776,1096],{"class":763},[689,1778,1779,1781,1783,1785,1787,1789,1791],{"class":691,"line":767},[689,1780,1072],{"class":735},[689,1782,1103],{"class":706},[689,1784,1106],{"class":706},[689,1786,1077],{"class":706},[689,1788,911],{"class":728},[689,1790,1113],{"class":735},[689,1792,1116],{"class":706},[689,1794,1795],{"class":691,"line":778},[689,1796,851],{"emptyLinePlaceholder":850},[689,1798,1799],{"class":691,"line":794},[689,1800,1121],{"class":763},[689,1802,1803,1805,1807,1809,1811],{"class":691,"line":814},[689,1804,770],{"class":735},[689,1806,922],{"class":706},[689,1808,1415],{"class":706},[689,1810,1418],{"class":728},[689,1812,1421],{"class":728},[689,1814,1815],{"class":691,"line":834},[689,1816,1136],{"class":706},[689,1818,1819],{"class":691,"line":847},[689,1820,1821],{"class":706},"  \"registry-mirrors\": [\n",[689,1823,1824],{"class":691,"line":854},[689,1825,1152],{"class":706},[689,1827,1828],{"class":691,"line":860},[689,1829,1830],{"class":706},"    ,\"https://ccr.ccs.tencentyun.com\"\n",[689,1832,1833],{"class":691,"line":870},[689,1834,1835],{"class":706},"    ,\"https://5j8ttgd9.mirror.aliyuncs.com\"\n",[689,1837,1838],{"class":691,"line":888},[689,1839,1162],{"class":706},[689,1841,1842],{"class":691,"line":916},[689,1843,1167],{"class":706},[689,1845,1846],{"class":691,"line":934},[689,1847,1479],{"class":728},[689,1849,1850],{"class":691,"line":1200},[689,1851,851],{"emptyLinePlaceholder":850},[689,1853,1854],{"class":691,"line":1206},[689,1855,1172],{"class":763},[689,1857,1858,1860,1862,1864],{"class":691,"line":1216},[689,1859,1072],{"class":735},[689,1861,736],{"class":706},[689,1863,1103],{"class":706},[689,1865,1183],{"class":706},[689,1867,1868,1870,1872,1874,1876],{"class":691,"line":1222},[689,1869,1072],{"class":735},[689,1871,736],{"class":706},[689,1873,1103],{"class":706},[689,1875,1194],{"class":706},[689,1877,1197],{"class":706},[689,1879,1880],{"class":691,"line":1234},[689,1881,851],{"emptyLinePlaceholder":850},[689,1883,1884],{"class":691,"line":1388},[689,1885,1203],{"class":763},[689,1887,1888,1890,1892],{"class":691,"line":1394},[689,1889,1072],{"class":735},[689,1891,1077],{"class":706},[689,1893,1213],{"class":706},[689,1895,1896],{"class":691,"line":1408},[689,1897,851],{"emptyLinePlaceholder":850},[689,1899,1900],{"class":691,"line":1424},[689,1901,1219],{"class":763},[689,1903,1904,1906,1908],{"class":691,"line":1429},[689,1905,1225],{"class":735},[689,1907,1228],{"class":706},[689,1909,1231],{"class":706},[689,1911,1912,1914,1916],{"class":691,"line":1435},[689,1913,1225],{"class":735},[689,1915,1228],{"class":706},[689,1917,1241],{"class":706},[689,1919,1920,1922,1924],{"class":691,"line":1441},[689,1921,1225],{"class":735},[689,1923,1228],{"class":706},[689,1925,1926],{"class":706}," 5j8ttgd9.mirror.aliyuncs.com/library/nginx:latest\n",[674,1928,1062],{},[678,1930,1931],{"className":680,"code":1065,"filename":682,"language":683,"meta":684,"style":684},[686,1932,1933],{"__ignoreMap":684},[689,1934,1935,1937,1939,1941,1943],{"class":691,"line":692},[689,1936,1072],{"class":735},[689,1938,736],{"class":706},[689,1940,1077],{"class":706},[689,1942,1080],{"class":706},[689,1944,1083],{"class":706},[674,1946,1947],{},"让其他用户访问docker",[678,1949,1951],{"className":680,"code":1950,"filename":682,"language":683,"meta":684,"style":684},"sudo usermod -aG docker tpxcer\nsudo reboot\n",[686,1952,1953,1968],{"__ignoreMap":684},[689,1954,1955,1957,1960,1963,1965],{"class":691,"line":692},[689,1956,770],{"class":735},[689,1958,1959],{"class":706}," usermod",[689,1961,1962],{"class":801}," -aG",[689,1964,1077],{"class":706},[689,1966,1967],{"class":706}," tpxcer\n",[689,1969,1970,1972],{"class":691,"line":767},[689,1971,770],{"class":735},[689,1973,1974],{"class":706}," reboot\n",[674,1976,1977],{},[1978,1979,1980],"strong",{},"卸载 Docker",[678,1982,1984],{"className":680,"code":1983,"filename":682,"language":683,"meta":684,"style":684},"sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras\nsudo rm -rf /var/lib/docker\nsudo rm -rf /var/lib/containerd\n",[686,1985,1986,2009,2022],{"__ignoreMap":684},[689,1987,1988,1990,1992,1995,1997,1999,2001,2003,2006],{"class":691,"line":692},[689,1989,770],{"class":735},[689,1991,739],{"class":706},[689,1993,1994],{"class":706}," purge",[689,1996,964],{"class":706},[689,1998,967],{"class":706},[689,2000,970],{"class":706},[689,2002,973],{"class":706},[689,2004,2005],{"class":706}," docker-compose-plugin",[689,2007,2008],{"class":706}," docker-ce-rootless-extras\n",[689,2010,2011,2013,2016,2019],{"class":691,"line":767},[689,2012,770],{"class":735},[689,2014,2015],{"class":706}," rm",[689,2017,2018],{"class":801}," -rf",[689,2020,2021],{"class":706}," /var/lib/docker\n",[689,2023,2024,2026,2028,2030],{"class":691,"line":778},[689,2025,770],{"class":735},[689,2027,2015],{"class":706},[689,2029,2018],{"class":801},[689,2031,2032],{"class":706}," /var/lib/containerd\n",[656,2034,2036],{"id":2035},"二镜像相关命令","二、镜像相关命令",[661,2038,2040],{"id":2039},"_21-获取镜像","2.1 获取镜像",[674,2042,2043,2048],{},[666,2044,2047],{"href":2045,"rel":2046},"https://hub.docker.com/explore/",[670],"Docker Hub"," 上有大量的高质量的镜像可以用。从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为：",[678,2050,2052],{"className":680,"code":2051,"filename":682,"language":683,"meta":684,"style":684},"docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]\n",[686,2053,2054],{"__ignoreMap":684},[689,2055,2056,2058,2060],{"class":691,"line":692},[689,2057,1225],{"class":735},[689,2059,1228],{"class":706},[689,2061,2062],{"class":728}," [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]\n",[2064,2065,2066,2074],"ul",{},[2067,2068,2069,2070,2073],"li",{},"Docker 镜像仓库地址：地址的格式一般是 ",[686,2071,2072],{},"\u003C域名/IP>[:端口号]","。默认地址是 Docker Hub。",[2067,2075,2076,2077,2080,2081,2084],{},"仓库名：如之前所说，这里的仓库名是两段式名称，即 ",[686,2078,2079],{},"\u003C用户名>/\u003C软件名>","。对于 Docker Hub，如果不给出用户名，则默认为 ",[686,2082,2083],{},"library","，也就是官方镜像。",[674,2086,2087],{},"示例：",[678,2089,2091],{"className":680,"code":2090,"filename":682,"language":683,"meta":684,"style":684},"docker pull ubuntu:18.04\ndocker pull nginx\n",[686,2092,2093,2102],{"__ignoreMap":684},[689,2094,2095,2097,2099],{"class":691,"line":692},[689,2096,1225],{"class":735},[689,2098,1228],{"class":706},[689,2100,2101],{"class":706}," ubuntu:18.04\n",[689,2103,2104,2106,2108],{"class":691,"line":767},[689,2105,1225],{"class":735},[689,2107,1228],{"class":706},[689,2109,2110],{"class":706}," nginx\n",[661,2112,2114],{"id":2113},"_22-列出镜像","2.2 列出镜像",[674,2116,2117],{},"列出已经下载下来的镜像",[678,2119,2121],{"className":680,"code":2120,"filename":682,"language":683,"meta":684,"style":684},"docker image ls\n",[686,2122,2123],{"__ignoreMap":684},[689,2124,2125,2127,2130],{"class":691,"line":692},[689,2126,1225],{"class":735},[689,2128,2129],{"class":706}," image",[689,2131,2132],{"class":706}," ls\n",[674,2134,2135,2136],{},"查看镜像、容器、数据卷所占用的空间 ",[686,2137,2138],{},"docker system df",[674,2140,2141,2142],{},"列出特定的某个镜像 ",[686,2143,2144],{},"docker image ls ubuntu:18.04",[674,2146,2147,2148,2151],{},"看到在 ",[686,2149,2150],{},"mongo:3.2"," 之后建立的镜像 docker image ls -f since=mongo:3.2",[674,2153,2154,2155,2158,2159,2162],{},"想查看某个位置之前的镜像也可以，只需要把 ",[686,2156,2157],{},"since"," 换成 ",[686,2160,2161],{},"before"," 即可。",[674,2164,2165,2166,2169],{},"此外，如果镜像构建时，定义了 ",[686,2167,2168],{},"LABEL","，还可以通过 LABEL 来过滤。",[678,2171,2176],{"className":2172,"code":2174,"language":2175},[2173],"language-text","$ docker image ls -f label=com.example.version=0.1\n","text",[686,2177,2174],{"__ignoreMap":684},[674,2179,2180],{},"直接列出镜像结果，并且只包含镜像ID和仓库名",[678,2182,2185],{"className":2183,"code":2184,"language":2175},[2173],"$ docker image ls --format \"{{.ID}}: {{.Repository}}\"\n",[686,2186,2184],{"__ignoreMap":684},[674,2188,2189],{},"查看容器的存储层变动",[678,2191,2194],{"className":2192,"code":2193,"language":2175},[2173],"docker diff\n",[686,2195,2193],{"__ignoreMap":684},[674,2197,2198],{},"查看镜像内的历史记录",[678,2200,2203],{"className":2201,"code":2202,"language":2175},[2173],"docker history nginx:v2\n",[686,2204,2202],{"__ignoreMap":684},[661,2206,2208],{"id":2207},"_23-删除镜像","2.3 删除镜像",[678,2210,2212],{"className":680,"code":2211,"filename":682,"language":683,"meta":684,"style":684},"# 语法\ndocker image rm [选项] \u003C镜像1> [\u003C镜像2> ...]\n# 删除虚悬镜像\ndocker image prune\ndocker image prune --force --all\n# 删除所有镜像\ndocker image rm $(docker image ls --format \"{{.ID}}\")\n# 删除所有仓库名为 redis 的镜像\ndocker image rm $(docker image ls -q redis)\n# 或者删除所有在 mongo:3.2 之前的镜像\ndocker image rm $(docker image ls -q -f before=mongo:3.2)\n",[686,2213,2214,2219,2242,2247,2256,2271,2276,2303,2308,2332,2337],{"__ignoreMap":684},[689,2215,2216],{"class":691,"line":692},[689,2217,2218],{"class":763},"# 语法\n",[689,2220,2221,2223,2225,2227,2230,2233,2236,2239],{"class":691,"line":767},[689,2222,1225],{"class":735},[689,2224,2129],{"class":706},[689,2226,2015],{"class":706},[689,2228,2229],{"class":728}," [选项] \u003C镜像1> [",[689,2231,2232],{"class":1031},"\u003C",[689,2234,2235],{"class":728},"镜像2",[689,2237,2238],{"class":1031},">",[689,2240,2241],{"class":728}," ...]\n",[689,2243,2244],{"class":691,"line":778},[689,2245,2246],{"class":763},"# 删除虚悬镜像\n",[689,2248,2249,2251,2253],{"class":691,"line":794},[689,2250,1225],{"class":735},[689,2252,2129],{"class":706},[689,2254,2255],{"class":706}," prune\n",[689,2257,2258,2260,2262,2265,2268],{"class":691,"line":814},[689,2259,1225],{"class":735},[689,2261,2129],{"class":706},[689,2263,2264],{"class":706}," prune",[689,2266,2267],{"class":801}," --force",[689,2269,2270],{"class":801}," --all\n",[689,2272,2273],{"class":691,"line":834},[689,2274,2275],{"class":763},"# 删除所有镜像\n",[689,2277,2278,2280,2282,2284,2287,2289,2291,2294,2297,2300],{"class":691,"line":847},[689,2279,1225],{"class":735},[689,2281,2129],{"class":706},[689,2283,2015],{"class":706},[689,2285,2286],{"class":728}," $(",[689,2288,1225],{"class":735},[689,2290,2129],{"class":706},[689,2292,2293],{"class":706}," ls",[689,2295,2296],{"class":801}," --format",[689,2298,2299],{"class":706}," \"{{.ID}}\"",[689,2301,2302],{"class":728},")\n",[689,2304,2305],{"class":691,"line":854},[689,2306,2307],{"class":763},"# 删除所有仓库名为 redis 的镜像\n",[689,2309,2310,2312,2314,2316,2318,2320,2322,2324,2327,2330],{"class":691,"line":860},[689,2311,1225],{"class":735},[689,2313,2129],{"class":706},[689,2315,2015],{"class":706},[689,2317,2286],{"class":728},[689,2319,1225],{"class":735},[689,2321,2129],{"class":706},[689,2323,2293],{"class":706},[689,2325,2326],{"class":801}," -q",[689,2328,2329],{"class":706}," redis",[689,2331,2302],{"class":728},[689,2333,2334],{"class":691,"line":870},[689,2335,2336],{"class":763},"# 或者删除所有在 mongo:3.2 之前的镜像\n",[689,2338,2339,2341,2343,2345,2347,2349,2351,2353,2355,2358,2361],{"class":691,"line":888},[689,2340,1225],{"class":735},[689,2342,2129],{"class":706},[689,2344,2015],{"class":706},[689,2346,2286],{"class":728},[689,2348,1225],{"class":735},[689,2350,2129],{"class":706},[689,2352,2293],{"class":706},[689,2354,2326],{"class":801},[689,2356,2357],{"class":801}," -f",[689,2359,2360],{"class":706}," before=mongo:3.2",[689,2362,2302],{"class":728},[661,2364,2366],{"id":2365},"_24-创建镜像","2.4 创建镜像",[674,2368,2369],{},"例子1",[678,2371,2373],{"className":680,"code":2372,"filename":682,"language":683,"meta":684,"style":684},"# docker文件\nvim nginx-Dockerfile\nFROM nginx\nRUN echo '\u003Ch1>Hello, Docker!\u003C/h1>' > /usr/share/nginx/html/index.html\n# 制作镜像\n# 注意，最后一个点是 docker 的打包目录， docker 将该目录下所有的文件都打包进镜像。\ndocker build -t nginx:v3 -f nginx-Dockerfile .\n",[686,2374,2375,2380,2388,2395,2411,2416,2421],{"__ignoreMap":684},[689,2376,2377],{"class":691,"line":692},[689,2378,2379],{"class":763},"# docker文件\n",[689,2381,2382,2385],{"class":691,"line":767},[689,2383,2384],{"class":735},"vim",[689,2386,2387],{"class":706}," nginx-Dockerfile\n",[689,2389,2390,2393],{"class":691,"line":778},[689,2391,2392],{"class":735},"FROM",[689,2394,2110],{"class":706},[689,2396,2397,2400,2403,2406,2408],{"class":691,"line":794},[689,2398,2399],{"class":735},"RUN",[689,2401,2402],{"class":706}," echo",[689,2404,2405],{"class":706}," '\u003Ch1>Hello, Docker!\u003C/h1>'",[689,2407,928],{"class":728},[689,2409,2410],{"class":706},"/usr/share/nginx/html/index.html\n",[689,2412,2413],{"class":691,"line":814},[689,2414,2415],{"class":763},"# 制作镜像\n",[689,2417,2418],{"class":691,"line":834},[689,2419,2420],{"class":763},"# 注意，最后一个点是 docker 的打包目录， docker 将该目录下所有的文件都打包进镜像。\n",[689,2422,2423,2425,2428,2431,2434,2436,2439],{"class":691,"line":847},[689,2424,1225],{"class":735},[689,2426,2427],{"class":706}," build",[689,2429,2430],{"class":801}," -t",[689,2432,2433],{"class":706}," nginx:v3",[689,2435,2357],{"class":801},[689,2437,2438],{"class":706}," nginx-Dockerfile",[689,2440,2441],{"class":706}," .\n",[674,2443,2444],{},"例子2",[678,2446,2448],{"className":680,"code":2447,"filename":682,"language":683,"meta":684,"style":684},"# 镜像文件\nMAC-➜  ckad git:(master) vim dockerfile/Dockerfile\nFROM centos:7\nMAINTAINER Sander \u003Cmail@example.com>\n\n# Add repo file\nADD ./sander.repo /etc/yum.repos.d/\n\n# Install cool software\nRUN yum --assumeyes update && \\\nyum --assumeyes install bash nmap iproute && \\\nyum clean all\n\nENTRYPOINT [\"/usr/bin/nmap\"]\nCMD [\"-sn\", \"172.17.0.0/24\"]\n# 创建镜像\nMAC-➜  ckad git:(master) cd dockerfile\nMAC-➜  dockerfile git:(master) docker build -t nmap . --no-cache\n",[686,2449,2450,2455,2480,2487,2504,2508,2513,2524,2528,2533,2549,2571,2581,2585,2599,2615,2620,2640],{"__ignoreMap":684},[689,2451,2452],{"class":691,"line":692},[689,2453,2454],{"class":763},"# 镜像文件\n",[689,2456,2457,2460,2463,2466,2469,2472,2475,2477],{"class":691,"line":767},[689,2458,2459],{"class":735},"MAC-➜",[689,2461,2462],{"class":706},"  ckad",[689,2464,2465],{"class":706}," git:",[689,2467,2468],{"class":728},"(",[689,2470,2471],{"class":735},"master",[689,2473,2474],{"class":728},") ",[689,2476,2384],{"class":706},[689,2478,2479],{"class":706}," dockerfile/Dockerfile\n",[689,2481,2482,2484],{"class":691,"line":778},[689,2483,2392],{"class":735},[689,2485,2486],{"class":706}," centos:7\n",[689,2488,2489,2492,2495,2498,2501],{"class":691,"line":794},[689,2490,2491],{"class":735},"MAINTAINER",[689,2493,2494],{"class":706}," Sander",[689,2496,2497],{"class":728}," \u003C",[689,2499,2500],{"class":706},"mail@example.co",[689,2502,2503],{"class":728},"m>\n",[689,2505,2506],{"class":691,"line":814},[689,2507,851],{"emptyLinePlaceholder":850},[689,2509,2510],{"class":691,"line":834},[689,2511,2512],{"class":763},"# Add repo file\n",[689,2514,2515,2518,2521],{"class":691,"line":847},[689,2516,2517],{"class":735},"ADD",[689,2519,2520],{"class":706}," ./sander.repo",[689,2522,2523],{"class":706}," /etc/yum.repos.d/\n",[689,2525,2526],{"class":691,"line":854},[689,2527,851],{"emptyLinePlaceholder":850},[689,2529,2530],{"class":691,"line":860},[689,2531,2532],{"class":763},"# Install cool software\n",[689,2534,2535,2537,2539,2542,2545,2547],{"class":691,"line":870},[689,2536,2399],{"class":735},[689,2538,1267],{"class":706},[689,2540,2541],{"class":801}," --assumeyes",[689,2543,2544],{"class":706}," update",[689,2546,1701],{"class":728},[689,2548,885],{"class":863},[689,2550,2551,2554,2556,2558,2561,2564,2567,2569],{"class":691,"line":888},[689,2552,2553],{"class":735},"yum",[689,2555,2541],{"class":801},[689,2557,785],{"class":706},[689,2559,2560],{"class":706}," bash",[689,2562,2563],{"class":706}," nmap",[689,2565,2566],{"class":706}," iproute",[689,2568,1701],{"class":728},[689,2570,885],{"class":863},[689,2572,2573,2575,2578],{"class":691,"line":916},[689,2574,2553],{"class":735},[689,2576,2577],{"class":706}," clean",[689,2579,2580],{"class":706}," all\n",[689,2582,2583],{"class":691,"line":934},[689,2584,851],{"emptyLinePlaceholder":850},[689,2586,2587,2590,2593,2596],{"class":691,"line":1200},[689,2588,2589],{"class":735},"ENTRYPOINT",[689,2591,2592],{"class":728}," [",[689,2594,2595],{"class":706},"\"/usr/bin/nmap\"",[689,2597,2598],{"class":728},"]\n",[689,2600,2601,2604,2606,2609,2612],{"class":691,"line":1206},[689,2602,2603],{"class":735},"CMD",[689,2605,2592],{"class":728},[689,2607,2608],{"class":706},"\"-sn\"",[689,2610,2611],{"class":728},", ",[689,2613,2614],{"class":706},"\"172.17.0.0/24\"]\n",[689,2616,2617],{"class":691,"line":1216},[689,2618,2619],{"class":763},"# 创建镜像\n",[689,2621,2622,2624,2626,2628,2630,2632,2634,2637],{"class":691,"line":1222},[689,2623,2459],{"class":735},[689,2625,2462],{"class":706},[689,2627,2465],{"class":706},[689,2629,2468],{"class":728},[689,2631,2471],{"class":735},[689,2633,2474],{"class":728},[689,2635,2636],{"class":706},"cd",[689,2638,2639],{"class":706}," dockerfile\n",[689,2641,2642,2644,2647,2649,2651,2653,2655,2657,2659,2661,2663,2666],{"class":691,"line":1234},[689,2643,2459],{"class":735},[689,2645,2646],{"class":706},"  dockerfile",[689,2648,2465],{"class":706},[689,2650,2468],{"class":728},[689,2652,2471],{"class":735},[689,2654,2474],{"class":728},[689,2656,1225],{"class":706},[689,2658,2427],{"class":706},[689,2660,2430],{"class":801},[689,2662,2563],{"class":706},[689,2664,2665],{"class":706}," .",[689,2667,2668],{"class":801}," --no-cache\n",[674,2670,2671],{},"例子3",[678,2673,2675],{"className":680,"code":2674,"filename":682,"language":683,"meta":684,"style":684},"# 配置文件\n[root@docker autoscaling]# cat Dockerfile\nFROM php:5-apache\nCOPY index.php /var/www/html/index.php\nRUN chmod a+rx index.php\n# 制作镜像\n[root@docker autoscaling]# docker build -t php-apache .\nSending build context to Docker daemon  4.608kB\nStep 1/3 : FROM php:5-apache\n5-apache: Pulling from library/php\nDigest: sha256:0a40fd273961b99d8afe69a61a68c73c04bc0caa9de384d3b2dd9e7986eec86d\nStatus: Downloaded newer image for php:5-apache\n ---> 24c791995c1e\nStep 2/3 : COPY index.php /var/www/html/index.php\n ---> 0bb1883baf4c\nStep 3/3 : RUN chmod a+rx index.php\n ---> Running in 40948bf4b920\nRemoving intermediate container 40948bf4b920\n ---> 2806066056d2\nSuccessfully built 2806066056d2\nSuccessfully tagged php-apache:latest\n",[686,2676,2677,2682,2687,2694,2705,2717,2721,2729,2751,2767,2781,2789,2807,2818,2834,2843,2861,2875,2888,2897,2908],{"__ignoreMap":684},[689,2678,2679],{"class":691,"line":692},[689,2680,2681],{"class":763},"# 配置文件\n",[689,2683,2684],{"class":691,"line":767},[689,2685,2686],{"class":728},"[root@docker autoscaling]# cat Dockerfile\n",[689,2688,2689,2691],{"class":691,"line":778},[689,2690,2392],{"class":735},[689,2692,2693],{"class":706}," php:5-apache\n",[689,2695,2696,2699,2702],{"class":691,"line":794},[689,2697,2698],{"class":735},"COPY",[689,2700,2701],{"class":706}," index.php",[689,2703,2704],{"class":706}," /var/www/html/index.php\n",[689,2706,2707,2709,2711,2714],{"class":691,"line":814},[689,2708,2399],{"class":735},[689,2710,839],{"class":706},[689,2712,2713],{"class":706}," a+rx",[689,2715,2716],{"class":706}," index.php\n",[689,2718,2719],{"class":691,"line":834},[689,2720,2415],{"class":763},[689,2722,2723,2726],{"class":691,"line":847},[689,2724,2725],{"class":728},"[root@docker autoscaling]# docker build -t php-apache ",[689,2727,2728],{"class":863},".\n",[689,2730,2731,2734,2736,2739,2742,2745,2748],{"class":691,"line":854},[689,2732,2733],{"class":735},"Sending",[689,2735,2427],{"class":706},[689,2737,2738],{"class":706}," context",[689,2740,2741],{"class":706}," to",[689,2743,2744],{"class":706}," Docker",[689,2746,2747],{"class":706}," daemon",[689,2749,2750],{"class":706},"  4.608kB\n",[689,2752,2753,2756,2759,2762,2765],{"class":691,"line":860},[689,2754,2755],{"class":735},"Step",[689,2757,2758],{"class":706}," 1/3",[689,2760,2761],{"class":706}," :",[689,2763,2764],{"class":706}," FROM",[689,2766,2693],{"class":706},[689,2768,2769,2772,2775,2778],{"class":691,"line":870},[689,2770,2771],{"class":735},"5-apache:",[689,2773,2774],{"class":706}," Pulling",[689,2776,2777],{"class":706}," from",[689,2779,2780],{"class":706}," library/php\n",[689,2782,2783,2786],{"class":691,"line":888},[689,2784,2785],{"class":735},"Digest:",[689,2787,2788],{"class":706}," sha256:0a40fd273961b99d8afe69a61a68c73c04bc0caa9de384d3b2dd9e7986eec86d\n",[689,2790,2791,2794,2797,2800,2802,2805],{"class":691,"line":916},[689,2792,2793],{"class":735},"Status:",[689,2795,2796],{"class":706}," Downloaded",[689,2798,2799],{"class":706}," newer",[689,2801,2129],{"class":706},[689,2803,2804],{"class":706}," for",[689,2806,2693],{"class":706},[689,2808,2809,2812,2815],{"class":691,"line":934},[689,2810,2811],{"class":735}," ---",[689,2813,2814],{"class":728},"> ",[689,2816,2817],{"class":706},"24c791995c1e\n",[689,2819,2820,2822,2825,2827,2830,2832],{"class":691,"line":1200},[689,2821,2755],{"class":735},[689,2823,2824],{"class":706}," 2/3",[689,2826,2761],{"class":706},[689,2828,2829],{"class":706}," COPY",[689,2831,2701],{"class":706},[689,2833,2704],{"class":706},[689,2835,2836,2838,2840],{"class":691,"line":1206},[689,2837,2811],{"class":735},[689,2839,2814],{"class":728},[689,2841,2842],{"class":706},"0bb1883baf4c\n",[689,2844,2845,2847,2850,2852,2855,2857,2859],{"class":691,"line":1216},[689,2846,2755],{"class":735},[689,2848,2849],{"class":706}," 3/3",[689,2851,2761],{"class":706},[689,2853,2854],{"class":706}," RUN",[689,2856,839],{"class":706},[689,2858,2713],{"class":706},[689,2860,2716],{"class":706},[689,2862,2863,2865,2867,2870,2872],{"class":691,"line":1222},[689,2864,2811],{"class":735},[689,2866,2814],{"class":728},[689,2868,2869],{"class":706},"Running",[689,2871,703],{"class":706},[689,2873,2874],{"class":706}," 40948bf4b920\n",[689,2876,2877,2880,2883,2886],{"class":691,"line":1234},[689,2878,2879],{"class":735},"Removing",[689,2881,2882],{"class":706}," intermediate",[689,2884,2885],{"class":706}," container",[689,2887,2874],{"class":706},[689,2889,2890,2892,2894],{"class":691,"line":1388},[689,2891,2811],{"class":735},[689,2893,2814],{"class":728},[689,2895,2896],{"class":706},"2806066056d2\n",[689,2898,2899,2902,2905],{"class":691,"line":1394},[689,2900,2901],{"class":735},"Successfully",[689,2903,2904],{"class":706}," built",[689,2906,2907],{"class":706}," 2806066056d2\n",[689,2909,2910,2912,2915],{"class":691,"line":1408},[689,2911,2901],{"class":735},[689,2913,2914],{"class":706}," tagged",[689,2916,2917],{"class":706}," php-apache:latest\n",[661,2919,2921],{"id":2920},"_25-使用comment创建镜像","2.5 使用comment创建镜像",[678,2923,2925],{"className":680,"code":2924,"filename":682,"language":683,"meta":684,"style":684},"# 创建一个文件\n[root@docker ~]# docker exec -it dice-server sh\nsh-4.4# echo hello > /tmp/hellofile\nsh-4.4# ls -l /tmp/hellofile \n-rw-r--r--. 1 root root 6 Oct 23 16:40 /tmp/hellofile\nsh-4.4# exit\nexit\n# 查看差异\n[root@docker ~]# docker diff  dice-server | grep -i hello\nA /tmp/hellofile\n# 提交更改\n[root@docker ~]# docker commit dice-server dice-server\nsha256:a2237f881e326aabaac9eb815ba988e21e1fa91481c392a7e896fe63f0c571f3\n# 查看镜像可以看到才创建了19秒\n[root@docker ~]# docker images\nREPOSITORY                        TAG          IMAGE ID       CREATED          SIZE\ndice-server                       latest       a2237f881e32   19 seconds ago   546MB\n# 把镜像保存成文件\n[root@docker ~]# docker save -o dice-server.tar dice-server\n[root@docker ~]# ll -h\n总用量 525M\n-rw-------. 1 root root 525M 10月 23 16:46 dice-server.tar\n",[686,2926,2927,2932,2937,2952,2967,2995,3002,3007,3012,3025,3032,3037,3042,3047,3052,3057,3077,3100,3105,3110,3115,3123],{"__ignoreMap":684},[689,2928,2929],{"class":691,"line":692},[689,2930,2931],{"class":763},"# 创建一个文件\n",[689,2933,2934],{"class":691,"line":767},[689,2935,2936],{"class":728},"[root@docker ~]# docker exec -it dice-server sh\n",[689,2938,2939,2942,2944,2947,2949],{"class":691,"line":778},[689,2940,2941],{"class":735},"sh-4.4#",[689,2943,2402],{"class":706},[689,2945,2946],{"class":706}," hello",[689,2948,928],{"class":728},[689,2950,2951],{"class":706},"/tmp/hellofile\n",[689,2953,2954,2956,2958,2961,2964],{"class":691,"line":794},[689,2955,2941],{"class":735},[689,2957,2293],{"class":706},[689,2959,2960],{"class":801}," -l",[689,2962,2963],{"class":706}," /tmp/hellofile",[689,2965,2966],{"class":728}," \n",[689,2968,2969,2972,2975,2978,2980,2983,2986,2989,2992],{"class":691,"line":814},[689,2970,2971],{"class":735},"-rw-r--r--.",[689,2973,2974],{"class":801}," 1",[689,2976,2977],{"class":706}," root",[689,2979,2977],{"class":706},[689,2981,2982],{"class":801}," 6",[689,2984,2985],{"class":706}," Oct",[689,2987,2988],{"class":801}," 23",[689,2990,2991],{"class":706}," 16:40",[689,2993,2994],{"class":706}," /tmp/hellofile\n",[689,2996,2997,2999],{"class":691,"line":834},[689,2998,2941],{"class":735},[689,3000,3001],{"class":706}," exit\n",[689,3003,3004],{"class":691,"line":847},[689,3005,3006],{"class":863},"exit\n",[689,3008,3009],{"class":691,"line":854},[689,3010,3011],{"class":763},"# 查看差异\n",[689,3013,3014,3017,3019,3022],{"class":691,"line":860},[689,3015,3016],{"class":728},"[root@docker ~]# docker diff  dice-server | ",[689,3018,1113],{"class":735},[689,3020,3021],{"class":801}," -i",[689,3023,3024],{"class":706}," hello\n",[689,3026,3027,3030],{"class":691,"line":870},[689,3028,3029],{"class":735},"A",[689,3031,2994],{"class":706},[689,3033,3034],{"class":691,"line":888},[689,3035,3036],{"class":763},"# 提交更改\n",[689,3038,3039],{"class":691,"line":916},[689,3040,3041],{"class":728},"[root@docker ~]# docker commit dice-server dice-server\n",[689,3043,3044],{"class":691,"line":934},[689,3045,3046],{"class":735},"sha256:a2237f881e326aabaac9eb815ba988e21e1fa91481c392a7e896fe63f0c571f3\n",[689,3048,3049],{"class":691,"line":1200},[689,3050,3051],{"class":763},"# 查看镜像可以看到才创建了19秒\n",[689,3053,3054],{"class":691,"line":1206},[689,3055,3056],{"class":728},"[root@docker ~]# docker images\n",[689,3058,3059,3062,3065,3068,3071,3074],{"class":691,"line":1216},[689,3060,3061],{"class":735},"REPOSITORY",[689,3063,3064],{"class":706},"                        TAG",[689,3066,3067],{"class":706},"          IMAGE",[689,3069,3070],{"class":706}," ID",[689,3072,3073],{"class":706},"       CREATED",[689,3075,3076],{"class":706},"          SIZE\n",[689,3078,3079,3082,3085,3088,3091,3094,3097],{"class":691,"line":1222},[689,3080,3081],{"class":735},"dice-server",[689,3083,3084],{"class":706},"                       latest",[689,3086,3087],{"class":706},"       a2237f881e32",[689,3089,3090],{"class":801},"   19",[689,3092,3093],{"class":706}," seconds",[689,3095,3096],{"class":706}," ago",[689,3098,3099],{"class":706},"   546MB\n",[689,3101,3102],{"class":691,"line":1234},[689,3103,3104],{"class":763},"# 把镜像保存成文件\n",[689,3106,3107],{"class":691,"line":1388},[689,3108,3109],{"class":728},"[root@docker ~]# docker save -o dice-server.tar dice-server\n",[689,3111,3112],{"class":691,"line":1394},[689,3113,3114],{"class":728},"[root@docker ~]# ll -h\n",[689,3116,3117,3120],{"class":691,"line":1408},[689,3118,3119],{"class":735},"总用量",[689,3121,3122],{"class":706}," 525M\n",[689,3124,3125,3128,3130,3132,3134,3137,3140,3142,3145],{"class":691,"line":1424},[689,3126,3127],{"class":735},"-rw-------.",[689,3129,2974],{"class":801},[689,3131,2977],{"class":706},[689,3133,2977],{"class":706},[689,3135,3136],{"class":706}," 525M",[689,3138,3139],{"class":706}," 10月",[689,3141,2988],{"class":801},[689,3143,3144],{"class":706}," 16:46",[689,3146,3147],{"class":706}," dice-server.tar\n",[661,3149,3151],{"id":3150},"_26-查看镜像变更历史","2.6 查看镜像变更历史",[678,3153,3155],{"className":680,"code":3154,"filename":682,"language":683,"meta":684,"style":684},"OMV-➜  ~ docker image history lscr.io/linuxserver/qbittorrent:latest\nIMAGE          CREATED      CREATED BY                                       SIZE      COMMENT\n80b60b9f5da8   8 days ago   VOLUME [/config]                                 0B        buildkit.dockerfile.v0\n\u003Cmissing>      8 days ago   EXPOSE map[6881/tcp:{} 6881/udp:{} 8080/tcp:…   0B        buildkit.dockerfile.v0\n\u003Cmissing>      8 days ago   COPY /usr/bin/unrar-alpine /usr/bin/unrar # …   552kB     buildkit.dockerfile.v0\n\u003Cmissing>      8 days ago   COPY root/ / # buildkit                          1.6kB     buildkit.dockerfile.v0\n\u003Cmissing>      8 days ago   RUN |4 BUILD_DATE=2023-10-15T06:52:25+00:00 …   177MB     buildkit.dockerfile.v0\n\u003Cmissing>      8 days ago   ENV HOME=/config XDG_CONFIG_HOME=/config XDG…   0B        buildkit.dockerfile.v0\n\u003Cmissing>      8 days ago   LABEL maintainer=thespad                         0B        buildkit.dockerfile.v0\n",[686,3156,3157,3175,3195,3214,3219,3237,3253,3271,3294],{"__ignoreMap":684},[689,3158,3159,3162,3165,3167,3169,3172],{"class":691,"line":692},[689,3160,3161],{"class":735},"OMV-➜",[689,3163,3164],{"class":706},"  ~",[689,3166,1077],{"class":706},[689,3168,2129],{"class":706},[689,3170,3171],{"class":706}," history",[689,3173,3174],{"class":706}," lscr.io/linuxserver/qbittorrent:latest\n",[689,3176,3177,3180,3183,3186,3189,3192],{"class":691,"line":767},[689,3178,3179],{"class":735},"IMAGE",[689,3181,3182],{"class":706},"          CREATED",[689,3184,3185],{"class":706},"      CREATED",[689,3187,3188],{"class":706}," BY",[689,3190,3191],{"class":706},"                                       SIZE",[689,3193,3194],{"class":706},"      COMMENT\n",[689,3196,3197,3200,3203,3206,3208,3211],{"class":691,"line":778},[689,3198,3199],{"class":735},"80b60b9f5da8",[689,3201,3202],{"class":801},"   8",[689,3204,3205],{"class":706}," days",[689,3207,3096],{"class":706},[689,3209,3210],{"class":706},"   VOLUME",[689,3212,3213],{"class":728}," [/config]                                 0B        buildkit.dockerfile.v0\n",[689,3215,3216],{"class":691,"line":794},[689,3217,3218],{"class":728},"\u003Cmissing>      8 days ago   EXPOSE map[6881/tcp:{} 6881/udp:{} 8080/tcp:…   0B        buildkit.dockerfile.v0\n",[689,3220,3221,3223,3226,3228,3231,3234],{"class":691,"line":814},[689,3222,2232],{"class":1031},[689,3224,3225],{"class":728},"missing",[689,3227,2238],{"class":1031},[689,3229,3230],{"class":801},"      8",[689,3232,3233],{"class":728}," days ago   COPY /usr/bin/unrar-alpine /usr/bin/unrar ",[689,3235,3236],{"class":763},"# …   552kB     buildkit.dockerfile.v0\n",[689,3238,3239,3241,3243,3245,3247,3250],{"class":691,"line":834},[689,3240,2232],{"class":1031},[689,3242,3225],{"class":728},[689,3244,2238],{"class":1031},[689,3246,3230],{"class":801},[689,3248,3249],{"class":728}," days ago   COPY root/ / ",[689,3251,3252],{"class":763},"# buildkit                          1.6kB     buildkit.dockerfile.v0\n",[689,3254,3255,3257,3259,3261,3263,3266,3268],{"class":691,"line":847},[689,3256,2232],{"class":1031},[689,3258,3225],{"class":728},[689,3260,2238],{"class":1031},[689,3262,3230],{"class":801},[689,3264,3265],{"class":728}," days ago   RUN |4 BUILD_DATE",[689,3267,1032],{"class":1031},[689,3269,3270],{"class":728},"2023-10-15T06:52:25+00:00 …   177MB     buildkit.dockerfile.v0\n",[689,3272,3273,3275,3277,3279,3281,3284,3286,3289,3291],{"class":691,"line":854},[689,3274,2232],{"class":1031},[689,3276,3225],{"class":728},[689,3278,2238],{"class":1031},[689,3280,3230],{"class":801},[689,3282,3283],{"class":728}," days ago   ENV HOME",[689,3285,1032],{"class":1031},[689,3287,3288],{"class":728},"/config XDG_CONFIG_HOME",[689,3290,1032],{"class":1031},[689,3292,3293],{"class":728},"/config XDG…   0B        buildkit.dockerfile.v0\n",[689,3295,3296,3298,3300,3302,3304,3307,3309],{"class":691,"line":860},[689,3297,2232],{"class":1031},[689,3299,3225],{"class":728},[689,3301,2238],{"class":1031},[689,3303,3230],{"class":801},[689,3305,3306],{"class":728}," days ago   LABEL maintainer",[689,3308,1032],{"class":1031},[689,3310,3311],{"class":728},"thespad                         0B        buildkit.dockerfile.v0\n",[661,3313,3315],{"id":3314},"_27-镜像传输镜像备份加载","2.7 镜像传输(镜像备份加载)",[678,3317,3319],{"className":680,"code":3318,"filename":682,"language":683,"meta":684,"style":684},"# 将镜像保存成压缩包\ndocker save -o abc.tar guignginx:v1.0\n\n# 别的机器加载这个镜像\ndocker load -i abc.tar\n",[686,3320,3321,3326,3341,3345,3350],{"__ignoreMap":684},[689,3322,3323],{"class":691,"line":692},[689,3324,3325],{"class":763},"# 将镜像保存成压缩包\n",[689,3327,3328,3330,3333,3335,3338],{"class":691,"line":767},[689,3329,1225],{"class":735},[689,3331,3332],{"class":706}," save",[689,3334,828],{"class":801},[689,3336,3337],{"class":706}," abc.tar",[689,3339,3340],{"class":706}," guignginx:v1.0\n",[689,3342,3343],{"class":691,"line":778},[689,3344,851],{"emptyLinePlaceholder":850},[689,3346,3347],{"class":691,"line":794},[689,3348,3349],{"class":763},"# 别的机器加载这个镜像\n",[689,3351,3352,3354,3357,3359],{"class":691,"line":814},[689,3353,1225],{"class":735},[689,3355,3356],{"class":706}," load",[689,3358,3021],{"class":801},[689,3360,3361],{"class":706}," abc.tar\n",[661,3363,3365],{"id":3364},"_28-推送远程仓库","2.8 推送远程仓库",[674,3367,3368],{},"推送镜像到docker hub；应用市场",[678,3370,3372],{"className":680,"code":3371,"filename":682,"language":683,"meta":684,"style":684},"docker tag local-image:tagname new-repo:tagname\ndocker push new-repo:tagname\n",[686,3373,3374,3387],{"__ignoreMap":684},[689,3375,3376,3378,3381,3384],{"class":691,"line":692},[689,3377,1225],{"class":735},[689,3379,3380],{"class":706}," tag",[689,3382,3383],{"class":706}," local-image:tagname",[689,3385,3386],{"class":706}," new-repo:tagname\n",[689,3388,3389,3391,3394],{"class":691,"line":767},[689,3390,1225],{"class":735},[689,3392,3393],{"class":706}," push",[689,3395,3386],{"class":706},[678,3397,3399],{"className":680,"code":3398,"filename":682,"language":683,"meta":684,"style":684},"# 把旧镜像的名字，改成仓库要求的新版名字\n[root@docker ~]# docker tag php-apache:latest tpxcer/php-apache:latest\n# 登录到docker hub\n[root@docker ~]# docker login    \n# 推送\n[root@docker ~]# docker push tpxcer/php-apache:latest\n# 推送完成镜像后退出\ndocker logout\n# 别的机器下载\ndocker pull leifengyang/guignginx:v1.0\n",[686,3400,3401,3406,3411,3416,3421,3426,3431,3436,3443,3448],{"__ignoreMap":684},[689,3402,3403],{"class":691,"line":692},[689,3404,3405],{"class":763},"# 把旧镜像的名字，改成仓库要求的新版名字\n",[689,3407,3408],{"class":691,"line":767},[689,3409,3410],{"class":728},"[root@docker ~]# docker tag php-apache:latest tpxcer/php-apache:latest\n",[689,3412,3413],{"class":691,"line":778},[689,3414,3415],{"class":763},"# 登录到docker hub\n",[689,3417,3418],{"class":691,"line":794},[689,3419,3420],{"class":728},"[root@docker ~]# docker login    \n",[689,3422,3423],{"class":691,"line":814},[689,3424,3425],{"class":763},"# 推送\n",[689,3427,3428],{"class":691,"line":834},[689,3429,3430],{"class":728},"[root@docker ~]# docker push tpxcer/php-apache:latest\n",[689,3432,3433],{"class":691,"line":847},[689,3434,3435],{"class":763},"# 推送完成镜像后退出\n",[689,3437,3438,3440],{"class":691,"line":854},[689,3439,1225],{"class":735},[689,3441,3442],{"class":706}," logout\n",[689,3444,3445],{"class":691,"line":860},[689,3446,3447],{"class":763},"# 别的机器下载\n",[689,3449,3450,3452,3454],{"class":691,"line":870},[689,3451,1225],{"class":735},[689,3453,1228],{"class":706},[689,3455,3456],{"class":706}," leifengyang/guignginx:v1.0\n",[661,3458,3460],{"id":3459},"_29-其他命令","2.9 其他命令",[678,3462,3464],{"className":680,"code":3463,"language":683,"meta":684,"style":684},"# 查看镜像支持的环境变量\ndocker run IMAGE env\n",[686,3465,3466,3471],{"__ignoreMap":684},[689,3467,3468],{"class":691,"line":692},[689,3469,3470],{"class":763},"# 查看镜像支持的环境变量\n",[689,3472,3473,3475,3477,3480],{"class":691,"line":767},[689,3474,1225],{"class":735},[689,3476,1080],{"class":706},[689,3478,3479],{"class":706}," IMAGE",[689,3481,3482],{"class":706}," env\n",[656,3484,3486],{"id":3485},"三容器相关命令","三、容器相关命令",[661,3488,3490],{"id":3489},"_3-1-启动容器例子","3.-1 启动容器例子",[678,3492,3494],{"className":680,"code":3493,"filename":682,"language":683,"meta":684,"style":684},"# 运行一个hello-world镜像的应用\n# docker run [options] image[:tag] [command] [arg...]\ndocker run hello-world\n\n# [command] 例子\ntpxcer@docker-dev:~$ sudo docker run busybox echo \"hello world!\"\n\n# 后台运行 -d\ndocker run -d nginx\n\n# 设定容器的名字 --name \n docker run -d nginx --name nginx\n \n# 设置重启策略\n# --restart\n# no：不重启\n# on-failure：如果容器出错（比如非零退出）重启\n# always：总是重启，docker服务器启动的时候也重启\n# unless-stopped：永远重启，除非被手动停止了\ndocker run -d --name nginx --restart no nginx\n\n# 端口映射\n# -p\u003Chost port>:\u003Ccontainer port>\ndocker run -d --name nginx --restart unless-stopped -p 8080:80 nginx\n\n# 退出自动删除容器 不可与--restart共用\n# --rm \ndocker run -d --name nginx --rm -p 8080:80 nginx\n\n# 内存限制\n# --memory\ndocker run -d --name nginx --rm --memory 500M -p 8080:80 nginx\n\n# 内存限制\n# --memory\ndocker run -d --name nginx --rm --memory 500M -p 8080:80 nginx\n\n# 设置内存保留\n# 内存保留是指为容器分配的最小内存量，即使系统内存紧张时，也会为容器保留该内存。\n# --memory-reservation \ndocker run -d --name nginx --rm --memory 500M --memory-reservation 256M -p 8080:80 nginx\n",[686,3495,3496,3501,3506,3514,3518,3523,3542,3546,3551,3561,3565,3570,3586,3590,3595,3600,3605,3610,3615,3620,3640,3644,3649,3654,3678,3682,3687,3692,3713,3717,3722,3727,3753,3757,3761,3765,3789,3794,3800,3806,3812],{"__ignoreMap":684},[689,3497,3498],{"class":691,"line":692},[689,3499,3500],{"class":763},"# 运行一个hello-world镜像的应用\n",[689,3502,3503],{"class":691,"line":767},[689,3504,3505],{"class":763},"# docker run [options] image[:tag] [command] [arg...]\n",[689,3507,3508,3510,3512],{"class":691,"line":778},[689,3509,1225],{"class":735},[689,3511,1080],{"class":706},[689,3513,1083],{"class":706},[689,3515,3516],{"class":691,"line":794},[689,3517,851],{"emptyLinePlaceholder":850},[689,3519,3520],{"class":691,"line":814},[689,3521,3522],{"class":763},"# [command] 例子\n",[689,3524,3525,3528,3530,3532,3534,3537,3539],{"class":691,"line":834},[689,3526,3527],{"class":735},"tpxcer@docker-dev:~$",[689,3529,736],{"class":706},[689,3531,1077],{"class":706},[689,3533,1080],{"class":706},[689,3535,3536],{"class":706}," busybox",[689,3538,2402],{"class":706},[689,3540,3541],{"class":706}," \"hello world!\"\n",[689,3543,3544],{"class":691,"line":847},[689,3545,851],{"emptyLinePlaceholder":850},[689,3547,3548],{"class":691,"line":854},[689,3549,3550],{"class":763},"# 后台运行 -d\n",[689,3552,3553,3555,3557,3559],{"class":691,"line":860},[689,3554,1225],{"class":735},[689,3556,1080],{"class":706},[689,3558,808],{"class":801},[689,3560,2110],{"class":706},[689,3562,3563],{"class":691,"line":870},[689,3564,851],{"emptyLinePlaceholder":850},[689,3566,3567],{"class":691,"line":888},[689,3568,3569],{"class":763},"# 设定容器的名字 --name \n",[689,3571,3572,3574,3576,3578,3581,3584],{"class":691,"line":916},[689,3573,1077],{"class":735},[689,3575,1080],{"class":706},[689,3577,808],{"class":801},[689,3579,3580],{"class":706}," nginx",[689,3582,3583],{"class":801}," --name",[689,3585,2110],{"class":706},[689,3587,3588],{"class":691,"line":934},[689,3589,2966],{"class":728},[689,3591,3592],{"class":691,"line":1200},[689,3593,3594],{"class":763},"# 设置重启策略\n",[689,3596,3597],{"class":691,"line":1206},[689,3598,3599],{"class":763},"# --restart\n",[689,3601,3602],{"class":691,"line":1216},[689,3603,3604],{"class":763},"# no：不重启\n",[689,3606,3607],{"class":691,"line":1222},[689,3608,3609],{"class":763},"# on-failure：如果容器出错（比如非零退出）重启\n",[689,3611,3612],{"class":691,"line":1234},[689,3613,3614],{"class":763},"# always：总是重启，docker服务器启动的时候也重启\n",[689,3616,3617],{"class":691,"line":1388},[689,3618,3619],{"class":763},"# unless-stopped：永远重启，除非被手动停止了\n",[689,3621,3622,3624,3626,3628,3630,3632,3635,3638],{"class":691,"line":1394},[689,3623,1225],{"class":735},[689,3625,1080],{"class":706},[689,3627,808],{"class":801},[689,3629,3583],{"class":801},[689,3631,3580],{"class":706},[689,3633,3634],{"class":801}," --restart",[689,3636,3637],{"class":706}," no",[689,3639,2110],{"class":706},[689,3641,3642],{"class":691,"line":1408},[689,3643,851],{"emptyLinePlaceholder":850},[689,3645,3646],{"class":691,"line":1424},[689,3647,3648],{"class":763},"# 端口映射\n",[689,3650,3651],{"class":691,"line":1429},[689,3652,3653],{"class":763},"# -p\u003Chost port>:\u003Ccontainer port>\n",[689,3655,3656,3658,3660,3662,3664,3666,3668,3671,3673,3676],{"class":691,"line":1435},[689,3657,1225],{"class":735},[689,3659,1080],{"class":706},[689,3661,808],{"class":801},[689,3663,3583],{"class":801},[689,3665,3580],{"class":706},[689,3667,3634],{"class":801},[689,3669,3670],{"class":706}," unless-stopped",[689,3672,1402],{"class":801},[689,3674,3675],{"class":706}," 8080:80",[689,3677,2110],{"class":706},[689,3679,3680],{"class":691,"line":1441},[689,3681,851],{"emptyLinePlaceholder":850},[689,3683,3684],{"class":691,"line":1447},[689,3685,3686],{"class":763},"# 退出自动删除容器 不可与--restart共用\n",[689,3688,3689],{"class":691,"line":1453},[689,3690,3691],{"class":763},"# --rm \n",[689,3693,3694,3696,3698,3700,3702,3704,3707,3709,3711],{"class":691,"line":1459},[689,3695,1225],{"class":735},[689,3697,1080],{"class":706},[689,3699,808],{"class":801},[689,3701,3583],{"class":801},[689,3703,3580],{"class":706},[689,3705,3706],{"class":801}," --rm",[689,3708,1402],{"class":801},[689,3710,3675],{"class":706},[689,3712,2110],{"class":706},[689,3714,3715],{"class":691,"line":1465},[689,3716,851],{"emptyLinePlaceholder":850},[689,3718,3719],{"class":691,"line":1471},[689,3720,3721],{"class":763},"# 内存限制\n",[689,3723,3724],{"class":691,"line":1476},[689,3725,3726],{"class":763},"# --memory\n",[689,3728,3729,3731,3733,3735,3737,3739,3741,3744,3747,3749,3751],{"class":691,"line":1482},[689,3730,1225],{"class":735},[689,3732,1080],{"class":706},[689,3734,808],{"class":801},[689,3736,3583],{"class":801},[689,3738,3580],{"class":706},[689,3740,3706],{"class":801},[689,3742,3743],{"class":801}," --memory",[689,3745,3746],{"class":706}," 500M",[689,3748,1402],{"class":801},[689,3750,3675],{"class":706},[689,3752,2110],{"class":706},[689,3754,3755],{"class":691,"line":1491},[689,3756,851],{"emptyLinePlaceholder":850},[689,3758,3759],{"class":691,"line":1502},[689,3760,3721],{"class":763},[689,3762,3763],{"class":691,"line":1507},[689,3764,3726],{"class":763},[689,3766,3767,3769,3771,3773,3775,3777,3779,3781,3783,3785,3787],{"class":691,"line":1513},[689,3768,1225],{"class":735},[689,3770,1080],{"class":706},[689,3772,808],{"class":801},[689,3774,3583],{"class":801},[689,3776,3580],{"class":706},[689,3778,3706],{"class":801},[689,3780,3743],{"class":801},[689,3782,3746],{"class":706},[689,3784,1402],{"class":801},[689,3786,3675],{"class":706},[689,3788,2110],{"class":706},[689,3790,3792],{"class":691,"line":3791},37,[689,3793,851],{"emptyLinePlaceholder":850},[689,3795,3797],{"class":691,"line":3796},38,[689,3798,3799],{"class":763},"# 设置内存保留\n",[689,3801,3803],{"class":691,"line":3802},39,[689,3804,3805],{"class":763},"# 内存保留是指为容器分配的最小内存量，即使系统内存紧张时，也会为容器保留该内存。\n",[689,3807,3809],{"class":691,"line":3808},40,[689,3810,3811],{"class":763},"# --memory-reservation \n",[689,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3834,3837,3839,3841],{"class":691,"line":3814},41,[689,3816,1225],{"class":735},[689,3818,1080],{"class":706},[689,3820,808],{"class":801},[689,3822,3583],{"class":801},[689,3824,3580],{"class":706},[689,3826,3706],{"class":801},[689,3828,3743],{"class":801},[689,3830,3746],{"class":706},[689,3832,3833],{"class":801}," --memory-reservation",[689,3835,3836],{"class":706}," 256M",[689,3838,1402],{"class":801},[689,3840,3675],{"class":706},[689,3842,2110],{"class":706},[661,3844,3846],{"id":3845},"_30-创建容器","3.0 创建容器",[678,3848,3850],{"className":680,"code":3849,"filename":682,"language":683,"meta":684,"style":684},"[root@docker ~]# docker create -it --name=busybox busybox\nUnable to find image 'busybox:latest' locally\nlatest: Pulling from library/busybox\n5cc84ad355aa: Pull complete\nDigest: sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678\nStatus: Downloaded newer image for busybox:latest\n09d0c1ee52e1af38d8015fd0cf96cff1be12997b440879d367e3f2da0539816d\n\n[root@docker ~]# docker ps -a |grep busybox\n09d0c1ee52e1   busybox                     \"sh\"                     About a minute ago   Created\n",[686,3851,3852,3868,3886,3898,3909,3916,3931,3936,3940,3949],{"__ignoreMap":684},[689,3853,3854,3857,3860,3862,3865],{"class":691,"line":692},[689,3855,3856],{"class":728},"[root@docker ~]# docker create -it ",[689,3858,3859],{"class":699},"--name",[689,3861,1032],{"class":1031},[689,3863,3864],{"class":706},"busybox",[689,3866,3867],{"class":735}," busybox\n",[689,3869,3870,3873,3875,3878,3880,3883],{"class":691,"line":767},[689,3871,3872],{"class":735},"Unable",[689,3874,2741],{"class":706},[689,3876,3877],{"class":706}," find",[689,3879,2129],{"class":706},[689,3881,3882],{"class":706}," 'busybox:latest'",[689,3884,3885],{"class":706}," locally\n",[689,3887,3888,3891,3893,3895],{"class":691,"line":778},[689,3889,3890],{"class":735},"latest:",[689,3892,2774],{"class":706},[689,3894,2777],{"class":706},[689,3896,3897],{"class":706}," library/busybox\n",[689,3899,3900,3903,3906],{"class":691,"line":794},[689,3901,3902],{"class":735},"5cc84ad355aa:",[689,3904,3905],{"class":706}," Pull",[689,3907,3908],{"class":706}," complete\n",[689,3910,3911,3913],{"class":691,"line":814},[689,3912,2785],{"class":735},[689,3914,3915],{"class":706}," sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678\n",[689,3917,3918,3920,3922,3924,3926,3928],{"class":691,"line":834},[689,3919,2793],{"class":735},[689,3921,2796],{"class":706},[689,3923,2799],{"class":706},[689,3925,2129],{"class":706},[689,3927,2804],{"class":706},[689,3929,3930],{"class":706}," busybox:latest\n",[689,3932,3933],{"class":691,"line":847},[689,3934,3935],{"class":735},"09d0c1ee52e1af38d8015fd0cf96cff1be12997b440879d367e3f2da0539816d\n",[689,3937,3938],{"class":691,"line":854},[689,3939,851],{"emptyLinePlaceholder":850},[689,3941,3942,3945,3947],{"class":691,"line":860},[689,3943,3944],{"class":728},"[root@docker ~]# docker ps -a |",[689,3946,1113],{"class":735},[689,3948,3867],{"class":706},[689,3950,3951,3954,3957,3960,3963,3966,3969,3971],{"class":691,"line":870},[689,3952,3953],{"class":735},"09d0c1ee52e1",[689,3955,3956],{"class":706},"   busybox",[689,3958,3959],{"class":706},"                     \"sh\"",[689,3961,3962],{"class":706},"                     About",[689,3964,3965],{"class":706}," a",[689,3967,3968],{"class":706}," minute",[689,3970,3096],{"class":706},[689,3972,3973],{"class":706},"   Created\n",[661,3975,3977],{"id":3976},"_31-启动容器","3.1 启动容器",[3979,3980,3982],"ol",{"start":3981},0,[2067,3983,3984],{},"启动创建好的容器",[678,3986,3988],{"className":680,"code":3987,"filename":682,"language":683,"meta":684,"style":684},"# 接上个步骤\n[root@docker ~]# docker start busybox\nbusybox\n[root@docker ~]# docker ps\nCONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS          PORTS                                                  NAMES\n09d0c1ee52e1   busybox                 \"sh\"                     3 minutes ago   Up 10 seconds                                                          busybox\n",[686,3989,3990,3995,4000,4005,4010,4035],{"__ignoreMap":684},[689,3991,3992],{"class":691,"line":692},[689,3993,3994],{"class":763},"# 接上个步骤\n",[689,3996,3997],{"class":691,"line":767},[689,3998,3999],{"class":728},"[root@docker ~]# docker start busybox\n",[689,4001,4002],{"class":691,"line":778},[689,4003,4004],{"class":735},"busybox\n",[689,4006,4007],{"class":691,"line":794},[689,4008,4009],{"class":728},"[root@docker ~]# docker ps\n",[689,4011,4012,4015,4017,4020,4023,4026,4029,4032],{"class":691,"line":814},[689,4013,4014],{"class":735},"CONTAINER",[689,4016,3070],{"class":706},[689,4018,4019],{"class":706},"   IMAGE",[689,4021,4022],{"class":706},"                   COMMAND",[689,4024,4025],{"class":706},"                  CREATED",[689,4027,4028],{"class":706},"         STATUS",[689,4030,4031],{"class":706},"          PORTS",[689,4033,4034],{"class":706},"                                                  NAMES\n",[689,4036,4037,4039,4041,4044,4047,4050,4052,4055,4058,4060],{"class":691,"line":834},[689,4038,3953],{"class":735},[689,4040,3956],{"class":706},[689,4042,4043],{"class":706},"                 \"sh\"",[689,4045,4046],{"class":801},"                     3",[689,4048,4049],{"class":706}," minutes",[689,4051,3096],{"class":706},[689,4053,4054],{"class":706},"   Up",[689,4056,4057],{"class":801}," 10",[689,4059,3093],{"class":706},[689,4061,4062],{"class":706},"                                                          busybox\n",[3979,4064,4065],{},[2067,4066,4067],{},"运行ubuntu容器",[674,4069,4070],{},"有了镜像后，我们就能够以这个镜像为基础启动并运行一个容器。以上面的 ubuntu:18.04 为例，如果我们打算启动里面的 bash 并且进行交互式操作的话，可以执行下面的命令。",[678,4072,4076],{"className":4073,"code":4074,"language":4075,"meta":684,"style":684},"language-Shell shiki shiki-themes one-light one-light one-dark-pro","$ docker run -it --rm \\\n    ubuntu:18.04 \\\n    bash\n","Shell",[686,4077,4078,4083,4088],{"__ignoreMap":684},[689,4079,4080],{"class":691,"line":692},[689,4081,4082],{},"$ docker run -it --rm \\\n",[689,4084,4085],{"class":691,"line":767},[689,4086,4087],{},"    ubuntu:18.04 \\\n",[689,4089,4090],{"class":691,"line":778},[689,4091,4092],{},"    bash\n",[674,4094,4095,4098],{},[686,4096,4097],{},"docker run"," 就是运行容器的命令，具体格式我们会在 容器 一节进行详细讲解，我们这里简要的说明一下上面用到的参数。",[2064,4100,4101,4115,4121,4130],{},[2067,4102,4103,4106,4107,4110,4111,4114],{},[686,4104,4105],{},"-it","：这是两个参数，一个是 ",[686,4108,4109],{},"-i","：交互式操作，一个是 ",[686,4112,4113],{},"-t"," 终端。我们这里打算进入 `bash`` 执行一些命令并查看返回结果，因此我们需要交互式终端。",[2067,4116,4117,4120],{},[686,4118,4119],{},"--rm","：这个参数是说容器退出后随之将其删除。",[2067,4122,4123,4126,4127,4129],{},[686,4124,4125],{},"ubuntu:18.04","：这是指用 ",[686,4128,4125],{}," 镜像为基础来启动容器。",[2067,4131,4132,4134,4135,4137],{},[686,4133,683],{},"：放在镜像名后的是 命令，这里我们希望有个交互式 Shell，因此用的是 ",[686,4136,683],{},"。",[3979,4139,4140],{"start":767},[2067,4141,4142],{},"启动nginx应用容器",[678,4144,4146],{"className":680,"code":4145,"filename":682,"language":683,"meta":684,"style":684},"# 启动nginx应用容器，并映射88端口，测试的访问\n# -d：后台运行\n# --restart=always: 开机自启\ndocker run --name=mynginx   -d  --restart=always -p  88:80   nginx\n",[686,4147,4148,4153,4158,4163],{"__ignoreMap":684},[689,4149,4150],{"class":691,"line":692},[689,4151,4152],{"class":763},"# 启动nginx应用容器，并映射88端口，测试的访问\n",[689,4154,4155],{"class":691,"line":767},[689,4156,4157],{"class":763},"# -d：后台运行\n",[689,4159,4160],{"class":691,"line":778},[689,4161,4162],{"class":763},"# --restart=always: 开机自启\n",[689,4164,4165,4167,4169,4172,4175,4178,4180,4183],{"class":691,"line":794},[689,4166,1225],{"class":735},[689,4168,1080],{"class":706},[689,4170,4171],{"class":801}," --name=mynginx",[689,4173,4174],{"class":801},"   -d",[689,4176,4177],{"class":801},"  --restart=always",[689,4179,1402],{"class":801},[689,4181,4182],{"class":706},"  88:80",[689,4184,4185],{"class":706},"   nginx\n",[661,4187,4189],{"id":4188},"_32-设置应用开机自启","3.2 设置应用开机自启",[678,4191,4193],{"className":680,"code":4192,"filename":682,"language":683,"meta":684,"style":684},"docker update 容器id/名字 --restart=always\n",[686,4194,4195],{"__ignoreMap":684},[689,4196,4197,4199,4201,4204],{"class":691,"line":692},[689,4198,1225],{"class":735},[689,4200,2544],{"class":706},[689,4202,4203],{"class":706}," 容器id/名字",[689,4205,4206],{"class":801}," --restart=always\n",[661,4208,4210],{"id":4209},"_33-挂载数据到外部修改","3.3 挂载数据到外部修改",[678,4212,4214],{"className":680,"code":4213,"filename":682,"language":683,"meta":684,"style":684},"docker run --name=mynginx   \\\n-d  --restart=always \\\n-p  88:80 -v /data/html:/usr/share/nginx/html:ro  \\\nnginx\n\n# 修改页面只需要去 主机的 /data/html\n",[686,4215,4216,4227,4237,4254,4259,4263],{"__ignoreMap":684},[689,4217,4218,4220,4222,4224],{"class":691,"line":692},[689,4219,1225],{"class":735},[689,4221,1080],{"class":706},[689,4223,4171],{"class":801},[689,4225,4226],{"class":863},"   \\\n",[689,4228,4229,4232,4235],{"class":691,"line":767},[689,4230,4231],{"class":728},"-d  ",[689,4233,4234],{"class":801},"--restart=always",[689,4236,867],{"class":863},[689,4238,4239,4242,4245,4248,4251],{"class":691,"line":778},[689,4240,4241],{"class":728},"-p  ",[689,4243,4244],{"class":706},"88:80",[689,4246,4247],{"class":801}," -v",[689,4249,4250],{"class":706}," /data/html:/usr/share/nginx/html:ro",[689,4252,4253],{"class":863},"  \\\n",[689,4255,4256],{"class":691,"line":794},[689,4257,4258],{"class":728},"nginx\n",[689,4260,4261],{"class":691,"line":814},[689,4262,851],{"emptyLinePlaceholder":850},[689,4264,4265],{"class":691,"line":834},[689,4266,4267],{"class":763},"# 修改页面只需要去 主机的 /data/html\n",[661,4269,4271],{"id":4270},"_34-查看容器","3.4 查看容器",[678,4273,4275],{"className":680,"code":4274,"filename":682,"language":683,"meta":684,"style":684},"# 查看正在运行的容器\ndocker ps\n# 查看所有容器\ndocker ps -a\n# 如何获取某个容器的 PID 信息\ndocker inspect --format '{{ .State.Pid }}' \u003CCONTAINER ID or NAME>\n何获取某个容器的 IP 地址\ndocker inspect --format '{{ .NetworkSettings.IPAddress }}' \u003CCONTAINER ID or NAME>\n# 列出所有容器ID\ndocker ps -aq\n",[686,4276,4277,4282,4289,4294,4304,4309,4336,4347,4370,4375],{"__ignoreMap":684},[689,4278,4279],{"class":691,"line":692},[689,4280,4281],{"class":763},"# 查看正在运行的容器\n",[689,4283,4284,4286],{"class":691,"line":767},[689,4285,1225],{"class":735},[689,4287,4288],{"class":706}," ps\n",[689,4290,4291],{"class":691,"line":778},[689,4292,4293],{"class":763},"# 查看所有容器\n",[689,4295,4296,4298,4301],{"class":691,"line":794},[689,4297,1225],{"class":735},[689,4299,4300],{"class":706}," ps",[689,4302,4303],{"class":801}," -a\n",[689,4305,4306],{"class":691,"line":814},[689,4307,4308],{"class":763},"# 如何获取某个容器的 PID 信息\n",[689,4310,4311,4313,4316,4318,4321,4323,4325,4327,4330,4333],{"class":691,"line":834},[689,4312,1225],{"class":735},[689,4314,4315],{"class":706}," inspect",[689,4317,2296],{"class":801},[689,4319,4320],{"class":706}," '{{ .State.Pid }}'",[689,4322,2497],{"class":728},[689,4324,4014],{"class":706},[689,4326,3070],{"class":706},[689,4328,4329],{"class":706}," or",[689,4331,4332],{"class":706}," NAM",[689,4334,4335],{"class":728},"E>\n",[689,4337,4338,4341,4344],{"class":691,"line":847},[689,4339,4340],{"class":735},"何获取某个容器的",[689,4342,4343],{"class":706}," IP",[689,4345,4346],{"class":706}," 地址\n",[689,4348,4349,4351,4353,4355,4358,4360,4362,4364,4366,4368],{"class":691,"line":854},[689,4350,1225],{"class":735},[689,4352,4315],{"class":706},[689,4354,2296],{"class":801},[689,4356,4357],{"class":706}," '{{ .NetworkSettings.IPAddress }}'",[689,4359,2497],{"class":728},[689,4361,4014],{"class":706},[689,4363,3070],{"class":706},[689,4365,4329],{"class":706},[689,4367,4332],{"class":706},[689,4369,4335],{"class":728},[689,4371,4372],{"class":691,"line":860},[689,4373,4374],{"class":763},"# 列出所有容器ID\n",[689,4376,4377,4379,4381],{"class":691,"line":870},[689,4378,1225],{"class":735},[689,4380,4300],{"class":706},[689,4382,4383],{"class":801}," -aq\n",[661,4385,4387],{"id":4386},"_35-交互方式访问运行中的容器","3.5 交互方式访问运行中的容器",[678,4389,4391],{"className":680,"code":4390,"filename":682,"language":683,"meta":684,"style":684},"docker exec -it CONTAINER  bash\n",[686,4392,4393],{"__ignoreMap":684},[689,4394,4395,4397,4400,4403,4406],{"class":691,"line":692},[689,4396,1225],{"class":735},[689,4398,4399],{"class":706}," exec",[689,4401,4402],{"class":801}," -it",[689,4404,4405],{"class":706}," CONTAINER",[689,4407,4408],{"class":706},"  bash\n",[661,4410,4412],{"id":4411},"_36-停止容器","3.6 停止容器",[678,4414,4417],{"className":4415,"code":4416,"language":2175},[2173],"docker stop 容器名\n# 停止所有正在运行的容器\ndocker stop $(docker container ls -q)\n",[686,4418,4416],{"__ignoreMap":684},[661,4420,4422],{"id":4421},"_37-删除容器","3.7 删除容器",[678,4424,4427],{"className":4425,"code":4426,"language":2175},[2173],"# 删除所有容器\ndocker rm $(docker ps -aq)\n\ndocker container rm 容器名\n# 批量清理已经停止的容器\ndocker container prune\ndocker container prune -f\n\n# 删除 exited 状态容器\ndocker rm $(docker ps --all -q -f status=exited)\n",[686,4428,4426],{"__ignoreMap":684},[661,4430,4432],{"id":4431},"_38-容器网络设定","3.8 容器网络设定",[678,4434,4437],{"className":4435,"code":4436,"language":2175},[2173],"# 给容器指定一个固定 IP 地址，而不是每次重启容器 IP 地址都会变\n$ docker network create -d bridge --subnet 172.25.0.0/16 docker-network\n$ docker run --network=docker-network --ip=172.25.3.3 -itd --name=my-container busybox\n# 临时退出一个正在交互的容器的终端，而不终止它\n按 Ctrl-p Ctrl-q。如果按 Ctrl-c 往往会让容器内应用进程终止，进而会终止容器。\n",[686,4438,4436],{"__ignoreMap":684},[661,4440,4442],{"id":4441},"_381-查看网络","3.8.1 查看网络",[678,4444,4446],{"className":680,"code":4445,"language":683,"meta":684,"style":684},"docker network ls\ndocker network inspect bridge\n",[686,4447,4448,4457],{"__ignoreMap":684},[689,4449,4450,4452,4455],{"class":691,"line":692},[689,4451,1225],{"class":735},[689,4453,4454],{"class":706}," network",[689,4456,2132],{"class":706},[689,4458,4459,4461,4463,4465],{"class":691,"line":767},[689,4460,1225],{"class":735},[689,4462,4454],{"class":706},[689,4464,4315],{"class":706},[689,4466,4467],{"class":706}," bridge\n",[661,4469,4471],{"id":4470},"_39-删除网络","3.9 删除网络",[678,4473,4475],{"className":680,"code":4474,"filename":682,"language":683,"meta":684,"style":684},"docker network ls\ndocker network rm my_network\n",[686,4476,4477,4485],{"__ignoreMap":684},[689,4478,4479,4481,4483],{"class":691,"line":692},[689,4480,1225],{"class":735},[689,4482,4454],{"class":706},[689,4484,2132],{"class":706},[689,4486,4487,4489,4491,4493],{"class":691,"line":767},[689,4488,1225],{"class":735},[689,4490,4454],{"class":706},[689,4492,2015],{"class":706},[689,4494,4495],{"class":706}," my_network\n",[661,4497,4499],{"id":4498},"_310-查看容器日志","3.10 查看容器日志",[678,4501,4503],{"className":680,"code":4502,"filename":682,"language":683,"meta":684,"style":684},"docker logs 容器名/id \n",[686,4504,4505],{"__ignoreMap":684},[689,4506,4507,4509,4512],{"class":691,"line":692},[689,4508,1225],{"class":735},[689,4510,4511],{"class":706}," logs",[689,4513,4514],{"class":706}," 容器名/id\n",[661,4516,4518],{"id":4517},"_311-把容器指定位置的东西复制","3.11 把容器指定位置的东西复制",[678,4520,4522],{"className":680,"code":4521,"filename":682,"language":683,"meta":684,"style":684},"#把容器指定位置的东西复制出来 \ndocker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf\n#把外面的内容复制到容器里面\ndocker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf\n",[686,4523,4524,4529,4542,4547],{"__ignoreMap":684},[689,4525,4526],{"class":691,"line":692},[689,4527,4528],{"class":763},"#把容器指定位置的东西复制出来 \n",[689,4530,4531,4533,4536,4539],{"class":691,"line":767},[689,4532,1225],{"class":735},[689,4534,4535],{"class":706}," cp",[689,4537,4538],{"class":706}," 5eff66eec7e1:/etc/nginx/nginx.conf",[689,4540,4541],{"class":706},"  /data/conf/nginx.conf\n",[689,4543,4544],{"class":691,"line":778},[689,4545,4546],{"class":763},"#把外面的内容复制到容器里面\n",[689,4548,4549,4551,4553,4556],{"class":691,"line":794},[689,4550,1225],{"class":735},[689,4552,4535],{"class":706},[689,4554,4555],{"class":706},"  /data/conf/nginx.conf",[689,4557,4558],{"class":706},"  5eff66eec7e1:/etc/nginx/nginx.conf\n",[661,4560,4562],{"id":4561},"_312-重启容器","3.12 重启容器",[678,4564,4566],{"className":680,"code":4565,"filename":682,"language":683,"meta":684,"style":684},"docker restart 容器名\n",[686,4567,4568],{"__ignoreMap":684},[689,4569,4570,4572,4574],{"class":691,"line":692},[689,4571,1225],{"class":735},[689,4573,1194],{"class":706},[689,4575,4576],{"class":706}," 容器名\n",[661,4578,4580],{"id":4579},"_313-迁移容器","3.13 迁移容器",[678,4582,4584],{"className":680,"code":4583,"filename":682,"language":683,"meta":684,"style":684},"# 执行导出命令\ndocker export busybox > busybox.tar\n\n# 导入容器命令格式\ndocker import [OPTIONS] file | URL [REPOSITORY[:TAG]]\n",[686,4585,4586,4591,4605,4609,4614],{"__ignoreMap":684},[689,4587,4588],{"class":691,"line":692},[689,4589,4590],{"class":763},"# 执行导出命令\n",[689,4592,4593,4595,4598,4600,4602],{"class":691,"line":767},[689,4594,1225],{"class":735},[689,4596,4597],{"class":706}," export",[689,4599,3536],{"class":706},[689,4601,928],{"class":728},[689,4603,4604],{"class":706},"busybox.tar\n",[689,4606,4607],{"class":691,"line":778},[689,4608,851],{"emptyLinePlaceholder":850},[689,4610,4611],{"class":691,"line":794},[689,4612,4613],{"class":763},"# 导入容器命令格式\n",[689,4615,4616,4618,4621,4624,4627],{"class":691,"line":814},[689,4617,1225],{"class":735},[689,4619,4620],{"class":706}," import",[689,4622,4623],{"class":728}," [OPTIONS] file | ",[689,4625,4626],{"class":735},"URL",[689,4628,4629],{"class":728}," [REPOSITORY[:TAG]]\n",[661,4631,4633],{"id":4632},"_313-查看容器资源使用情况","3.13 查看容器资源使用情况",[678,4635,4637],{"className":680,"code":4636,"filename":682,"language":683,"meta":684,"style":684},"docker stats qbittorrent\nCONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O       PIDS\n42fd2ad56ff6   qbittorrent   15.73%    7.731GiB / 15.63GiB   49.46%    22.3GB / 261GB   636MB / 536MB   26\n",[686,4638,4639,4649,4694],{"__ignoreMap":684},[689,4640,4641,4643,4646],{"class":691,"line":692},[689,4642,1225],{"class":735},[689,4644,4645],{"class":706}," stats",[689,4647,4648],{"class":706}," qbittorrent\n",[689,4650,4651,4653,4655,4658,4661,4664,4667,4670,4673,4676,4678,4680,4683,4686,4689,4691],{"class":691,"line":767},[689,4652,4014],{"class":735},[689,4654,3070],{"class":706},[689,4656,4657],{"class":706},"   NAME",[689,4659,4660],{"class":706},"          CPU",[689,4662,4663],{"class":706}," %",[689,4665,4666],{"class":706},"     MEM",[689,4668,4669],{"class":706}," USAGE",[689,4671,4672],{"class":706}," /",[689,4674,4675],{"class":706}," LIMIT",[689,4677,4666],{"class":706},[689,4679,4663],{"class":706},[689,4681,4682],{"class":706},"     NET",[689,4684,4685],{"class":706}," I/O",[689,4687,4688],{"class":706},"          BLOCK",[689,4690,4685],{"class":706},[689,4692,4693],{"class":706},"       PIDS\n",[689,4695,4696,4699,4702,4705,4708,4710,4713,4716,4719,4721,4724,4727,4729,4732],{"class":691,"line":778},[689,4697,4698],{"class":735},"42fd2ad56ff6",[689,4700,4701],{"class":706},"   qbittorrent",[689,4703,4704],{"class":706},"   15.73%",[689,4706,4707],{"class":706},"    7.731GiB",[689,4709,4672],{"class":706},[689,4711,4712],{"class":706}," 15.63GiB",[689,4714,4715],{"class":706},"   49.46%",[689,4717,4718],{"class":706},"    22.3GB",[689,4720,4672],{"class":706},[689,4722,4723],{"class":706}," 261GB",[689,4725,4726],{"class":706},"   636MB",[689,4728,4672],{"class":706},[689,4730,4731],{"class":706}," 536MB",[689,4733,4734],{"class":801},"   26\n",[656,4736,4738],{"id":4737},"四dockerfile","四、DockerFile",[674,4740,4741,4742,4745],{},"dockerfile 是 Docker 用来构建镜像的文本文件，包含自定义的指令和格式，可以通过 build 命令从 dockerfile 中构建镜像，命令格式为：",[686,4743,4744],{},"docker build [OPTIONS] PATH | URL | -"," 。",[674,4747,4748],{},"dockerfile 描述了组装镜像的步骤，其中每条指令都是单独执行的。除了 FROM 指令，其他的每一条指令都会在上一条指令所生成镜像的基础上执行，执行完后会生成一个新的镜像层，新镜像层覆盖在原来的镜像之上从而形成新的镜像。为了提高镜像构建的速度， Docker Daemon 会缓存构建过程中的中间镜像。在构建镜像时，它会将 dockerfile 中下一条指令和基础镜像的所有子镜像做比较，如果有一个子镜像是由相同的指令生成的，则命中缓存，直接使用该镜像，而不用再生成一个新的镜像。常用指令如下：",[661,4750,4752],{"id":4751},"_41-from","4.1 FROM",[674,4754,4755,4756,4137],{},"FROM 指令用于指定基础镜像，因此所有的 dockerfile 都必须使用 FROM 指令开头。FROM 指令可以出现多次，这样会构建多个镜像，每个镜像创建完成后，Docker 命令行界面会输出该镜像的 ID。常用指令格式为：",[686,4757,4758],{},"FROM \u003Cimage>[:\u003Ctag>] [AS \u003Cname>]",[661,4760,4762],{"id":4761},"_42-maintainer","4.2 MAINTAINER",[674,4764,4765],{},"MAINTAINER 指令可以用来设置作者名称和邮箱，目前 MAINTAINER  指令被标识为废弃，官方推荐使用 LABEL 代替。",[661,4767,4769],{"id":4768},"_43-label","4.3 LABEL",[674,4771,4772,4773,4745],{},"LABEL 指令可以用于指定镜像相关的元数据信息。格式为：",[686,4774,4775],{},"LABEL \u003Ckey>=\u003Cvalue> \u003Ckey>=\u003Cvalue> \u003Ckey>=\u003Cvalue> ...",[661,4777,4779],{"id":4778},"_44-env","4.4 ENV",[674,4781,4782,4783,4786,4787,4790],{},"ENV 指令用于声明环境变量，声明好的环境变量可以在后面的指令中引用，引用格式为 ",[686,4784,4785],{},"$variable_name"," 或 ",[686,4788,4789],{},"${variable_name}"," 。常用格式有以下两种：",[2064,4792,4793,4799],{},[2067,4794,4795,4798],{},[686,4796,4797],{},"ENV \u003Ckey> \u003Cvalue>"," ：用于设置单个环境变量；",[2067,4800,4801,4804],{},[686,4802,4803],{},"ENV \u003Ckey>=\u003Cvalue> ..."," ：用于一次设置多个环境变量。",[678,4806,4809],{"className":4807,"code":4808,"language":2175},[2173],"ENV NGINX_VERSION 1.14.0-0ubuntu1.3\n",[686,4810,4808],{"__ignoreMap":684},[661,4812,4814],{"id":4813},"_45-expose","4.5 EXPOSE",[674,4816,4817,4818,4821],{},"EXPOSE 用于指明容器对外暴露的端口号，格式为：",[686,4819,4820],{},"EXPOSE \u003Cport> [\u003Cport>/\u003Cprotocol>...]"," ，您可以指定端口是侦听 TCP 还是 UDP，如果未指定协议，则默认为 TCP。",[678,4823,4825],{"className":680,"code":4824,"filename":682,"language":683,"meta":684,"style":684},"EXPOSE 80\n",[686,4826,4827],{"__ignoreMap":684},[689,4828,4829,4832],{"class":691,"line":692},[689,4830,4831],{"class":735},"EXPOSE",[689,4833,4834],{"class":801}," 80\n",[661,4836,4838],{"id":4837},"_46-workdir","4.6 WORKDIR",[674,4840,4841],{},"WORKDIR 用于指明工作目录，它可以多次使用。如果指明的是相对路径，则它将相对于上一个WORKDIR指令的路径。示例如下：",[678,4843,4847],{"className":4844,"code":4845,"language":4846,"meta":684,"style":684},"language-shell shiki shiki-themes one-light one-light one-dark-pro","WORKDIR /a\nWORKDIR b\nWORKDIR c\nRUN pwd # 此时pwd为：/a/b/c\n","shell",[686,4848,4849,4854,4859,4864],{"__ignoreMap":684},[689,4850,4851],{"class":691,"line":692},[689,4852,4853],{},"WORKDIR /a\n",[689,4855,4856],{"class":691,"line":767},[689,4857,4858],{},"WORKDIR b\n",[689,4860,4861],{"class":691,"line":778},[689,4862,4863],{},"WORKDIR c\n",[689,4865,4866],{"class":691,"line":794},[689,4867,4868],{},"RUN pwd # 此时pwd为：/a/b/c\n",[661,4870,4872],{"id":4871},"_47-copy","4.7 COPY",[674,4874,4875,4876,4879],{},"COPY 指令的常用格式为：",[686,4877,4878],{},"COPY  \u003Csrc>... \u003Cdest>","，用于将指定路径中的文件添加到新的镜像中，拷贝的目标路径可以不存在，程序会自动创建。",[678,4881,4883],{"className":680,"code":4882,"filename":682,"language":683,"meta":684,"style":684},"COPY index.html ./\n",[686,4884,4885],{"__ignoreMap":684},[689,4886,4887,4889,4892],{"class":691,"line":692},[689,4888,2698],{"class":735},[689,4890,4891],{"class":706}," index.html",[689,4893,4894],{"class":706}," ./\n",[661,4896,4898],{"id":4897},"_48-add","4.8 ADD",[674,4900,4901,4902,4904,4905,4908,4909,4911],{},"ADD 指令的常用格式为：",[686,4903,4878],{},"，作用与 COPY 指令类似，但功能更为强大，例如 ",[686,4906,4907],{},"Src"," 支持文件的网络地址，且如果 ",[686,4910,4907],{}," 指向的是压缩文件，ADD 在复制完成后还会自动进行解压。",[678,4913,4914],{"className":680,"code":4882,"filename":682,"language":683,"meta":684,"style":684},[686,4915,4916],{"__ignoreMap":684},[689,4917,4918,4920,4922],{"class":691,"line":692},[689,4919,2698],{"class":735},[689,4921,4891],{"class":706},[689,4923,4894],{"class":706},[661,4925,4927],{"id":4926},"_49-run","4.9  RUN",[674,4929,4930],{},"RUN 指令会在前一条命令创建出的镜像基础上再创建一个容器，并在容器中运行命令，在命令结束后提交该容器为新的镜像。它支持以下两种格式：",[2064,4932,4933,4943],{},[2067,4934,4935,4938,4939,4942],{},[686,4936,4937],{},"RUN \u003Ccommand>"," （",[4940,4941,4846],"em",{}," 格式）",[2067,4944,4945,4948,4949,4952],{},[686,4946,4947],{},"RUN [\"executable\", \"param1\", \"param2\"]"," (",[4940,4950,4951],{},"exec"," 格式)",[674,4954,4955,4956,4959,4960,4963,4964,4967,4968,4971],{},"使用 shell 格式时候，命令通过 ",[686,4957,4958],{},"/bin/sh -c"," 运行，而当使用 exec 格式时，命令是直接运行的，容器不调用 shell 程序，这意味着不会发生正常的 shell 处理。例如，",[686,4961,4962],{},"RUN [\"echo\",\"$HOME\"]"," 不会对 ",[686,4965,4966],{},"$HOME"," 执行变量替换，此时正确的格式应为：",[686,4969,4970],{},"RUN [\"sh\",\"-c\",\"echo $HOME\"]","。下面的 CMD 指令也存在同样的问题。",[678,4973,4975],{"className":680,"code":4974,"language":683,"meta":684,"style":684},"RUN apt-get update && apt-get install -y curl\n# 这里引用ENV创建的环境变量\nRUN apt-get update && apt-get install -y nginx=$NGINX_VERSION\n",[686,4976,4977,4996,5001],{"__ignoreMap":684},[689,4978,4979,4981,4983,4985,4987,4990,4992,4994],{"class":691,"line":692},[689,4980,2399],{"class":735},[689,4982,739],{"class":706},[689,4984,2544],{"class":706},[689,4986,1701],{"class":728},[689,4988,4989],{"class":735},"apt-get",[689,4991,785],{"class":706},[689,4993,1285],{"class":801},[689,4995,791],{"class":706},[689,4997,4998],{"class":691,"line":767},[689,4999,5000],{"class":763},"# 这里引用ENV创建的环境变量\n",[689,5002,5003,5005,5007,5009,5011,5013,5015,5017,5020],{"class":691,"line":778},[689,5004,2399],{"class":735},[689,5006,739],{"class":706},[689,5008,2544],{"class":706},[689,5010,1701],{"class":728},[689,5012,4989],{"class":735},[689,5014,785],{"class":706},[689,5016,1285],{"class":801},[689,5018,5019],{"class":706}," nginx=",[689,5021,5022],{"class":699},"$NGINX_VERSION\n",[661,5024,5026],{"id":5025},"_410-cmd","4.10 CMD",[2064,5028,5029,5037,5046],{},[2067,5030,5031,4948,5034,5036],{},[686,5032,5033],{},"CMD [\"executable\",\"param1\",\"param2\"]",[4940,5035,4951],{}," 格式, 首选)",[2067,5038,5039,5042,5043,5045],{},[686,5040,5041],{},"CMD [\"param1\",\"param2\"]"," (作为 ",[4940,5044,2589],{}," 的默认参数)",[2067,5047,5048,4948,5051,4952],{},[686,5049,5050],{},"CMD command param1 param2",[4940,5052,4846],{},[674,5054,5055],{},"CMD 指令提供容器运行时的默认值，这些默认值可以是一条指令，也可以是一些参数。一个 dockerfile 中可以有多条 CMD 指令，但只有最后一条 CMD 指令有效。CMD 指令与 RUN 指令的命令格式相同，但作用不同：RUN 指令是在镜像的构建阶段用于产生新的镜像；而 CMD 指令则是在容器的启动阶段默认将 CMD 指令作为第一条执行的命令，如果用户在 docker run 时指定了新的命令参数，则会覆盖 CMD 指令中的命令。",[678,5057,5059],{"className":680,"code":5058,"language":683,"meta":684,"style":684},"CMD [\"nginx\",\"-g\",\"daemon off;\"]\n",[686,5060,5061],{"__ignoreMap":684},[689,5062,5063,5065,5067,5070,5073,5076,5078,5081],{"class":691,"line":692},[689,5064,2603],{"class":735},[689,5066,2592],{"class":728},[689,5068,5069],{"class":706},"\"nginx\"",[689,5071,5072],{"class":728},",",[689,5074,5075],{"class":706},"\"-g\"",[689,5077,5072],{"class":728},[689,5079,5080],{"class":706},"\"daemon off;\"",[689,5082,2598],{"class":728},[661,5084,5086],{"id":5085},"_411-entrypoint","4.11 ENTRYPOINT",[674,5088,5089],{},"ENTRYPOINT 指令 支持以下两种格式：",[2064,5091,5092,5100],{},[2067,5093,5094,4948,5097,5099],{},[686,5095,5096],{},"ENTRYPOINT [\"executable\", \"param1\", \"param2\"]",[4940,5098,4951],{}," 格式，首先)",[2067,5101,5102,4948,5105,4952],{},[686,5103,5104],{},"ENTRYPOINT command param1 param2",[4940,5106,4846],{},[674,5108,5109],{},"ENTRYPOINT 指令 和 CMD 指令类似，都可以让容器在每次启动时执行相同的命令。但不同的是 CMD 后面可以是参数也可以是命令，而 ENTRYPOINT 只能是命令；另外 docker run 命令提供的运行参数可以覆盖 CMD，但不能覆盖 ENTRYPOINT ，这意味着 ENTRYPOINT  指令上的命令一定会被执行。如下 dockerfile 片段：",[678,5111,5114],{"className":5112,"code":5113,"language":2175},[2173],"ENTRYPOINT [\"/bin/echo\", \"Hello\"]\nCMD [\"world\"]\n",[686,5115,5113],{"__ignoreMap":684},[674,5117,5118,5119,5122,5123,5126,5127,5130,5131,4137],{},"当执行 ",[686,5120,5121],{},"docker run -it image"," 后，此时输出为 ",[686,5124,5125],{},"hello world","，而当你执行 ",[686,5128,5129],{},"docker run -it image spring"," ，此时 CMD 中的参数会被覆盖，此时输出为",[686,5132,5133],{},"hello spring",[661,5135,5137],{"id":5136},"_412-stopsignal","4.12 STOPSIGNAL",[674,5139,5140],{},"STOPSIGNAL指令用于设置将发送到容器以优雅停止的系统调用信号。当Docker容器接收到指定的信号时，它将尝试停止容器中运行的进程，然后再关闭容器。",[674,5142,5143],{},"这里，信号是Docker在需要停止容器时将发送到容器的信号。可以将信号指定为整数或作为信号名称。例如，你可以使用SIGTERM或SIGINT作为信号。以下是一些常见的信号：",[2064,5145,5146,5149,5152],{},[2067,5147,5148],{},"SIGTERM（默认）：优雅地请求进程终止。",[2067,5150,5151],{},"SIGINT：类似于SIGTERM，通常由CTRL+C触发。",[2067,5153,5154],{},"SIGKILL：立即终止进程，不允许进程进行清理工作。",[678,5156,5158],{"className":680,"code":5157,"filename":682,"language":683,"meta":684,"style":684},"STOPSIGNAL SIGINT\n",[686,5159,5160],{"__ignoreMap":684},[689,5161,5162,5165],{"class":691,"line":692},[689,5163,5164],{"class":735},"STOPSIGNAL",[689,5166,5167],{"class":706}," SIGINT\n",[661,5169,5171],{"id":5170},"_413-healthcheck","4.13 HEALTHCHECK",[674,5173,5174],{},"HEALTHCHECK 指令在 Docker 中用于告诉 Docker 如何测试容器以检查其是否仍在运行。它允许您定义一个命令，该命令将定期在容器内执行，以验证其健康状态。这对于自动检测和处理容器可能无响应或功能不正常的情况非常有用。",[678,5176,5178],{"className":680,"code":5177,"filename":682,"language":683,"meta":684,"style":684},"HEALTHCHECK --interval=5s --timeout=3s \\\n  CMD curl -f http://localhost/ || exit 1\n",[686,5179,5180,5193],{"__ignoreMap":684},[689,5181,5182,5185,5188,5191],{"class":691,"line":692},[689,5183,5184],{"class":735},"HEALTHCHECK",[689,5186,5187],{"class":801}," --interval=5s",[689,5189,5190],{"class":801}," --timeout=3s",[689,5192,867],{"class":863},[689,5194,5195,5198,5200,5202,5205,5208,5211],{"class":691,"line":767},[689,5196,5197],{"class":706},"  CMD",[689,5199,819],{"class":706},[689,5201,2357],{"class":801},[689,5203,5204],{"class":706}," http://localhost/",[689,5206,5207],{"class":728}," || ",[689,5209,5210],{"class":863},"exit",[689,5212,5213],{"class":801}," 1\n",[656,5215,5217],{"id":5216},"五docker-compose","五、docker-compose",[678,5219,5221],{"className":680,"code":5220,"filename":682,"language":683,"meta":684,"style":684},"# 启动 docker\ndocker-compose up\n\n# 停止 docker\ndocker-compose down\n\n# 启动 docker 并在后台运行\ndocker-compose up -d\n\n# 重编译 docker 并运行\ndocker-compose up --build \n",[686,5222,5223,5228,5236,5240,5245,5252,5256,5261,5271,5275,5280],{"__ignoreMap":684},[689,5224,5225],{"class":691,"line":692},[689,5226,5227],{"class":763},"# 启动 docker\n",[689,5229,5230,5233],{"class":691,"line":767},[689,5231,5232],{"class":735},"docker-compose",[689,5234,5235],{"class":706}," up\n",[689,5237,5238],{"class":691,"line":778},[689,5239,851],{"emptyLinePlaceholder":850},[689,5241,5242],{"class":691,"line":794},[689,5243,5244],{"class":763},"# 停止 docker\n",[689,5246,5247,5249],{"class":691,"line":814},[689,5248,5232],{"class":735},[689,5250,5251],{"class":706}," down\n",[689,5253,5254],{"class":691,"line":834},[689,5255,851],{"emptyLinePlaceholder":850},[689,5257,5258],{"class":691,"line":847},[689,5259,5260],{"class":763},"# 启动 docker 并在后台运行\n",[689,5262,5263,5265,5268],{"class":691,"line":854},[689,5264,5232],{"class":735},[689,5266,5267],{"class":706}," up",[689,5269,5270],{"class":801}," -d\n",[689,5272,5273],{"class":691,"line":860},[689,5274,851],{"emptyLinePlaceholder":850},[689,5276,5277],{"class":691,"line":870},[689,5278,5279],{"class":763},"# 重编译 docker 并运行\n",[689,5281,5282,5284,5286],{"class":691,"line":888},[689,5283,5232],{"class":735},[689,5285,5267],{"class":706},[689,5287,5288],{"class":801}," --build\n",[661,5290,5291],{"id":5291},"备份数据库",[678,5293,5295],{"className":680,"code":5294,"filename":682,"language":683,"meta":684,"style":684},"docker exec CONTAINER /usr/bin/mysqldump -u root --password=root DATABASE > backup.sql\n",[686,5296,5297],{"__ignoreMap":684},[689,5298,5299,5301,5303,5305,5308,5311,5313,5316,5319,5321],{"class":691,"line":692},[689,5300,1225],{"class":735},[689,5302,4399],{"class":706},[689,5304,4405],{"class":706},[689,5306,5307],{"class":706}," /usr/bin/mysqldump",[689,5309,5310],{"class":801}," -u",[689,5312,2977],{"class":706},[689,5314,5315],{"class":801}," --password=root",[689,5317,5318],{"class":706}," DATABASE",[689,5320,928],{"class":728},[689,5322,5323],{"class":706},"backup.sql\n",[661,5325,5326],{"id":5326},"恢复数据库",[678,5328,5330],{"className":680,"code":5329,"filename":682,"language":683,"meta":684,"style":684},"cat backup.sql | docker exec -i CONTAINER /usr/bin/mysql -u root --password=root DATABASE\n",[686,5331,5332],{"__ignoreMap":684},[689,5333,5334,5337,5340,5342,5344,5346,5348,5350,5353,5355,5357,5359],{"class":691,"line":692},[689,5335,5336],{"class":735},"cat",[689,5338,5339],{"class":706}," backup.sql",[689,5341,911],{"class":728},[689,5343,1225],{"class":735},[689,5345,4399],{"class":706},[689,5347,3021],{"class":801},[689,5349,4405],{"class":706},[689,5351,5352],{"class":706}," /usr/bin/mysql",[689,5354,5310],{"class":801},[689,5356,2977],{"class":706},[689,5358,5315],{"class":801},[689,5360,5361],{"class":706}," DATABASE\n",[656,5363,5365],{"id":5364},"六创建自己的应用镜像","六、创建自己的应用镜像",[661,5367,5369],{"id":5368},"_61-编写自己的应用","6.1 编写自己的应用",[674,5371,5372,5373],{},"写一个小应用操作redis，代码：",[686,5374,5375],{},"code/java/docker",[661,5377,5379],{"id":5378},"_62-dockerfile","6.2 Dockerfile",[674,5381,5382],{},[686,5383,5384],{},"code/java/docker/Dockerfile",[678,5386,5389],{"className":5387,"code":5388,"language":2175},[2173],"FROM openjdk:8-jdk-slim\nLABEL maintainer=txpcer\n\nCOPY target/*.jar   /app.jar\n\nENTRYPOINT [\"java\",\"-jar\",\"/app.jar\"]\n",[686,5390,5388],{"__ignoreMap":684},[661,5392,5394],{"id":5393},"_63-构建镜像","6.3 构建镜像",[678,5396,5398],{"className":680,"code":5397,"filename":682,"language":683,"meta":684,"style":684},"docker build -t java-demo:v1.0 -f Dockerfile .\n",[686,5399,5400],{"__ignoreMap":684},[689,5401,5402,5404,5406,5408,5411,5413,5416],{"class":691,"line":692},[689,5403,1225],{"class":735},[689,5405,2427],{"class":706},[689,5407,2430],{"class":801},[689,5409,5410],{"class":706}," java-demo:v1.0",[689,5412,2357],{"class":801},[689,5414,5415],{"class":706}," Dockerfile",[689,5417,2441],{"class":706},[661,5419,5421],{"id":5420},"_64-测试启动容器","6.4 （测试）启动容器",[678,5423,5425],{"className":680,"code":5424,"filename":682,"language":683,"meta":684,"style":684},"docker run -d p 8080:8080 java-demo:v1.0\n",[686,5426,5427],{"__ignoreMap":684},[689,5428,5429,5431,5433,5435,5438,5441],{"class":691,"line":692},[689,5430,1225],{"class":735},[689,5432,1080],{"class":706},[689,5434,808],{"class":801},[689,5436,5437],{"class":706}," p",[689,5439,5440],{"class":706}," 8080:8080",[689,5442,5443],{"class":706}," java-demo:v1.0\n",[661,5445,5447,5448],{"id":5446},"_65-推送远程仓库","6.5 ",[666,5449,5451],{"href":5450},"/hadoop/docker.html#_2-7-%E6%8E%A8%E9%80%81%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93","推送远程仓库",[661,5453,5455],{"id":5454},"_66-部署中间件","6.6 部署中间件",[674,5457,5458],{},"部署一个Redis+应用，尝试应用操作Redis产生数据",[674,5460,5461],{},"在宿主机创建一个redis的配置文件",[678,5463,5465],{"className":680,"code":5464,"filename":682,"language":683,"meta":684,"style":684},"vim /data/redis/redis.conf\nappendonly yes\nrequirepass bihell\n",[686,5466,5467,5474,5482],{"__ignoreMap":684},[689,5468,5469,5471],{"class":691,"line":692},[689,5470,2384],{"class":735},[689,5472,5473],{"class":706}," /data/redis/redis.conf\n",[689,5475,5476,5479],{"class":691,"line":767},[689,5477,5478],{"class":735},"appendonly",[689,5480,5481],{"class":706}," yes\n",[689,5483,5484,5487],{"class":691,"line":778},[689,5485,5486],{"class":735},"requirepass",[689,5488,5489],{"class":706}," bihell\n",[674,5491,5492],{},"启动redis",[678,5494,5496],{"className":680,"code":5495,"filename":682,"language":683,"meta":684,"style":684},"docker run [OPTIONS] IMAGE [COMMAND] [ARG...]\n\n#redis使用自定义配置文件启动\n\ndocker run -v /data/redis/redis.conf:/etc/redis/redis.conf \\\n-v /data/redis/data:/data \\\n-d --name myredis \\\n-p 6379:6379 \\\nredis:latest  redis-server /etc/redis/redis.conf\n",[686,5497,5498,5507,5511,5516,5520,5533,5543,5555,5565],{"__ignoreMap":684},[689,5499,5500,5502,5504],{"class":691,"line":692},[689,5501,1225],{"class":735},[689,5503,1080],{"class":706},[689,5505,5506],{"class":728}," [OPTIONS] IMAGE [COMMAND] [ARG...]\n",[689,5508,5509],{"class":691,"line":767},[689,5510,851],{"emptyLinePlaceholder":850},[689,5512,5513],{"class":691,"line":778},[689,5514,5515],{"class":763},"#redis使用自定义配置文件启动\n",[689,5517,5518],{"class":691,"line":794},[689,5519,851],{"emptyLinePlaceholder":850},[689,5521,5522,5524,5526,5528,5531],{"class":691,"line":814},[689,5523,1225],{"class":735},[689,5525,1080],{"class":706},[689,5527,4247],{"class":801},[689,5529,5530],{"class":706}," /data/redis/redis.conf:/etc/redis/redis.conf",[689,5532,867],{"class":863},[689,5534,5535,5538,5541],{"class":691,"line":834},[689,5536,5537],{"class":728},"-v ",[689,5539,5540],{"class":706},"/data/redis/data:/data",[689,5542,867],{"class":863},[689,5544,5545,5548,5550,5553],{"class":691,"line":847},[689,5546,5547],{"class":728},"-d ",[689,5549,3859],{"class":801},[689,5551,5552],{"class":706}," myredis",[689,5554,867],{"class":863},[689,5556,5557,5560,5563],{"class":691,"line":854},[689,5558,5559],{"class":728},"-p ",[689,5561,5562],{"class":706},"6379:6379",[689,5564,867],{"class":863},[689,5566,5567,5570,5573],{"class":691,"line":860},[689,5568,5569],{"class":728},"redis:latest  ",[689,5571,5572],{"class":706},"redis-server",[689,5574,5575],{"class":706}," /etc/redis/redis.conf\n",[656,5577,5579],{"id":5578},"七存储","七、存储",[661,5581,5583],{"id":5582},"_71-查看storage-layers","7.1 查看Storage Layers",[678,5585,5587],{"className":680,"code":5586,"filename":682,"language":683,"meta":684,"style":684},"# 查看容器\ndocker-dev➜  ~ sudo docker container inspect storage_nginx\n# 可以看到GraphDriver部分，就是我们用的存储设备\n        \"GraphDriver\": {\n            \"Data\": {\n                \"DeviceId\": \"79\",\n                \"DeviceName\": \"docker-254:0-787965-f630108512327e8793d405c01aaabbef139173980502bc7f80e4d63c1cab600e\",\n                \"DeviceSize\": \"10737418240\"\n            },\n            \"Name\": \"devicemapper\"\n        },\n",[686,5588,5589,5594,5612,5617,5627,5636,5646,5656,5666,5671,5681],{"__ignoreMap":684},[689,5590,5591],{"class":691,"line":692},[689,5592,5593],{"class":763},"# 查看容器\n",[689,5595,5596,5599,5601,5603,5605,5607,5609],{"class":691,"line":767},[689,5597,5598],{"class":735},"docker-dev➜",[689,5600,3164],{"class":706},[689,5602,736],{"class":706},[689,5604,1077],{"class":706},[689,5606,2885],{"class":706},[689,5608,4315],{"class":706},[689,5610,5611],{"class":706}," storage_nginx\n",[689,5613,5614],{"class":691,"line":778},[689,5615,5616],{"class":763},"# 可以看到GraphDriver部分，就是我们用的存储设备\n",[689,5618,5619,5622,5624],{"class":691,"line":794},[689,5620,5621],{"class":735},"        \"GraphDriver\"",[689,5623,1144],{"class":863},[689,5625,5626],{"class":706}," {\n",[689,5628,5629,5632,5634],{"class":691,"line":814},[689,5630,5631],{"class":735},"            \"Data\"",[689,5633,1144],{"class":863},[689,5635,5626],{"class":706},[689,5637,5638,5641,5643],{"class":691,"line":834},[689,5639,5640],{"class":735},"                \"DeviceId\"",[689,5642,1144],{"class":863},[689,5644,5645],{"class":706}," \"79\",\n",[689,5647,5648,5651,5653],{"class":691,"line":847},[689,5649,5650],{"class":735},"                \"DeviceName\"",[689,5652,1144],{"class":863},[689,5654,5655],{"class":706}," \"docker-254:0-787965-f630108512327e8793d405c01aaabbef139173980502bc7f80e4d63c1cab600e\",\n",[689,5657,5658,5661,5663],{"class":691,"line":854},[689,5659,5660],{"class":735},"                \"DeviceSize\"",[689,5662,1144],{"class":863},[689,5664,5665],{"class":706}," \"10737418240\"\n",[689,5667,5668],{"class":691,"line":860},[689,5669,5670],{"class":728},"            },\n",[689,5672,5673,5676,5678],{"class":691,"line":870},[689,5674,5675],{"class":735},"            \"Name\"",[689,5677,1144],{"class":863},[689,5679,5680],{"class":706}," \"devicemapper\"\n",[689,5682,5683],{"class":691,"line":888},[689,5684,5685],{"class":728},"        },\n",[678,5687,5689],{"className":680,"code":5688,"filename":682,"language":683,"meta":684,"style":684},"# 查看镜像\ndocker-dev➜  ~ sudo docker image inspect nginx\n        \"GraphDriver\": {\n            \"Data\": {\n                \"DeviceId\": \"15\",\n                \"DeviceName\": \"docker-254:0-787965-cdc32c01f27144c422ccd6bb2252cc9625322743243999396e8c6184458f4528\",\n                \"DeviceSize\": \"10737418240\"\n            },\n            \"Name\": \"devicemapper\"\n        },\n",[686,5690,5691,5696,5712,5720,5728,5737,5746,5754,5758,5766],{"__ignoreMap":684},[689,5692,5693],{"class":691,"line":692},[689,5694,5695],{"class":763},"# 查看镜像\n",[689,5697,5698,5700,5702,5704,5706,5708,5710],{"class":691,"line":767},[689,5699,5598],{"class":735},[689,5701,3164],{"class":706},[689,5703,736],{"class":706},[689,5705,1077],{"class":706},[689,5707,2129],{"class":706},[689,5709,4315],{"class":706},[689,5711,2110],{"class":706},[689,5713,5714,5716,5718],{"class":691,"line":778},[689,5715,5621],{"class":735},[689,5717,1144],{"class":863},[689,5719,5626],{"class":706},[689,5721,5722,5724,5726],{"class":691,"line":794},[689,5723,5631],{"class":735},[689,5725,1144],{"class":863},[689,5727,5626],{"class":706},[689,5729,5730,5732,5734],{"class":691,"line":814},[689,5731,5640],{"class":735},[689,5733,1144],{"class":863},[689,5735,5736],{"class":706}," \"15\",\n",[689,5738,5739,5741,5743],{"class":691,"line":834},[689,5740,5650],{"class":735},[689,5742,1144],{"class":863},[689,5744,5745],{"class":706}," \"docker-254:0-787965-cdc32c01f27144c422ccd6bb2252cc9625322743243999396e8c6184458f4528\",\n",[689,5747,5748,5750,5752],{"class":691,"line":847},[689,5749,5660],{"class":735},[689,5751,1144],{"class":863},[689,5753,5665],{"class":706},[689,5755,5756],{"class":691,"line":854},[689,5757,5670],{"class":728},[689,5759,5760,5762,5764],{"class":691,"line":860},[689,5761,5675],{"class":735},[689,5763,1144],{"class":863},[689,5765,5680],{"class":706},[689,5767,5768],{"class":691,"line":870},[689,5769,5685],{"class":728},[661,5771,5773],{"id":5772},"_72-设定日志设备","7.2 设定日志设备",[678,5775,5777],{"className":680,"code":5776,"filename":682,"language":683,"meta":684,"style":684},"# 查看当前日志Driver\ntpxcer@docker-dev:~$ sudo docker info |grep Logging\n Logging Driver: json-file\n \n# 修改Logging Driver\ntpxcer@docker-dev:~$ sudo vi /etc/docker/daemon.json\n{\n  \"log-driver\": \"json-file\",\n  \"log-opts\": {\n    \"max-size\":\"15m\"\n  }\n}\n\n# 单独设定某个容器使用的log\ndocker run --log-driver syslog nginx\ndocker run --log-driver json-file --log-opt max-size=50m nginx\n",[686,5778,5779,5784,5803,5814,5818,5823,5834,5838,5848,5857,5867,5872,5876,5880,5885,5899],{"__ignoreMap":684},[689,5780,5781],{"class":691,"line":692},[689,5782,5783],{"class":763},"# 查看当前日志Driver\n",[689,5785,5786,5788,5790,5792,5795,5798,5800],{"class":691,"line":767},[689,5787,3527],{"class":735},[689,5789,736],{"class":706},[689,5791,1077],{"class":706},[689,5793,5794],{"class":706}," info",[689,5796,5797],{"class":728}," |",[689,5799,1113],{"class":735},[689,5801,5802],{"class":706}," Logging\n",[689,5804,5805,5808,5811],{"class":691,"line":778},[689,5806,5807],{"class":735}," Logging",[689,5809,5810],{"class":706}," Driver:",[689,5812,5813],{"class":706}," json-file\n",[689,5815,5816],{"class":691,"line":794},[689,5817,2966],{"class":728},[689,5819,5820],{"class":691,"line":814},[689,5821,5822],{"class":763},"# 修改Logging Driver\n",[689,5824,5825,5827,5829,5832],{"class":691,"line":834},[689,5826,3527],{"class":735},[689,5828,736],{"class":706},[689,5830,5831],{"class":706}," vi",[689,5833,1131],{"class":706},[689,5835,5836],{"class":691,"line":847},[689,5837,1136],{"class":728},[689,5839,5840,5843,5845],{"class":691,"line":854},[689,5841,5842],{"class":735},"  \"log-driver\"",[689,5844,1144],{"class":863},[689,5846,5847],{"class":706}," \"json-file\",\n",[689,5849,5850,5853,5855],{"class":691,"line":860},[689,5851,5852],{"class":735},"  \"log-opts\"",[689,5854,1144],{"class":863},[689,5856,5626],{"class":706},[689,5858,5859,5862,5864],{"class":691,"line":870},[689,5860,5861],{"class":735},"    \"max-size\"",[689,5863,1144],{"class":863},[689,5865,5866],{"class":735},"\"15m\"\n",[689,5868,5869],{"class":691,"line":888},[689,5870,5871],{"class":728},"  }\n",[689,5873,5874],{"class":691,"line":916},[689,5875,1167],{"class":728},[689,5877,5878],{"class":691,"line":934},[689,5879,851],{"emptyLinePlaceholder":850},[689,5881,5882],{"class":691,"line":1200},[689,5883,5884],{"class":763},"# 单独设定某个容器使用的log\n",[689,5886,5887,5889,5891,5894,5897],{"class":691,"line":1206},[689,5888,1225],{"class":735},[689,5890,1080],{"class":706},[689,5892,5893],{"class":801}," --log-driver",[689,5895,5896],{"class":706}," syslog",[689,5898,2110],{"class":706},[689,5900,5901,5903,5905,5907,5910,5913,5916],{"class":691,"line":1216},[689,5902,1225],{"class":735},[689,5904,1080],{"class":706},[689,5906,5893],{"class":801},[689,5908,5909],{"class":706}," json-file",[689,5911,5912],{"class":801}," --log-opt",[689,5914,5915],{"class":706}," max-size=50m",[689,5917,2110],{"class":706},[661,5919,5921],{"id":5920},"_73-挂在磁盘","7.3 挂在磁盘",[678,5923,5925],{"className":680,"code":5924,"filename":682,"language":683,"meta":684,"style":684},"# 新版本推荐--mount\n# bind 类型： 使用主机文件系统的权限。如果主机文件系统的权限设置为只读，那么容器中的挂载路径也将是只读的。\n# volume 类型： 具有自己的权限设置。你可以在创建卷时指定权限，不受主机文件系统的影响。\n# tmpfs 类型： 适用于需要在容器中进行临时数据存储，这些数据在容器停止或删除时会被清除。\ndocker run --mount type=bind,source=/host/path,target=/container/path my_image\n\n#  使用 -v 选项时，语法较为简单，只需提供源路径和目标路径\ndocker run -v /host/path:/container/path my_image\n",[686,5926,5927,5932,5937,5942,5947,5962,5966,5971],{"__ignoreMap":684},[689,5928,5929],{"class":691,"line":692},[689,5930,5931],{"class":763},"# 新版本推荐--mount\n",[689,5933,5934],{"class":691,"line":767},[689,5935,5936],{"class":763},"# bind 类型： 使用主机文件系统的权限。如果主机文件系统的权限设置为只读，那么容器中的挂载路径也将是只读的。\n",[689,5938,5939],{"class":691,"line":778},[689,5940,5941],{"class":763},"# volume 类型： 具有自己的权限设置。你可以在创建卷时指定权限，不受主机文件系统的影响。\n",[689,5943,5944],{"class":691,"line":794},[689,5945,5946],{"class":763},"# tmpfs 类型： 适用于需要在容器中进行临时数据存储，这些数据在容器停止或删除时会被清除。\n",[689,5948,5949,5951,5953,5956,5959],{"class":691,"line":814},[689,5950,1225],{"class":735},[689,5952,1080],{"class":706},[689,5954,5955],{"class":801}," --mount",[689,5957,5958],{"class":706}," type=bind,source=/host/path,target=/container/path",[689,5960,5961],{"class":706}," my_image\n",[689,5963,5964],{"class":691,"line":834},[689,5965,851],{"emptyLinePlaceholder":850},[689,5967,5968],{"class":691,"line":847},[689,5969,5970],{"class":763},"#  使用 -v 选项时，语法较为简单，只需提供源路径和目标路径\n",[689,5972,5973,5975,5977,5979,5982],{"class":691,"line":854},[689,5974,1225],{"class":735},[689,5976,1080],{"class":706},[689,5978,4247],{"class":801},[689,5980,5981],{"class":706}," /host/path:/container/path",[689,5983,5961],{"class":706},[661,5985,5987],{"id":5986},"_74-查看镜像的占用","7.4 查看镜像的占用",[678,5989,5991],{"className":680,"code":5990,"filename":682,"language":683,"meta":684,"style":684},"# 简单查看\ntpxcer@docker-no-proxy:~$ sudo docker system df\nTYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE\nImages          6         6         2.576GB   0B (0%)\nContainers      6         6         220kB     0B (0%)\nLocal Volumes   2         1         15.57kB   6.027kB (38%)\nBuild Cache     0         0         0B        0B\n\n# 详细查看\ntpxcer@docker-no-proxy:~$ sudo docker system df -v\nImages space usage:\n\nREPOSITORY                        TAG       IMAGE ID       CREATED         SIZE      SHARED SIZE   UNIQUE SIZE   CONTAINERS\ntpxcer/dice2-dice-openresty       latest    6a3e06db8755   7 days ago      105MB     0B            104.6MB       1\ntpxcer/dice2-dice-server          latest    1870150cf915   7 days ago      547MB     0B            546.8MB       1\ntpxcer/dice2-dice-front           latest    5ac34e7eaaa3   8 days ago      1.09GB    0B            1.088GB       1\ntpxcer/dice2-dice-mysql           latest    e60e18c88bdc   8 days ago      516MB     0B            515.7MB       1\nlscr.io/linuxserver/qbittorrent   latest    aaa50cb1023b   8 days ago      205MB     0B            204.6MB       1\ntpxcer/dice2-dice-redis           latest    c5afd8bd49ca   14 months ago   117MB     0B            116.9MB       1\n\nContainers space usage:\n\nCONTAINER ID   IMAGE                                    COMMAND                  LOCAL VOLUMES   SIZE      CREATED        STATUS        NAMES\nc0e2114bd7cd   lscr.io/linuxserver/qbittorrent:latest   \"/init\"                  0               23.9kB    22 hours ago   Up 22 hours   qbittorrent\n3ad3c570fc36   tpxcer/dice2-dice-openresty:latest       \"/usr/local/openrest…\"   0               162kB     2 days ago     Up 2 days     dice-openresty\n4d02780445db   tpxcer/dice2-dice-front:latest           \"/app/entrypoint.sh …\"   0               1.59kB    2 days ago     Up 2 days     dice-front\n14501e950ce0   tpxcer/dice2-dice-server:latest          \"java -jar dice.jar\"     0               32.8kB    2 days ago     Up 2 days     dice-server\n9be1b57df772   tpxcer/dice2-dice-redis:latest           \"docker-entrypoint.s…\"   1               0B        2 days ago     Up 2 days     dice-redis\nacc8a7e05215   tpxcer/dice2-dice-mysql:latest           \"docker-entrypoint.s…\"   0               7B        2 days ago     Up 2 days     dice-mysql\n\nLocal Volumes space usage:\n\nVOLUME NAME                                                        LINKS     SIZE\nd2300bfc8a688b10019a26b8be3032d8656dc4b6f6a0144a916bcd996eb52014   0         6.027kB\n1576b996f0ea92fb55ece3764c6b4ab06567d3d6a58f17a1a93b928c8aa75aad   1         9.547kB\n\nBuild cache usage: 0B\n\nCACHE ID   CACHE TYPE   SIZE      CREATED   LAST USED   USAGE     SHARED\n\n# 将删除所有处于 \u003Cnone> 状态的镜像\ndocker image prune\n\n# 删除所有不再被任何容器使用的镜像，包括处于 \u003Cnone> 状态的镜像以及被其他容器所使用的镜像。\ndocker image prune -a\n",[686,5992,5993,5998,6013,6030,6050,6068,6091,6111,6115,6120,6136,6146,6150,6180,6209,6236,6264,6290,6317,6345,6349,6357,6361,6389,6424,6459,6491,6522,6555,6585,6589,6599,6603,6617,6627,6637,6641,6654,6658,6687,6691,6696,6705,6710,6716],{"__ignoreMap":684},[689,5994,5995],{"class":691,"line":692},[689,5996,5997],{"class":763},"# 简单查看\n",[689,5999,6000,6003,6005,6007,6010],{"class":691,"line":767},[689,6001,6002],{"class":735},"tpxcer@docker-no-proxy:~$",[689,6004,736],{"class":706},[689,6006,1077],{"class":706},[689,6008,6009],{"class":706}," system",[689,6011,6012],{"class":706}," df\n",[689,6014,6015,6018,6021,6024,6027],{"class":691,"line":778},[689,6016,6017],{"class":735},"TYPE",[689,6019,6020],{"class":706},"            TOTAL",[689,6022,6023],{"class":706},"     ACTIVE",[689,6025,6026],{"class":706},"    SIZE",[689,6028,6029],{"class":706},"      RECLAIMABLE\n",[689,6031,6032,6035,6038,6041,6044,6047],{"class":691,"line":794},[689,6033,6034],{"class":735},"Images",[689,6036,6037],{"class":801},"          6",[689,6039,6040],{"class":801},"         6",[689,6042,6043],{"class":706},"         2.576GB",[689,6045,6046],{"class":706},"   0B",[689,6048,6049],{"class":728}," (0%)\n",[689,6051,6052,6055,6058,6060,6063,6066],{"class":691,"line":814},[689,6053,6054],{"class":735},"Containers",[689,6056,6057],{"class":801},"      6",[689,6059,6040],{"class":801},[689,6061,6062],{"class":706},"         220kB",[689,6064,6065],{"class":706},"     0B",[689,6067,6049],{"class":728},[689,6069,6070,6073,6076,6079,6082,6085,6088],{"class":691,"line":834},[689,6071,6072],{"class":735},"Local",[689,6074,6075],{"class":706}," Volumes",[689,6077,6078],{"class":801},"   2",[689,6080,6081],{"class":801},"         1",[689,6083,6084],{"class":706},"         15.57kB",[689,6086,6087],{"class":706},"   6.027kB",[689,6089,6090],{"class":728}," (38%)\n",[689,6092,6093,6096,6099,6102,6105,6108],{"class":691,"line":847},[689,6094,6095],{"class":735},"Build",[689,6097,6098],{"class":706}," Cache",[689,6100,6101],{"class":801},"     0",[689,6103,6104],{"class":801},"         0",[689,6106,6107],{"class":706},"         0B",[689,6109,6110],{"class":706},"        0B\n",[689,6112,6113],{"class":691,"line":854},[689,6114,851],{"emptyLinePlaceholder":850},[689,6116,6117],{"class":691,"line":860},[689,6118,6119],{"class":763},"# 详细查看\n",[689,6121,6122,6124,6126,6128,6130,6133],{"class":691,"line":870},[689,6123,6002],{"class":735},[689,6125,736],{"class":706},[689,6127,1077],{"class":706},[689,6129,6009],{"class":706},[689,6131,6132],{"class":706}," df",[689,6134,6135],{"class":801}," -v\n",[689,6137,6138,6140,6143],{"class":691,"line":888},[689,6139,6034],{"class":735},[689,6141,6142],{"class":706}," space",[689,6144,6145],{"class":706}," usage:\n",[689,6147,6148],{"class":691,"line":916},[689,6149,851],{"emptyLinePlaceholder":850},[689,6151,6152,6154,6156,6159,6161,6163,6166,6169,6172,6175,6177],{"class":691,"line":934},[689,6153,3061],{"class":735},[689,6155,3064],{"class":706},[689,6157,6158],{"class":706},"       IMAGE",[689,6160,3070],{"class":706},[689,6162,3073],{"class":706},[689,6164,6165],{"class":706},"         SIZE",[689,6167,6168],{"class":706},"      SHARED",[689,6170,6171],{"class":706}," SIZE",[689,6173,6174],{"class":706},"   UNIQUE",[689,6176,6171],{"class":706},[689,6178,6179],{"class":706},"   CONTAINERS\n",[689,6181,6182,6185,6188,6191,6194,6196,6198,6201,6203,6206],{"class":691,"line":1200},[689,6183,6184],{"class":735},"tpxcer/dice2-dice-openresty",[689,6186,6187],{"class":706},"       latest",[689,6189,6190],{"class":706},"    6a3e06db8755",[689,6192,6193],{"class":801},"   7",[689,6195,3205],{"class":706},[689,6197,3096],{"class":706},[689,6199,6200],{"class":706},"      105MB",[689,6202,6065],{"class":706},[689,6204,6205],{"class":706},"            104.6MB",[689,6207,6208],{"class":801},"       1\n",[689,6210,6211,6214,6217,6220,6222,6224,6226,6229,6231,6234],{"class":691,"line":1206},[689,6212,6213],{"class":735},"tpxcer/dice2-dice-server",[689,6215,6216],{"class":706},"          latest",[689,6218,6219],{"class":706},"    1870150cf915",[689,6221,6193],{"class":801},[689,6223,3205],{"class":706},[689,6225,3096],{"class":706},[689,6227,6228],{"class":706},"      547MB",[689,6230,6065],{"class":706},[689,6232,6233],{"class":706},"            546.8MB",[689,6235,6208],{"class":801},[689,6237,6238,6241,6244,6247,6249,6251,6253,6256,6259,6262],{"class":691,"line":1216},[689,6239,6240],{"class":735},"tpxcer/dice2-dice-front",[689,6242,6243],{"class":706},"           latest",[689,6245,6246],{"class":706},"    5ac34e7eaaa3",[689,6248,3202],{"class":801},[689,6250,3205],{"class":706},[689,6252,3096],{"class":706},[689,6254,6255],{"class":706},"      1.09GB",[689,6257,6258],{"class":706},"    0B",[689,6260,6261],{"class":706},"            1.088GB",[689,6263,6208],{"class":801},[689,6265,6266,6269,6271,6274,6276,6278,6280,6283,6285,6288],{"class":691,"line":1222},[689,6267,6268],{"class":735},"tpxcer/dice2-dice-mysql",[689,6270,6243],{"class":706},[689,6272,6273],{"class":706},"    e60e18c88bdc",[689,6275,3202],{"class":801},[689,6277,3205],{"class":706},[689,6279,3096],{"class":706},[689,6281,6282],{"class":706},"      516MB",[689,6284,6065],{"class":706},[689,6286,6287],{"class":706},"            515.7MB",[689,6289,6208],{"class":801},[689,6291,6292,6295,6298,6301,6303,6305,6307,6310,6312,6315],{"class":691,"line":1234},[689,6293,6294],{"class":735},"lscr.io/linuxserver/qbittorrent",[689,6296,6297],{"class":706},"   latest",[689,6299,6300],{"class":706},"    aaa50cb1023b",[689,6302,3202],{"class":801},[689,6304,3205],{"class":706},[689,6306,3096],{"class":706},[689,6308,6309],{"class":706},"      205MB",[689,6311,6065],{"class":706},[689,6313,6314],{"class":706},"            204.6MB",[689,6316,6208],{"class":801},[689,6318,6319,6322,6324,6327,6330,6333,6335,6338,6340,6343],{"class":691,"line":1388},[689,6320,6321],{"class":735},"tpxcer/dice2-dice-redis",[689,6323,6243],{"class":706},[689,6325,6326],{"class":706},"    c5afd8bd49ca",[689,6328,6329],{"class":801},"   14",[689,6331,6332],{"class":706}," months",[689,6334,3096],{"class":706},[689,6336,6337],{"class":706},"   117MB",[689,6339,6065],{"class":706},[689,6341,6342],{"class":706},"            116.9MB",[689,6344,6208],{"class":801},[689,6346,6347],{"class":691,"line":1394},[689,6348,851],{"emptyLinePlaceholder":850},[689,6350,6351,6353,6355],{"class":691,"line":1408},[689,6352,6054],{"class":735},[689,6354,6142],{"class":706},[689,6356,6145],{"class":706},[689,6358,6359],{"class":691,"line":1424},[689,6360,851],{"emptyLinePlaceholder":850},[689,6362,6363,6365,6367,6369,6372,6375,6378,6381,6383,6386],{"class":691,"line":1429},[689,6364,4014],{"class":735},[689,6366,3070],{"class":706},[689,6368,4019],{"class":706},[689,6370,6371],{"class":706},"                                    COMMAND",[689,6373,6374],{"class":706},"                  LOCAL",[689,6376,6377],{"class":706}," VOLUMES",[689,6379,6380],{"class":706},"   SIZE",[689,6382,3185],{"class":706},[689,6384,6385],{"class":706},"        STATUS",[689,6387,6388],{"class":706},"        NAMES\n",[689,6390,6391,6394,6397,6400,6403,6406,6409,6412,6414,6416,6419,6421],{"class":691,"line":1435},[689,6392,6393],{"class":735},"c0e2114bd7cd",[689,6395,6396],{"class":706},"   lscr.io/linuxserver/qbittorrent:latest",[689,6398,6399],{"class":706},"   \"/init\"",[689,6401,6402],{"class":801},"                  0",[689,6404,6405],{"class":706},"               23.9kB",[689,6407,6408],{"class":801},"    22",[689,6410,6411],{"class":706}," hours",[689,6413,3096],{"class":706},[689,6415,4054],{"class":706},[689,6417,6418],{"class":801}," 22",[689,6420,6411],{"class":706},[689,6422,6423],{"class":706},"   qbittorrent\n",[689,6425,6426,6429,6432,6435,6438,6441,6444,6446,6448,6451,6454,6456],{"class":691,"line":1441},[689,6427,6428],{"class":735},"3ad3c570fc36",[689,6430,6431],{"class":706},"   tpxcer/dice2-dice-openresty:latest",[689,6433,6434],{"class":706},"       \"/usr/local/openrest…\"",[689,6436,6437],{"class":801},"   0",[689,6439,6440],{"class":706},"               162kB",[689,6442,6443],{"class":801},"     2",[689,6445,3205],{"class":706},[689,6447,3096],{"class":706},[689,6449,6450],{"class":706},"     Up",[689,6452,6453],{"class":801}," 2",[689,6455,3205],{"class":706},[689,6457,6458],{"class":706},"     dice-openresty\n",[689,6460,6461,6464,6467,6470,6472,6475,6478,6480,6482,6484,6486,6488],{"class":691,"line":1447},[689,6462,6463],{"class":735},"4d02780445db",[689,6465,6466],{"class":706},"   tpxcer/dice2-dice-front:latest",[689,6468,6469],{"class":706},"           \"/app/entrypoint.sh …\"",[689,6471,6437],{"class":801},[689,6473,6474],{"class":706},"               1.59kB",[689,6476,6477],{"class":801},"    2",[689,6479,3205],{"class":706},[689,6481,3096],{"class":706},[689,6483,6450],{"class":706},[689,6485,6453],{"class":801},[689,6487,3205],{"class":706},[689,6489,6490],{"class":706},"     dice-front\n",[689,6492,6493,6496,6499,6502,6504,6507,6509,6511,6513,6515,6517,6519],{"class":691,"line":1453},[689,6494,6495],{"class":735},"14501e950ce0",[689,6497,6498],{"class":706},"   tpxcer/dice2-dice-server:latest",[689,6500,6501],{"class":706},"          \"java -jar dice.jar\"",[689,6503,6101],{"class":801},[689,6505,6506],{"class":706},"               32.8kB",[689,6508,6477],{"class":801},[689,6510,3205],{"class":706},[689,6512,3096],{"class":706},[689,6514,6450],{"class":706},[689,6516,6453],{"class":801},[689,6518,3205],{"class":706},[689,6520,6521],{"class":706},"     dice-server\n",[689,6523,6524,6527,6530,6533,6536,6539,6542,6544,6546,6548,6550,6552],{"class":691,"line":1459},[689,6525,6526],{"class":735},"9be1b57df772",[689,6528,6529],{"class":706},"   tpxcer/dice2-dice-redis:latest",[689,6531,6532],{"class":706},"           \"docker-entrypoint.s…\"",[689,6534,6535],{"class":801},"   1",[689,6537,6538],{"class":706},"               0B",[689,6540,6541],{"class":801},"        2",[689,6543,3205],{"class":706},[689,6545,3096],{"class":706},[689,6547,6450],{"class":706},[689,6549,6453],{"class":801},[689,6551,3205],{"class":706},[689,6553,6554],{"class":706},"     dice-redis\n",[689,6556,6557,6560,6563,6565,6567,6570,6572,6574,6576,6578,6580,6582],{"class":691,"line":1465},[689,6558,6559],{"class":735},"acc8a7e05215",[689,6561,6562],{"class":706},"   tpxcer/dice2-dice-mysql:latest",[689,6564,6532],{"class":706},[689,6566,6437],{"class":801},[689,6568,6569],{"class":706},"               7B",[689,6571,6541],{"class":801},[689,6573,3205],{"class":706},[689,6575,3096],{"class":706},[689,6577,6450],{"class":706},[689,6579,6453],{"class":801},[689,6581,3205],{"class":706},[689,6583,6584],{"class":706},"     dice-mysql\n",[689,6586,6587],{"class":691,"line":1471},[689,6588,851],{"emptyLinePlaceholder":850},[689,6590,6591,6593,6595,6597],{"class":691,"line":1476},[689,6592,6072],{"class":735},[689,6594,6075],{"class":706},[689,6596,6142],{"class":706},[689,6598,6145],{"class":706},[689,6600,6601],{"class":691,"line":1482},[689,6602,851],{"emptyLinePlaceholder":850},[689,6604,6605,6608,6611,6614],{"class":691,"line":1491},[689,6606,6607],{"class":735},"VOLUME",[689,6609,6610],{"class":706}," NAME",[689,6612,6613],{"class":706},"                                                        LINKS",[689,6615,6616],{"class":706},"     SIZE\n",[689,6618,6619,6622,6624],{"class":691,"line":1502},[689,6620,6621],{"class":735},"d2300bfc8a688b10019a26b8be3032d8656dc4b6f6a0144a916bcd996eb52014",[689,6623,6437],{"class":801},[689,6625,6626],{"class":706},"         6.027kB\n",[689,6628,6629,6632,6634],{"class":691,"line":1507},[689,6630,6631],{"class":735},"1576b996f0ea92fb55ece3764c6b4ab06567d3d6a58f17a1a93b928c8aa75aad",[689,6633,6535],{"class":801},[689,6635,6636],{"class":706},"         9.547kB\n",[689,6638,6639],{"class":691,"line":1513},[689,6640,851],{"emptyLinePlaceholder":850},[689,6642,6643,6645,6648,6651],{"class":691,"line":3791},[689,6644,6095],{"class":735},[689,6646,6647],{"class":706}," cache",[689,6649,6650],{"class":706}," usage:",[689,6652,6653],{"class":706}," 0B\n",[689,6655,6656],{"class":691,"line":3796},[689,6657,851],{"emptyLinePlaceholder":850},[689,6659,6660,6663,6665,6668,6671,6673,6675,6678,6681,6684],{"class":691,"line":3802},[689,6661,6662],{"class":735},"CACHE",[689,6664,3070],{"class":706},[689,6666,6667],{"class":706},"   CACHE",[689,6669,6670],{"class":706}," TYPE",[689,6672,6380],{"class":706},[689,6674,3185],{"class":706},[689,6676,6677],{"class":706},"   LAST",[689,6679,6680],{"class":706}," USED",[689,6682,6683],{"class":706},"   USAGE",[689,6685,6686],{"class":706},"     SHARED\n",[689,6688,6689],{"class":691,"line":3808},[689,6690,851],{"emptyLinePlaceholder":850},[689,6692,6693],{"class":691,"line":3814},[689,6694,6695],{"class":763},"# 将删除所有处于 \u003Cnone> 状态的镜像\n",[689,6697,6699,6701,6703],{"class":691,"line":6698},42,[689,6700,1225],{"class":735},[689,6702,2129],{"class":706},[689,6704,2255],{"class":706},[689,6706,6708],{"class":691,"line":6707},43,[689,6709,851],{"emptyLinePlaceholder":850},[689,6711,6713],{"class":691,"line":6712},44,[689,6714,6715],{"class":763},"# 删除所有不再被任何容器使用的镜像，包括处于 \u003Cnone> 状态的镜像以及被其他容器所使用的镜像。\n",[689,6717,6719,6721,6723,6725],{"class":691,"line":6718},45,[689,6720,1225],{"class":735},[689,6722,2129],{"class":706},[689,6724,2264],{"class":706},[689,6726,4303],{"class":801},[656,6728,6730],{"id":6729},"八网络","八、网络",[661,6732,6734],{"id":6733},"_1-host-network-driver","1. Host Network Driver",[674,6736,6737],{},"在Docker中，使用\"Host Network Driver\"意味着容器共享主机的网络命名空间。这使得容器能够直接访问主机上的网络栈，与主机上的进程具有相同的网络访问权限。与其他网络驱动相比，这种方式的容器不会在网络层面上被隔离，它们使用主机的网络栈，因此可以直接绑定到主机上的网络接口。",[674,6739,6740],{},[6741,6742],"img",{"alt":684,"src":6743},"/doc/docker/docker-host-network-namespace.jpg",[678,6745,6747],{"className":680,"code":6746,"filename":682,"language":683,"meta":684,"style":684},"# --neme host 指定Host Network Driver\ndocker run -d --net host --name host_busybox radial/busyboxplus:curl sleep 3600\ndocker run -d --net host --name host_nginx nginx\n# 本地网络 ip\ndocker-dev➜  ~ ip a |grep ens192\n2: ens192: \u003CBROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000\n    inet 192.168.50.179/24 brd 192.168.50.255 scope global dynamic ens192\n# host_busybox ip\ndocker-dev➜  ~ sudo docker exec host_busybox ip a | grep ens192\n2: ens192: \u003CBROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq qlen 1000\n    inet 192.168.50.179/24 brd 192.168.50.255 scope global dynamic ens192\n# 用host_busybox访问本地80端口\ndocker-dev➜  ~ sudo docker exec host_busybox curl localhost:80\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   615  100   615    0     0   255k      0 --:--:-- --:--:-- --:--:--  600k\n\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n\u003Ctitle>Welcome to nginx!\u003C/title>\n\u003Cstyle>\nhtml { color-scheme: light dark; }\n",[686,6748,6749,6754,6782,6801,6806,6824,6870,6895,6900,6924,6948,6966,6971,6990,7027,7047,7081,7095,7100,7105,7110,7115],{"__ignoreMap":684},[689,6750,6751],{"class":691,"line":692},[689,6752,6753],{"class":763},"# --neme host 指定Host Network Driver\n",[689,6755,6756,6758,6760,6762,6765,6768,6770,6773,6776,6779],{"class":691,"line":767},[689,6757,1225],{"class":735},[689,6759,1080],{"class":706},[689,6761,808],{"class":801},[689,6763,6764],{"class":801}," --net",[689,6766,6767],{"class":706}," host",[689,6769,3583],{"class":801},[689,6771,6772],{"class":706}," host_busybox",[689,6774,6775],{"class":706}," radial/busyboxplus:curl",[689,6777,6778],{"class":706}," sleep",[689,6780,6781],{"class":801}," 3600\n",[689,6783,6784,6786,6788,6790,6792,6794,6796,6799],{"class":691,"line":778},[689,6785,1225],{"class":735},[689,6787,1080],{"class":706},[689,6789,808],{"class":801},[689,6791,6764],{"class":801},[689,6793,6767],{"class":706},[689,6795,3583],{"class":801},[689,6797,6798],{"class":706}," host_nginx",[689,6800,2110],{"class":706},[689,6802,6803],{"class":691,"line":794},[689,6804,6805],{"class":763},"# 本地网络 ip\n",[689,6807,6808,6810,6812,6815,6817,6819,6821],{"class":691,"line":814},[689,6809,5598],{"class":735},[689,6811,3164],{"class":706},[689,6813,6814],{"class":706}," ip",[689,6816,3965],{"class":706},[689,6818,5797],{"class":728},[689,6820,1113],{"class":735},[689,6822,6823],{"class":706}," ens192\n",[689,6825,6826,6829,6832,6834,6837,6840,6843,6846,6849,6852,6855,6858,6861,6864,6867],{"class":691,"line":834},[689,6827,6828],{"class":735},"2:",[689,6830,6831],{"class":706}," ens192:",[689,6833,2497],{"class":728},[689,6835,6836],{"class":706},"BROADCAST,MULTICAST,UP,LOWER_U",[689,6838,6839],{"class":728},"P> ",[689,6841,6842],{"class":706},"mtu",[689,6844,6845],{"class":801}," 1500",[689,6847,6848],{"class":706}," qdisc",[689,6850,6851],{"class":706}," mq",[689,6853,6854],{"class":706}," state",[689,6856,6857],{"class":706}," UP",[689,6859,6860],{"class":706}," group",[689,6862,6863],{"class":706}," default",[689,6865,6866],{"class":706}," qlen",[689,6868,6869],{"class":801}," 1000\n",[689,6871,6872,6875,6878,6881,6884,6887,6890,6893],{"class":691,"line":847},[689,6873,6874],{"class":735},"    inet",[689,6876,6877],{"class":706}," 192.168.50.179/24",[689,6879,6880],{"class":706}," brd",[689,6882,6883],{"class":801}," 192.168.50.255",[689,6885,6886],{"class":706}," scope",[689,6888,6889],{"class":706}," global",[689,6891,6892],{"class":706}," dynamic",[689,6894,6823],{"class":706},[689,6896,6897],{"class":691,"line":854},[689,6898,6899],{"class":763},"# host_busybox ip\n",[689,6901,6902,6904,6906,6908,6910,6912,6914,6916,6918,6920,6922],{"class":691,"line":860},[689,6903,5598],{"class":735},[689,6905,3164],{"class":706},[689,6907,736],{"class":706},[689,6909,1077],{"class":706},[689,6911,4399],{"class":706},[689,6913,6772],{"class":706},[689,6915,6814],{"class":706},[689,6917,3965],{"class":706},[689,6919,911],{"class":728},[689,6921,1113],{"class":735},[689,6923,6823],{"class":706},[689,6925,6926,6928,6930,6932,6934,6936,6938,6940,6942,6944,6946],{"class":691,"line":870},[689,6927,6828],{"class":735},[689,6929,6831],{"class":706},[689,6931,2497],{"class":728},[689,6933,6836],{"class":706},[689,6935,6839],{"class":728},[689,6937,6842],{"class":706},[689,6939,6845],{"class":801},[689,6941,6848],{"class":706},[689,6943,6851],{"class":706},[689,6945,6866],{"class":706},[689,6947,6869],{"class":801},[689,6949,6950,6952,6954,6956,6958,6960,6962,6964],{"class":691,"line":888},[689,6951,6874],{"class":735},[689,6953,6877],{"class":706},[689,6955,6880],{"class":706},[689,6957,6883],{"class":801},[689,6959,6886],{"class":706},[689,6961,6889],{"class":706},[689,6963,6892],{"class":706},[689,6965,6823],{"class":706},[689,6967,6968],{"class":691,"line":916},[689,6969,6970],{"class":763},"# 用host_busybox访问本地80端口\n",[689,6972,6973,6975,6977,6979,6981,6983,6985,6987],{"class":691,"line":934},[689,6974,5598],{"class":735},[689,6976,3164],{"class":706},[689,6978,736],{"class":706},[689,6980,1077],{"class":706},[689,6982,4399],{"class":706},[689,6984,6772],{"class":706},[689,6986,819],{"class":706},[689,6988,6989],{"class":706}," localhost:80\n",[689,6991,6992,6995,6998,7001,7004,7006,7009,7012,7015,7018,7021,7024],{"class":691,"line":1200},[689,6993,6994],{"class":735},"  %",[689,6996,6997],{"class":706}," Total",[689,6999,7000],{"class":706},"    %",[689,7002,7003],{"class":706}," Received",[689,7005,4663],{"class":706},[689,7007,7008],{"class":706}," Xferd",[689,7010,7011],{"class":706},"  Average",[689,7013,7014],{"class":706}," Speed",[689,7016,7017],{"class":706},"   Time",[689,7019,7020],{"class":706},"    Time",[689,7022,7023],{"class":706},"     Time",[689,7025,7026],{"class":706},"  Current\n",[689,7028,7029,7032,7035,7038,7041,7044],{"class":691,"line":1206},[689,7030,7031],{"class":735},"                                 Dload",[689,7033,7034],{"class":706},"  Upload",[689,7036,7037],{"class":706},"   Total",[689,7039,7040],{"class":706},"   Spent",[689,7042,7043],{"class":706},"    Left",[689,7045,7046],{"class":706},"  Speed\n",[689,7048,7049,7052,7055,7058,7060,7063,7065,7068,7071,7074,7076,7078],{"class":691,"line":1216},[689,7050,7051],{"class":735},"100",[689,7053,7054],{"class":801},"   615",[689,7056,7057],{"class":801},"  100",[689,7059,7054],{"class":801},[689,7061,7062],{"class":801},"    0",[689,7064,6101],{"class":801},[689,7066,7067],{"class":706},"   255k",[689,7069,7070],{"class":801},"      0",[689,7072,7073],{"class":801}," --:--:--",[689,7075,7073],{"class":801},[689,7077,7073],{"class":801},[689,7079,7080],{"class":706},"  600k\n",[689,7082,7083,7086,7089,7092],{"class":691,"line":1222},[689,7084,7085],{"class":728},"\u003C!",[689,7087,7088],{"class":735},"DOCTYPE",[689,7090,7091],{"class":706}," htm",[689,7093,7094],{"class":728},"l>\n",[689,7096,7097],{"class":691,"line":1234},[689,7098,7099],{"class":728},"\u003Chtml>\n",[689,7101,7102],{"class":691,"line":1388},[689,7103,7104],{"class":728},"\u003Chead>\n",[689,7106,7107],{"class":691,"line":1394},[689,7108,7109],{"class":728},"\u003Ctitle>Welcome to nginx!\u003C/title>\n",[689,7111,7112],{"class":691,"line":1408},[689,7113,7114],{"class":728},"\u003Cstyle>\n",[689,7116,7117,7120,7123,7126,7129,7132],{"class":691,"line":1424},[689,7118,7119],{"class":735},"html",[689,7121,7122],{"class":706}," {",[689,7124,7125],{"class":706}," color-scheme:",[689,7127,7128],{"class":706}," light",[689,7130,7131],{"class":706}," dark",[689,7133,7134],{"class":728},"; }\n",[661,7136,7138],{"id":7137},"_2-bridge-network-driver","2. Bridge Network Driver",[674,7140,7141],{},"Bridge Network Driver 是默认的网络驱动程序。它用于创建一个称为 \"bridge\" 的虚拟网络桥接，使得容器可以相互通信并与主机进行通信。每个使用 Bridge Network Driver 的容器都连接到这个虚拟桥接上。",[674,7143,7144],{},"一些关键的概念和特点包括：",[2064,7146,7147,7153,7159,7165],{},[2067,7148,7149,7152],{},[1978,7150,7151],{},"虚拟网络桥接","： Bridge Network Driver 创建了一个虚拟网络桥接，类似于物理交换机，用于连接运行在同一主机上的多个容器。",[2067,7154,7155,7158],{},[1978,7156,7157],{},"独立子网","： 每个桥接网络都有自己的子网，并分配唯一的网段。容器通过桥接连接到这个子网，从而可以相互通信。",[2067,7160,7161,7164],{},[1978,7162,7163],{},"容器之间通信","： 在同一桥接网络上的容器可以直接通过它们的 IP 地址相互通信，就像它们在同一本地网络上一样。",[2067,7166,7167,7170],{},[1978,7168,7169],{},"主机与容器通信","： 桥接网络允许容器与主机进行通信，并且容器可以通过主机的 IP 地址访问外部网络",[674,7172,7173],{},[6741,7174],{"alt":684,"src":7175},"/doc/docker/docker-bridge-network-driver.jpg",[678,7177,7179],{"className":680,"code":7178,"filename":682,"language":683,"meta":684,"style":684},"# 如果没有指定网络类型，那么会自动创建一个桥接网络，名字为docker0\ndocker-dev➜  ~ ip link |grep docker0\n3: docker0: \u003CNO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default\n\n# 创建一个桥接网络\ndocker network create --driver bridge my-bridge-net\n# 如果在用ip link查看可以看到一个新的桥接网络\ndocker-dev➜  ~ ip link\n7: br-e7d224a907b6: \u003CNO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default\n    link/ether 02:42:23:2a:22:e0 brd ff:ff:ff:ff:ff:ff\n# 新建nbridge_nginx和bridge_busybox容器，然后网络使用我们新建的桥接网络\ndocker run -d --name bridge_nginx --network my-bridge-net nginx\n# bridge_nginx的80端口\ndocker run --rm --name bridge_busybox --network my-bridge-net radial/busyboxplus:curl curl bridge_nginx:80\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   615  100   615    0     0   342k      0 --:--:-- --:--:-- --:--:--  600k\n\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n\u003Ctitle>Welcome to nginx!\u003C/title\n",[686,7180,7181,7186,7204,7244,7248,7253,7271,7276,7287,7321,7334,7339,7360,7365,7389,7415,7429,7456,7466,7470,7474],{"__ignoreMap":684},[689,7182,7183],{"class":691,"line":692},[689,7184,7185],{"class":763},"# 如果没有指定网络类型，那么会自动创建一个桥接网络，名字为docker0\n",[689,7187,7188,7190,7192,7194,7197,7199,7201],{"class":691,"line":767},[689,7189,5598],{"class":735},[689,7191,3164],{"class":706},[689,7193,6814],{"class":706},[689,7195,7196],{"class":706}," link",[689,7198,5797],{"class":728},[689,7200,1113],{"class":735},[689,7202,7203],{"class":706}," docker0\n",[689,7205,7206,7209,7212,7214,7217,7219,7221,7223,7225,7228,7230,7233,7236,7239,7241],{"class":691,"line":778},[689,7207,7208],{"class":735},"3:",[689,7210,7211],{"class":706}," docker0:",[689,7213,2497],{"class":728},[689,7215,7216],{"class":706},"NO-CARRIER,BROADCAST,MULTICAST,U",[689,7218,6839],{"class":728},[689,7220,6842],{"class":706},[689,7222,6845],{"class":801},[689,7224,6848],{"class":706},[689,7226,7227],{"class":706}," noqueue",[689,7229,6854],{"class":706},[689,7231,7232],{"class":706}," DOWN",[689,7234,7235],{"class":706}," mode",[689,7237,7238],{"class":706}," DEFAULT",[689,7240,6860],{"class":706},[689,7242,7243],{"class":706}," default\n",[689,7245,7246],{"class":691,"line":794},[689,7247,851],{"emptyLinePlaceholder":850},[689,7249,7250],{"class":691,"line":814},[689,7251,7252],{"class":763},"# 创建一个桥接网络\n",[689,7254,7255,7257,7259,7262,7265,7268],{"class":691,"line":834},[689,7256,1225],{"class":735},[689,7258,4454],{"class":706},[689,7260,7261],{"class":706}," create",[689,7263,7264],{"class":801}," --driver",[689,7266,7267],{"class":706}," bridge",[689,7269,7270],{"class":706}," my-bridge-net\n",[689,7272,7273],{"class":691,"line":847},[689,7274,7275],{"class":763},"# 如果在用ip link查看可以看到一个新的桥接网络\n",[689,7277,7278,7280,7282,7284],{"class":691,"line":854},[689,7279,5598],{"class":735},[689,7281,3164],{"class":706},[689,7283,6814],{"class":706},[689,7285,7286],{"class":706}," link\n",[689,7288,7289,7292,7295,7297,7299,7301,7303,7305,7307,7309,7311,7313,7315,7317,7319],{"class":691,"line":860},[689,7290,7291],{"class":735},"7:",[689,7293,7294],{"class":706}," br-e7d224a907b6:",[689,7296,2497],{"class":728},[689,7298,7216],{"class":706},[689,7300,6839],{"class":728},[689,7302,6842],{"class":706},[689,7304,6845],{"class":801},[689,7306,6848],{"class":706},[689,7308,7227],{"class":706},[689,7310,6854],{"class":706},[689,7312,7232],{"class":706},[689,7314,7235],{"class":706},[689,7316,7238],{"class":706},[689,7318,6860],{"class":706},[689,7320,7243],{"class":706},[689,7322,7323,7326,7329,7331],{"class":691,"line":870},[689,7324,7325],{"class":735},"    link/ether",[689,7327,7328],{"class":706}," 02:42:23:2a:22:e0",[689,7330,6880],{"class":706},[689,7332,7333],{"class":706}," ff:ff:ff:ff:ff:ff\n",[689,7335,7336],{"class":691,"line":888},[689,7337,7338],{"class":763},"# 新建nbridge_nginx和bridge_busybox容器，然后网络使用我们新建的桥接网络\n",[689,7340,7341,7343,7345,7347,7349,7352,7355,7358],{"class":691,"line":916},[689,7342,1225],{"class":735},[689,7344,1080],{"class":706},[689,7346,808],{"class":801},[689,7348,3583],{"class":801},[689,7350,7351],{"class":706}," bridge_nginx",[689,7353,7354],{"class":801}," --network",[689,7356,7357],{"class":706}," my-bridge-net",[689,7359,2110],{"class":706},[689,7361,7362],{"class":691,"line":934},[689,7363,7364],{"class":763},"# bridge_nginx的80端口\n",[689,7366,7367,7369,7371,7373,7375,7378,7380,7382,7384,7386],{"class":691,"line":1200},[689,7368,1225],{"class":735},[689,7370,1080],{"class":706},[689,7372,3706],{"class":801},[689,7374,3583],{"class":801},[689,7376,7377],{"class":706}," bridge_busybox",[689,7379,7354],{"class":801},[689,7381,7357],{"class":706},[689,7383,6775],{"class":706},[689,7385,819],{"class":706},[689,7387,7388],{"class":706}," bridge_nginx:80\n",[689,7390,7391,7393,7395,7397,7399,7401,7403,7405,7407,7409,7411,7413],{"class":691,"line":1206},[689,7392,6994],{"class":735},[689,7394,6997],{"class":706},[689,7396,7000],{"class":706},[689,7398,7003],{"class":706},[689,7400,4663],{"class":706},[689,7402,7008],{"class":706},[689,7404,7011],{"class":706},[689,7406,7014],{"class":706},[689,7408,7017],{"class":706},[689,7410,7020],{"class":706},[689,7412,7023],{"class":706},[689,7414,7026],{"class":706},[689,7416,7417,7419,7421,7423,7425,7427],{"class":691,"line":1216},[689,7418,7031],{"class":735},[689,7420,7034],{"class":706},[689,7422,7037],{"class":706},[689,7424,7040],{"class":706},[689,7426,7043],{"class":706},[689,7428,7046],{"class":706},[689,7430,7431,7433,7435,7437,7439,7441,7443,7446,7448,7450,7452,7454],{"class":691,"line":1222},[689,7432,7051],{"class":735},[689,7434,7054],{"class":801},[689,7436,7057],{"class":801},[689,7438,7054],{"class":801},[689,7440,7062],{"class":801},[689,7442,6101],{"class":801},[689,7444,7445],{"class":706},"   342k",[689,7447,7070],{"class":801},[689,7449,7073],{"class":801},[689,7451,7073],{"class":801},[689,7453,7073],{"class":801},[689,7455,7080],{"class":706},[689,7457,7458,7460,7462,7464],{"class":691,"line":1234},[689,7459,7085],{"class":728},[689,7461,7088],{"class":735},[689,7463,7091],{"class":706},[689,7465,7094],{"class":728},[689,7467,7468],{"class":691,"line":1388},[689,7469,7099],{"class":728},[689,7471,7472],{"class":691,"line":1394},[689,7473,7104],{"class":728},[689,7475,7476],{"class":691,"line":1408},[689,7477,7478],{"class":728},"\u003Ctitle>Welcome to nginx!\u003C/title\n",[678,7480,7482],{"className":680,"code":7481,"filename":682,"language":683,"meta":684,"style":684},"# 不写网络类型，默认创建的就是桥接网络\ndocker network create my-net \n# 把my-net应用到容器\ndocker run -d --name my-net-busybox --network my-net radial/busyboxplus:curl sleep 3600\n# 创建容器my-net-nginx ,注意没有指定--network参数,所以不会连接到 my-net 桥接网络\ndocker run -d --name my-net-nginx nginx\n# 连接两个容器的网络\nsudo docker network connect my-net my-net-nginx\n# 使用 my-net-busybox 访问 my-net-nginx\ndocker-dev➜  ~ sudo docker exec my-net-busybox curl my-net-nginx:80\n\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   615  100   615    0     0   268k      0 --:--:-- --:--:-- --:--:--  600k\n\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n\u003Ctitle>Welcome to nginx!\u003C/title>\n",[686,7483,7484,7489,7502,7507,7530,7535,7550,7555,7571,7576,7595,7599,7625,7639,7666,7676,7680,7684],{"__ignoreMap":684},[689,7485,7486],{"class":691,"line":692},[689,7487,7488],{"class":763},"# 不写网络类型，默认创建的就是桥接网络\n",[689,7490,7491,7493,7495,7497,7500],{"class":691,"line":767},[689,7492,1225],{"class":735},[689,7494,4454],{"class":706},[689,7496,7261],{"class":706},[689,7498,7499],{"class":706}," my-net",[689,7501,2966],{"class":728},[689,7503,7504],{"class":691,"line":778},[689,7505,7506],{"class":763},"# 把my-net应用到容器\n",[689,7508,7509,7511,7513,7515,7517,7520,7522,7524,7526,7528],{"class":691,"line":794},[689,7510,1225],{"class":735},[689,7512,1080],{"class":706},[689,7514,808],{"class":801},[689,7516,3583],{"class":801},[689,7518,7519],{"class":706}," my-net-busybox",[689,7521,7354],{"class":801},[689,7523,7499],{"class":706},[689,7525,6775],{"class":706},[689,7527,6778],{"class":706},[689,7529,6781],{"class":801},[689,7531,7532],{"class":691,"line":814},[689,7533,7534],{"class":763},"# 创建容器my-net-nginx ,注意没有指定--network参数,所以不会连接到 my-net 桥接网络\n",[689,7536,7537,7539,7541,7543,7545,7548],{"class":691,"line":834},[689,7538,1225],{"class":735},[689,7540,1080],{"class":706},[689,7542,808],{"class":801},[689,7544,3583],{"class":801},[689,7546,7547],{"class":706}," my-net-nginx",[689,7549,2110],{"class":706},[689,7551,7552],{"class":691,"line":847},[689,7553,7554],{"class":763},"# 连接两个容器的网络\n",[689,7556,7557,7559,7561,7563,7566,7568],{"class":691,"line":854},[689,7558,770],{"class":735},[689,7560,1077],{"class":706},[689,7562,4454],{"class":706},[689,7564,7565],{"class":706}," connect",[689,7567,7499],{"class":706},[689,7569,7570],{"class":706}," my-net-nginx\n",[689,7572,7573],{"class":691,"line":860},[689,7574,7575],{"class":763},"# 使用 my-net-busybox 访问 my-net-nginx\n",[689,7577,7578,7580,7582,7584,7586,7588,7590,7592],{"class":691,"line":870},[689,7579,5598],{"class":735},[689,7581,3164],{"class":706},[689,7583,736],{"class":706},[689,7585,1077],{"class":706},[689,7587,4399],{"class":706},[689,7589,7519],{"class":706},[689,7591,819],{"class":706},[689,7593,7594],{"class":706}," my-net-nginx:80\n",[689,7596,7597],{"class":691,"line":888},[689,7598,851],{"emptyLinePlaceholder":850},[689,7600,7601,7603,7605,7607,7609,7611,7613,7615,7617,7619,7621,7623],{"class":691,"line":916},[689,7602,6994],{"class":735},[689,7604,6997],{"class":706},[689,7606,7000],{"class":706},[689,7608,7003],{"class":706},[689,7610,4663],{"class":706},[689,7612,7008],{"class":706},[689,7614,7011],{"class":706},[689,7616,7014],{"class":706},[689,7618,7017],{"class":706},[689,7620,7020],{"class":706},[689,7622,7023],{"class":706},[689,7624,7026],{"class":706},[689,7626,7627,7629,7631,7633,7635,7637],{"class":691,"line":934},[689,7628,7031],{"class":735},[689,7630,7034],{"class":706},[689,7632,7037],{"class":706},[689,7634,7040],{"class":706},[689,7636,7043],{"class":706},[689,7638,7046],{"class":706},[689,7640,7641,7643,7645,7647,7649,7651,7653,7656,7658,7660,7662,7664],{"class":691,"line":1200},[689,7642,7051],{"class":735},[689,7644,7054],{"class":801},[689,7646,7057],{"class":801},[689,7648,7054],{"class":801},[689,7650,7062],{"class":801},[689,7652,6101],{"class":801},[689,7654,7655],{"class":706},"   268k",[689,7657,7070],{"class":801},[689,7659,7073],{"class":801},[689,7661,7073],{"class":801},[689,7663,7073],{"class":801},[689,7665,7080],{"class":706},[689,7667,7668,7670,7672,7674],{"class":691,"line":1206},[689,7669,7085],{"class":728},[689,7671,7088],{"class":735},[689,7673,7091],{"class":706},[689,7675,7094],{"class":728},[689,7677,7678],{"class":691,"line":1216},[689,7679,7099],{"class":728},[689,7681,7682],{"class":691,"line":1222},[689,7683,7104],{"class":728},[689,7685,7686],{"class":691,"line":1234},[689,7687,7109],{"class":728},[661,7689,7691],{"id":7690},"_3-overlay-network-driver","3. Overlay Network Driver",[674,7693,7694],{},"Overlay Network Driver 是 Docker 中一种用于跨多个主机连接容器的网络驱动程序。这个网络驱动程序允许在 Docker Swarm 模式下创建多主机的容器编排集群，并使得容器可以在不同主机之间通信。",[674,7696,7697],{},[6741,7698],{"alt":684,"src":7699},"/doc/docker/docker-overlay-network-driver.jpg",[661,7701,7703],{"id":7702},"_4-mac-virtual-lan-network-driver","4. MAC Virtual LAN Network Driver",[674,7705,7706],{},"MACVLAN（MAC Virtual LAN）是 Docker 中的一种网络驱动程序，允许容器直接连接到物理网络，而不是创建一个桥接网络。这使得容器可以在物理网络上拥有自己的 MAC 地址，并直接参与物理网络的通信。",[2064,7708,7709,7715,7721,7726],{},[2067,7710,7711,7714],{},[1978,7712,7713],{},"直接连接到物理网络","： MACVLAN 允许容器使用主机上的物理网络接口，并拥有自己唯一的 MAC 地址。每个容器看起来像是物理网络上的一个独立设备。",[2067,7716,7717,7720],{},[1978,7718,7719],{},"无需额外的地址转换","： 与桥接网络相比，MACVLAN 不需要进行额外的地址转换（NAT），这可能导致性能损失。容器可以直接与物理网络上的其他设备进行通信。",[2067,7722,7723,7725],{},[1978,7724,7163],{},"： 在同一物理网络上的不同容器可以直接通过它们的 MAC 地址进行通信，就像它们是物理设备一样。",[2067,7727,7728,7731],{},[1978,7729,7730],{},"IP 地址分配","： 容器可以使用静态 IP 地址或通过 DHCP 从物理网络中获取 IP 地址。",[674,7733,7734],{},[6741,7735],{"alt":684,"src":7736},"/doc/docker/docker-mac-virtual-lan-network-driver.jpg",[678,7738,7740],{"className":680,"code":7739,"filename":682,"language":683,"meta":684,"style":684},"# 创建网络\ndocker network create -d macvlan --subnet 192.168.0.0/24 --gateway 192.168.0.1 -o parent=ens192 my-macvlan-net\n# 创建容器 macvlan_nginx\ndocker run -d --name macvlan_nginx --net my-macvlan-net nginx\n# 创建容器 macvlan_busbox 然后访问 macvlan_nginx\ndocker-dev➜  ~ sudo docker run --rm --name macvlan_busbox --net my-macvlan-net radial/busyboxplus:curl curl 192.168.0.2:80\n\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n100   615  100   615    0     0   532k      0 --:--:-- --:--:-- --:--:--  600k\n\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n\u003Ctitle>Welcome to nginx!\u003C/title>\n",[686,7741,7742,7747,7780,7785,7805,7810,7840,7844,7870,7884,7911,7921,7925,7929],{"__ignoreMap":684},[689,7743,7744],{"class":691,"line":692},[689,7745,7746],{"class":763},"# 创建网络\n",[689,7748,7749,7751,7753,7755,7757,7760,7763,7766,7769,7772,7774,7777],{"class":691,"line":767},[689,7750,1225],{"class":735},[689,7752,4454],{"class":706},[689,7754,7261],{"class":706},[689,7756,808],{"class":801},[689,7758,7759],{"class":706}," macvlan",[689,7761,7762],{"class":801}," --subnet",[689,7764,7765],{"class":706}," 192.168.0.0/24",[689,7767,7768],{"class":801}," --gateway",[689,7770,7771],{"class":801}," 192.168.0.1",[689,7773,828],{"class":801},[689,7775,7776],{"class":706}," parent=ens192",[689,7778,7779],{"class":706}," my-macvlan-net\n",[689,7781,7782],{"class":691,"line":778},[689,7783,7784],{"class":763},"# 创建容器 macvlan_nginx\n",[689,7786,7787,7789,7791,7793,7795,7798,7800,7803],{"class":691,"line":794},[689,7788,1225],{"class":735},[689,7790,1080],{"class":706},[689,7792,808],{"class":801},[689,7794,3583],{"class":801},[689,7796,7797],{"class":706}," macvlan_nginx",[689,7799,6764],{"class":801},[689,7801,7802],{"class":706}," my-macvlan-net",[689,7804,2110],{"class":706},[689,7806,7807],{"class":691,"line":814},[689,7808,7809],{"class":763},"# 创建容器 macvlan_busbox 然后访问 macvlan_nginx\n",[689,7811,7812,7814,7816,7818,7820,7822,7824,7826,7829,7831,7833,7835,7837],{"class":691,"line":834},[689,7813,5598],{"class":735},[689,7815,3164],{"class":706},[689,7817,736],{"class":706},[689,7819,1077],{"class":706},[689,7821,1080],{"class":706},[689,7823,3706],{"class":801},[689,7825,3583],{"class":801},[689,7827,7828],{"class":706}," macvlan_busbox",[689,7830,6764],{"class":801},[689,7832,7802],{"class":706},[689,7834,6775],{"class":706},[689,7836,819],{"class":706},[689,7838,7839],{"class":706}," 192.168.0.2:80\n",[689,7841,7842],{"class":691,"line":847},[689,7843,851],{"emptyLinePlaceholder":850},[689,7845,7846,7848,7850,7852,7854,7856,7858,7860,7862,7864,7866,7868],{"class":691,"line":854},[689,7847,6994],{"class":735},[689,7849,6997],{"class":706},[689,7851,7000],{"class":706},[689,7853,7003],{"class":706},[689,7855,4663],{"class":706},[689,7857,7008],{"class":706},[689,7859,7011],{"class":706},[689,7861,7014],{"class":706},[689,7863,7017],{"class":706},[689,7865,7020],{"class":706},[689,7867,7023],{"class":706},[689,7869,7026],{"class":706},[689,7871,7872,7874,7876,7878,7880,7882],{"class":691,"line":860},[689,7873,7031],{"class":735},[689,7875,7034],{"class":706},[689,7877,7037],{"class":706},[689,7879,7040],{"class":706},[689,7881,7043],{"class":706},[689,7883,7046],{"class":706},[689,7885,7886,7888,7890,7892,7894,7896,7898,7901,7903,7905,7907,7909],{"class":691,"line":870},[689,7887,7051],{"class":735},[689,7889,7054],{"class":801},[689,7891,7057],{"class":801},[689,7893,7054],{"class":801},[689,7895,7062],{"class":801},[689,7897,6101],{"class":801},[689,7899,7900],{"class":706},"   532k",[689,7902,7070],{"class":801},[689,7904,7073],{"class":801},[689,7906,7073],{"class":801},[689,7908,7073],{"class":801},[689,7910,7080],{"class":706},[689,7912,7913,7915,7917,7919],{"class":691,"line":888},[689,7914,7085],{"class":728},[689,7916,7088],{"class":735},[689,7918,7091],{"class":706},[689,7920,7094],{"class":728},[689,7922,7923],{"class":691,"line":916},[689,7924,7099],{"class":728},[689,7926,7927],{"class":691,"line":934},[689,7928,7104],{"class":728},[689,7930,7931],{"class":691,"line":1200},[689,7932,7109],{"class":728},[661,7934,7936],{"id":7935},"_5-none-network-driver","5. None Network Driver",[674,7938,7939],{},"无网络",[674,7941,7942],{},[6741,7943],{"alt":684,"src":7944},"/doc/docker/docker-none-network-driver.jpg",[678,7946,7948],{"className":680,"code":7947,"filename":682,"language":683,"meta":684,"style":684},"docker run --net none -d --name none_nginx nginx\n",[686,7949,7950],{"__ignoreMap":684},[689,7951,7952,7954,7956,7958,7961,7963,7965,7968],{"class":691,"line":692},[689,7953,1225],{"class":735},[689,7955,1080],{"class":706},[689,7957,6764],{"class":801},[689,7959,7960],{"class":706}," none",[689,7962,808],{"class":801},[689,7964,3583],{"class":801},[689,7966,7967],{"class":706}," none_nginx",[689,7969,2110],{"class":706},[661,7971,7973],{"id":7972},"_6-embedded-dns","6. Embedded DNS",[674,7975,7976],{},"网络别名",[678,7978,7980],{"className":680,"code":7979,"filename":682,"language":683,"meta":684,"style":684},"# 创建网络别名\ndocker run -d --name my-net-nginx2 --network my-net --network-alias my-nginx-alias nginx\n# 现在以两个名字都可以访问单my-net-nginx容器\ndocker exec my-net-busybox curl my-net-nginx2:80\ndocker exec my-net-busybox curl my-nginx-alias:80\n",[686,7981,7982,7987,8012,8017,8030],{"__ignoreMap":684},[689,7983,7984],{"class":691,"line":692},[689,7985,7986],{"class":763},"# 创建网络别名\n",[689,7988,7989,7991,7993,7995,7997,8000,8002,8004,8007,8010],{"class":691,"line":767},[689,7990,1225],{"class":735},[689,7992,1080],{"class":706},[689,7994,808],{"class":801},[689,7996,3583],{"class":801},[689,7998,7999],{"class":706}," my-net-nginx2",[689,8001,7354],{"class":801},[689,8003,7499],{"class":706},[689,8005,8006],{"class":801}," --network-alias",[689,8008,8009],{"class":706}," my-nginx-alias",[689,8011,2110],{"class":706},[689,8013,8014],{"class":691,"line":778},[689,8015,8016],{"class":763},"# 现在以两个名字都可以访问单my-net-nginx容器\n",[689,8018,8019,8021,8023,8025,8027],{"class":691,"line":794},[689,8020,1225],{"class":735},[689,8022,4399],{"class":706},[689,8024,7519],{"class":706},[689,8026,819],{"class":706},[689,8028,8029],{"class":706}," my-net-nginx2:80\n",[689,8031,8032,8034,8036,8038,8040],{"class":691,"line":814},[689,8033,1225],{"class":735},[689,8035,4399],{"class":706},[689,8037,7519],{"class":706},[689,8039,819],{"class":706},[689,8041,8042],{"class":706}," my-nginx-alias:80\n",[674,8044,8045],{},"另一种别名姿势",[678,8047,8049],{"className":680,"code":8048,"filename":682,"language":683,"meta":684,"style":684},"# 创建容器\ndocker run -d --name my-net-nginx3 nginx\n# 创建别名\ndocker network connect --alias another-alias my-net my-net-nginx3\n# 访问\ndocker exec my-net-busybox curl another-alias:80\n",[686,8050,8051,8056,8071,8076,8095,8100],{"__ignoreMap":684},[689,8052,8053],{"class":691,"line":692},[689,8054,8055],{"class":763},"# 创建容器\n",[689,8057,8058,8060,8062,8064,8066,8069],{"class":691,"line":767},[689,8059,1225],{"class":735},[689,8061,1080],{"class":706},[689,8063,808],{"class":801},[689,8065,3583],{"class":801},[689,8067,8068],{"class":706}," my-net-nginx3",[689,8070,2110],{"class":706},[689,8072,8073],{"class":691,"line":778},[689,8074,8075],{"class":763},"# 创建别名\n",[689,8077,8078,8080,8082,8084,8087,8090,8092],{"class":691,"line":794},[689,8079,1225],{"class":735},[689,8081,4454],{"class":706},[689,8083,7565],{"class":706},[689,8085,8086],{"class":801}," --alias",[689,8088,8089],{"class":706}," another-alias",[689,8091,7499],{"class":706},[689,8093,8094],{"class":706}," my-net-nginx3\n",[689,8096,8097],{"class":691,"line":814},[689,8098,8099],{"class":763},"# 访问\n",[689,8101,8102,8104,8106,8108,8110],{"class":691,"line":834},[689,8103,1225],{"class":735},[689,8105,4399],{"class":706},[689,8107,7519],{"class":706},[689,8109,819],{"class":706},[689,8111,8112],{"class":706}," another-alias:80\n",[661,8114,8116],{"id":8115},"_7-managing-networks","7. Managing Networks",[678,8118,8120],{"className":680,"code":8119,"filename":682,"language":683,"meta":684,"style":684},"# 网络列表\ndocker-dev➜  ~ sudo docker network ls                                                \nNETWORK ID     NAME                DRIVER    SCOPE\n0c9b75cdeb3e   bridge              bridge    local\nd51da9c09bd3   dashboard_default   bridge    local\n# 查看某个网络\ndocker network inspect my-net\n# 断开网络\ndocker network disconnect my-net my-net-nginx\n# 删除网络\ndocker network rm my-net\n",[686,8121,8122,8127,8144,8160,8174,8186,8191,8202,8207,8220,8225],{"__ignoreMap":684},[689,8123,8124],{"class":691,"line":692},[689,8125,8126],{"class":763},"# 网络列表\n",[689,8128,8129,8131,8133,8135,8137,8139,8141],{"class":691,"line":767},[689,8130,5598],{"class":735},[689,8132,3164],{"class":706},[689,8134,736],{"class":706},[689,8136,1077],{"class":706},[689,8138,4454],{"class":706},[689,8140,2293],{"class":706},[689,8142,8143],{"class":728},"                                                \n",[689,8145,8146,8149,8151,8154,8157],{"class":691,"line":778},[689,8147,8148],{"class":735},"NETWORK",[689,8150,3070],{"class":706},[689,8152,8153],{"class":706},"     NAME",[689,8155,8156],{"class":706},"                DRIVER",[689,8158,8159],{"class":706},"    SCOPE\n",[689,8161,8162,8165,8168,8171],{"class":691,"line":794},[689,8163,8164],{"class":735},"0c9b75cdeb3e",[689,8166,8167],{"class":706},"   bridge",[689,8169,8170],{"class":706},"              bridge",[689,8172,8173],{"class":706},"    local\n",[689,8175,8176,8179,8182,8184],{"class":691,"line":814},[689,8177,8178],{"class":735},"d51da9c09bd3",[689,8180,8181],{"class":706},"   dashboard_default",[689,8183,8167],{"class":706},[689,8185,8173],{"class":706},[689,8187,8188],{"class":691,"line":834},[689,8189,8190],{"class":763},"# 查看某个网络\n",[689,8192,8193,8195,8197,8199],{"class":691,"line":847},[689,8194,1225],{"class":735},[689,8196,4454],{"class":706},[689,8198,4315],{"class":706},[689,8200,8201],{"class":706}," my-net\n",[689,8203,8204],{"class":691,"line":854},[689,8205,8206],{"class":763},"# 断开网络\n",[689,8208,8209,8211,8213,8216,8218],{"class":691,"line":860},[689,8210,1225],{"class":735},[689,8212,4454],{"class":706},[689,8214,8215],{"class":706}," disconnect",[689,8217,7499],{"class":706},[689,8219,7570],{"class":706},[689,8221,8222],{"class":691,"line":870},[689,8223,8224],{"class":763},"# 删除网络\n",[689,8226,8227,8229,8231,8233],{"class":691,"line":888},[689,8228,1225],{"class":735},[689,8230,4454],{"class":706},[689,8232,2015],{"class":706},[689,8234,8201],{"class":706},[661,8236,8238],{"id":8237},"_8-expose-port","8. Expose Port",[674,8240,8241],{},"映射端口",[678,8243,8245],{"className":680,"code":8244,"filename":682,"language":683,"meta":684,"style":684},"# 8080宿主机端口，80容器端口\ndocker run -d -p 8080:80 --name nginx_pub nginx \ndocker-dev➜  ~ curl localhost:8080\n",[686,8246,8247,8252,8273],{"__ignoreMap":684},[689,8248,8249],{"class":691,"line":692},[689,8250,8251],{"class":763},"# 8080宿主机端口，80容器端口\n",[689,8253,8254,8256,8258,8260,8262,8264,8266,8269,8271],{"class":691,"line":767},[689,8255,1225],{"class":735},[689,8257,1080],{"class":706},[689,8259,808],{"class":801},[689,8261,1402],{"class":801},[689,8263,3675],{"class":706},[689,8265,3583],{"class":801},[689,8267,8268],{"class":706}," nginx_pub",[689,8270,3580],{"class":706},[689,8272,2966],{"class":728},[689,8274,8275,8277,8279,8281],{"class":691,"line":778},[689,8276,5598],{"class":735},[689,8278,3164],{"class":706},[689,8280,819],{"class":706},[689,8282,8283],{"class":706}," localhost:8080\n",[674,8285,8286],{},"查看映射的端口",[678,8288,8290],{"className":680,"code":8289,"filename":682,"language":683,"meta":684,"style":684},"docker-dev➜  ~ sudo docker port nginx_pub                                                \n80/tcp -> 0.0.0.0:8080\n80/tcp -> [::]:8080\n",[686,8291,8292,8309,8320],{"__ignoreMap":684},[689,8293,8294,8296,8298,8300,8302,8305,8307],{"class":691,"line":692},[689,8295,5598],{"class":735},[689,8297,3164],{"class":706},[689,8299,736],{"class":706},[689,8301,1077],{"class":706},[689,8303,8304],{"class":706}," port",[689,8306,8268],{"class":706},[689,8308,8143],{"class":728},[689,8310,8311,8314,8317],{"class":691,"line":767},[689,8312,8313],{"class":735},"80/tcp",[689,8315,8316],{"class":728}," -> ",[689,8318,8319],{"class":706},"0.0.0.0:8080\n",[689,8321,8322,8324],{"class":691,"line":778},[689,8323,8313],{"class":735},[689,8325,8326],{"class":728}," -> [::]:8080\n",[3979,8328,8329],{"start":860},[2067,8330,8331],{},"ExternalDNS",[678,8333,8335],{"className":680,"code":8334,"filename":682,"language":683,"meta":684,"style":684},"# 全局配置 外部dns设置\nvim /etc/docker/daemon.json\n{\n  \"dns\": [\"8.8.8.8\"]\n}\n\n# 单独配置\ndocker run --dns DNS_ADDRESS\n",[686,8336,8337,8342,8348,8352,8366,8370,8374,8379],{"__ignoreMap":684},[689,8338,8339],{"class":691,"line":692},[689,8340,8341],{"class":763},"# 全局配置 外部dns设置\n",[689,8343,8344,8346],{"class":691,"line":767},[689,8345,2384],{"class":735},[689,8347,1131],{"class":706},[689,8349,8350],{"class":691,"line":778},[689,8351,1136],{"class":728},[689,8353,8354,8357,8359,8361,8364],{"class":691,"line":794},[689,8355,8356],{"class":735},"  \"dns\"",[689,8358,1144],{"class":863},[689,8360,2592],{"class":728},[689,8362,8363],{"class":706},"\"8.8.8.8\"",[689,8365,2598],{"class":728},[689,8367,8368],{"class":691,"line":814},[689,8369,1167],{"class":728},[689,8371,8372],{"class":691,"line":834},[689,8373,851],{"emptyLinePlaceholder":850},[689,8375,8376],{"class":691,"line":847},[689,8377,8378],{"class":763},"# 单独配置\n",[689,8380,8381,8383,8385,8388],{"class":691,"line":854},[689,8382,1225],{"class":735},[689,8384,1080],{"class":706},[689,8386,8387],{"class":801}," --dns",[689,8389,8390],{"class":706}," DNS_ADDRESS\n",[656,8392,8394],{"id":8393},"九安全","九、安全",[661,8396,8398],{"id":8397},"_1-docker-content-trustdct","1. Docker Content Trust(DCT)",[674,8400,8401],{},"Docker Content Trust（DCT）是 Docker 中用于确保镜像的完整性和来源验证的一种安全特性。DCT 使用数字签名来验证镜像的发布者，并确保镜像在传输过程中没有被篡改。这有助于确保部署的镜像是由可信任的发布者创建的，有助于增强镜像的安全性。",[674,8403,8404],{},"DCT 的工作原理包括以下关键方面：",[2064,8406,8407,8413,8419,8425],{},[2067,8408,8409,8412],{},[1978,8410,8411],{},"签名","： Docker Content Trust 使用签名来确保镜像的完整性和来源。发布者使用自己的私钥对镜像进行签名，而用户可以使用发布者的公钥来验证签名。",[2067,8414,8415,8418],{},[1978,8416,8417],{},"签名的嵌入","： 当镜像被推送到 Docker Registry 时，签名信息会与镜像一起存储。这样，下载镜像时，Docker 客户端会自动验证签名。",[2067,8420,8421,8424],{},[1978,8422,8423],{},"信任集（Trust Collection）","： Docker Content Trust 使用信任集来存储公钥信息。信任集是一个包含签名密钥的集合，由用户来管理。用户可以添加、移除或更新信任集中的公钥。",[2067,8426,8427,8430],{},[1978,8428,8429],{},"启用和禁用 DCT","： DCT 是可选的，可以根据需要启用或禁用。如果 DCT 被禁用，Docker 将不会对拉取的镜像进行签名验证。",[678,8432,8434],{"className":680,"code":8433,"filename":682,"language":683,"meta":684,"style":684},"# 对镜像签名\n# 创建trust key\ndocker-dev➜  ~ docker login\ndocker-dev➜  ~ docker trust key generate tpxcer\nGenerating key for tpxcer...\nEnter passphrase for new tpxcer key with ID fbc0c74: \nRepeat passphrase for new tpxcer key with ID fbc0c74: \nSuccessfully generated and loaded private key. Corresponding public key available: /home/tpxcer/tpxcer.pub\n# 增加签名者\ndocker-dev➜  ~ sudo docker trust signer add --key tpxcer.pub tpxcer tpxcer/dct-test\nAdding signer \"tpxcer\" to tpxcer/dct-test...\nInitializing signed repository for tpxcer/dct-test...\nYou are about to create a new root signing key passphrase. This passphrase\nwill be used to protect the most sensitive key in your signing system. Please\nchoose a long, complex passphrase and be careful to keep the password and the\nkey file itself secure and backed up. It is highly recommended that you use a\npassword manager to generate the passphrase and keep it safe. There will be no\nway to recover this key. You can find the key in your config directory.\nEnter passphrase for new root key with ID 65a7565: \nEnter passphrase for new repository key with ID e7c8ea1: \nRepeat passphrase for new repository key with ID e7c8ea1: \nSuccessfully initialized \"tpxcer/dct-test\"\nSuccessfully added signer: tpxcer to tpxcer/dct-test\n# 创建测试镜像\ndocker-dev➜  ~ mkdir ~/dct-test\ndocker-dev➜  ~ cd dct-test        \ndocker-dev➜  dct-test vi Dockerfile     \nFROM busybox:latest\n\nCMD echo It worked!\n# 编译镜像,不签名\ndocker-dev➜  dct-test sudo docker build -t tpxcer/dct-test:unsigned .\n# 推送\ndocker-dev➜  dct-test sudo docker push tpxcer/dct-test:unsigned \nThe push refers to repository [docker.io/tpxcer/dct-test]\n# 运行未签名的镜像\ndocker-dev➜  dct-test sudo docker run tpxcer/dct-test:unsigned                                    \nIt worked!\n\n# 启用 DCT,再次运行,未签名报错\ndocker-dev➜  dct-test sudo -i \nroot@docker-dev:~# export DOCKER_CONTENT_TRUST=1\nroot@docker-dev:~# docker run tpxcer/dct-test:unsigned\ndocker: No valid trust data for unsigned.\nSee 'docker run --help'.\n\n# 编译镜像，签名\ndocker-dev➜  dct-test sudo docker build -t tpxcer/dct-test:signed .\n# 签名并推送\ndocker-dev➜  ~ docker trust sign tpxcer/dct-test:signed     \n# 然后再执行 \ndocker run tpxcer/dct-test:signed\n",[686,8435,8436,8441,8446,8457,8476,8488,8516,8539,8572,8577,8606,8621,8636,8671,8711,8748,8794,8831,8868,8891,8914,8936,8946,8962,8967,8978,8993,9007,9013,9017,9028,9033,9052,9056,9072,9089,9094,9111,9118,9122,9127,9139,9152,9163,9184,9192,9197,9203,9223,9229,9247,9253],{"__ignoreMap":684},[689,8437,8438],{"class":691,"line":692},[689,8439,8440],{"class":763},"# 对镜像签名\n",[689,8442,8443],{"class":691,"line":767},[689,8444,8445],{"class":763},"# 创建trust key\n",[689,8447,8448,8450,8452,8454],{"class":691,"line":778},[689,8449,5598],{"class":735},[689,8451,3164],{"class":706},[689,8453,1077],{"class":706},[689,8455,8456],{"class":706}," login\n",[689,8458,8459,8461,8463,8465,8468,8471,8474],{"class":691,"line":794},[689,8460,5598],{"class":735},[689,8462,3164],{"class":706},[689,8464,1077],{"class":706},[689,8466,8467],{"class":706}," trust",[689,8469,8470],{"class":706}," key",[689,8472,8473],{"class":706}," generate",[689,8475,1967],{"class":706},[689,8477,8478,8481,8483,8485],{"class":691,"line":814},[689,8479,8480],{"class":735},"Generating",[689,8482,8470],{"class":706},[689,8484,2804],{"class":706},[689,8486,8487],{"class":706}," tpxcer...\n",[689,8489,8490,8493,8496,8498,8501,8504,8506,8509,8511,8514],{"class":691,"line":834},[689,8491,8492],{"class":735},"Enter",[689,8494,8495],{"class":706}," passphrase",[689,8497,2804],{"class":706},[689,8499,8500],{"class":706}," new",[689,8502,8503],{"class":706}," tpxcer",[689,8505,8470],{"class":706},[689,8507,8508],{"class":706}," with",[689,8510,3070],{"class":706},[689,8512,8513],{"class":706}," fbc0c74:",[689,8515,2966],{"class":728},[689,8517,8518,8521,8523,8525,8527,8529,8531,8533,8535,8537],{"class":691,"line":847},[689,8519,8520],{"class":735},"Repeat",[689,8522,8495],{"class":706},[689,8524,2804],{"class":706},[689,8526,8500],{"class":706},[689,8528,8503],{"class":706},[689,8530,8470],{"class":706},[689,8532,8508],{"class":706},[689,8534,3070],{"class":706},[689,8536,8513],{"class":706},[689,8538,2966],{"class":728},[689,8540,8541,8543,8546,8549,8552,8555,8558,8561,8564,8566,8569],{"class":691,"line":854},[689,8542,2901],{"class":735},[689,8544,8545],{"class":706}," generated",[689,8547,8548],{"class":706}," and",[689,8550,8551],{"class":706}," loaded",[689,8553,8554],{"class":706}," private",[689,8556,8557],{"class":706}," key.",[689,8559,8560],{"class":706}," Corresponding",[689,8562,8563],{"class":706}," public",[689,8565,8470],{"class":706},[689,8567,8568],{"class":706}," available:",[689,8570,8571],{"class":706}," /home/tpxcer/tpxcer.pub\n",[689,8573,8574],{"class":691,"line":860},[689,8575,8576],{"class":763},"# 增加签名者\n",[689,8578,8579,8581,8583,8585,8587,8589,8592,8595,8598,8601,8603],{"class":691,"line":870},[689,8580,5598],{"class":735},[689,8582,3164],{"class":706},[689,8584,736],{"class":706},[689,8586,1077],{"class":706},[689,8588,8467],{"class":706},[689,8590,8591],{"class":706}," signer",[689,8593,8594],{"class":706}," add",[689,8596,8597],{"class":801}," --key",[689,8599,8600],{"class":706}," tpxcer.pub",[689,8602,8503],{"class":706},[689,8604,8605],{"class":706}," tpxcer/dct-test\n",[689,8607,8608,8611,8613,8616,8618],{"class":691,"line":888},[689,8609,8610],{"class":735},"Adding",[689,8612,8591],{"class":706},[689,8614,8615],{"class":706}," \"tpxcer\"",[689,8617,2741],{"class":706},[689,8619,8620],{"class":706}," tpxcer/dct-test...\n",[689,8622,8623,8626,8629,8632,8634],{"class":691,"line":916},[689,8624,8625],{"class":735},"Initializing",[689,8627,8628],{"class":706}," signed",[689,8630,8631],{"class":706}," repository",[689,8633,2804],{"class":706},[689,8635,8620],{"class":706},[689,8637,8638,8641,8644,8647,8649,8651,8653,8655,8657,8660,8662,8665,8668],{"class":691,"line":934},[689,8639,8640],{"class":735},"You",[689,8642,8643],{"class":706}," are",[689,8645,8646],{"class":706}," about",[689,8648,2741],{"class":706},[689,8650,7261],{"class":706},[689,8652,3965],{"class":706},[689,8654,8500],{"class":706},[689,8656,2977],{"class":706},[689,8658,8659],{"class":706}," signing",[689,8661,8470],{"class":706},[689,8663,8664],{"class":706}," passphrase.",[689,8666,8667],{"class":706}," This",[689,8669,8670],{"class":706}," passphrase\n",[689,8672,8673,8676,8679,8682,8684,8687,8690,8693,8696,8698,8700,8703,8705,8708],{"class":691,"line":1200},[689,8674,8675],{"class":735},"will",[689,8677,8678],{"class":706}," be",[689,8680,8681],{"class":706}," used",[689,8683,2741],{"class":706},[689,8685,8686],{"class":706}," protect",[689,8688,8689],{"class":706}," the",[689,8691,8692],{"class":706}," most",[689,8694,8695],{"class":706}," sensitive",[689,8697,8470],{"class":706},[689,8699,703],{"class":706},[689,8701,8702],{"class":706}," your",[689,8704,8659],{"class":706},[689,8706,8707],{"class":706}," system.",[689,8709,8710],{"class":706}," Please\n",[689,8712,8713,8716,8718,8721,8724,8726,8728,8730,8733,8735,8738,8740,8743,8745],{"class":691,"line":1206},[689,8714,8715],{"class":735},"choose",[689,8717,3965],{"class":706},[689,8719,8720],{"class":706}," long,",[689,8722,8723],{"class":706}," complex",[689,8725,8495],{"class":706},[689,8727,8548],{"class":706},[689,8729,8678],{"class":706},[689,8731,8732],{"class":706}," careful",[689,8734,2741],{"class":706},[689,8736,8737],{"class":706}," keep",[689,8739,8689],{"class":706},[689,8741,8742],{"class":706}," password",[689,8744,8548],{"class":706},[689,8746,8747],{"class":706}," the\n",[689,8749,8750,8753,8756,8759,8762,8764,8767,8770,8773,8776,8779,8782,8785,8788,8791],{"class":691,"line":1216},[689,8751,8752],{"class":735},"key",[689,8754,8755],{"class":706}," file",[689,8757,8758],{"class":706}," itself",[689,8760,8761],{"class":706}," secure",[689,8763,8548],{"class":706},[689,8765,8766],{"class":706}," backed",[689,8768,8769],{"class":706}," up.",[689,8771,8772],{"class":706}," It",[689,8774,8775],{"class":706}," is",[689,8777,8778],{"class":706}," highly",[689,8780,8781],{"class":706}," recommended",[689,8783,8784],{"class":706}," that",[689,8786,8787],{"class":706}," you",[689,8789,8790],{"class":706}," use",[689,8792,8793],{"class":706}," a\n",[689,8795,8796,8799,8802,8804,8806,8808,8810,8812,8814,8817,8820,8823,8826,8828],{"class":691,"line":1222},[689,8797,8798],{"class":735},"password",[689,8800,8801],{"class":706}," manager",[689,8803,2741],{"class":706},[689,8805,8473],{"class":706},[689,8807,8689],{"class":706},[689,8809,8495],{"class":706},[689,8811,8548],{"class":706},[689,8813,8737],{"class":706},[689,8815,8816],{"class":706}," it",[689,8818,8819],{"class":706}," safe.",[689,8821,8822],{"class":706}," There",[689,8824,8825],{"class":706}," will",[689,8827,8678],{"class":706},[689,8829,8830],{"class":706}," no\n",[689,8832,8833,8836,8838,8841,8844,8846,8849,8852,8854,8856,8858,8860,8862,8865],{"class":691,"line":1234},[689,8834,8835],{"class":735},"way",[689,8837,2741],{"class":706},[689,8839,8840],{"class":706}," recover",[689,8842,8843],{"class":706}," this",[689,8845,8557],{"class":706},[689,8847,8848],{"class":706}," You",[689,8850,8851],{"class":706}," can",[689,8853,3877],{"class":706},[689,8855,8689],{"class":706},[689,8857,8470],{"class":706},[689,8859,703],{"class":706},[689,8861,8702],{"class":706},[689,8863,8864],{"class":706}," config",[689,8866,8867],{"class":706}," directory.\n",[689,8869,8870,8872,8874,8876,8878,8880,8882,8884,8886,8889],{"class":691,"line":1388},[689,8871,8492],{"class":735},[689,8873,8495],{"class":706},[689,8875,2804],{"class":706},[689,8877,8500],{"class":706},[689,8879,2977],{"class":706},[689,8881,8470],{"class":706},[689,8883,8508],{"class":706},[689,8885,3070],{"class":706},[689,8887,8888],{"class":706}," 65a7565:",[689,8890,2966],{"class":728},[689,8892,8893,8895,8897,8899,8901,8903,8905,8907,8909,8912],{"class":691,"line":1394},[689,8894,8492],{"class":735},[689,8896,8495],{"class":706},[689,8898,2804],{"class":706},[689,8900,8500],{"class":706},[689,8902,8631],{"class":706},[689,8904,8470],{"class":706},[689,8906,8508],{"class":706},[689,8908,3070],{"class":706},[689,8910,8911],{"class":706}," e7c8ea1:",[689,8913,2966],{"class":728},[689,8915,8916,8918,8920,8922,8924,8926,8928,8930,8932,8934],{"class":691,"line":1408},[689,8917,8520],{"class":735},[689,8919,8495],{"class":706},[689,8921,2804],{"class":706},[689,8923,8500],{"class":706},[689,8925,8631],{"class":706},[689,8927,8470],{"class":706},[689,8929,8508],{"class":706},[689,8931,3070],{"class":706},[689,8933,8911],{"class":706},[689,8935,2966],{"class":728},[689,8937,8938,8940,8943],{"class":691,"line":1424},[689,8939,2901],{"class":735},[689,8941,8942],{"class":706}," initialized",[689,8944,8945],{"class":706}," \"tpxcer/dct-test\"\n",[689,8947,8948,8950,8953,8956,8958,8960],{"class":691,"line":1429},[689,8949,2901],{"class":735},[689,8951,8952],{"class":706}," added",[689,8954,8955],{"class":706}," signer:",[689,8957,8503],{"class":706},[689,8959,2741],{"class":706},[689,8961,8605],{"class":706},[689,8963,8964],{"class":691,"line":1435},[689,8965,8966],{"class":763},"# 创建测试镜像\n",[689,8968,8969,8971,8973,8975],{"class":691,"line":1441},[689,8970,5598],{"class":735},[689,8972,3164],{"class":706},[689,8974,1399],{"class":706},[689,8976,8977],{"class":706}," ~/dct-test\n",[689,8979,8980,8982,8984,8987,8990],{"class":691,"line":1447},[689,8981,5598],{"class":735},[689,8983,3164],{"class":706},[689,8985,8986],{"class":706}," cd",[689,8988,8989],{"class":706}," dct-test",[689,8991,8992],{"class":728},"        \n",[689,8994,8995,8997,9000,9002,9004],{"class":691,"line":1453},[689,8996,5598],{"class":735},[689,8998,8999],{"class":706},"  dct-test",[689,9001,5831],{"class":706},[689,9003,5415],{"class":706},[689,9005,9006],{"class":728},"     \n",[689,9008,9009,9011],{"class":691,"line":1459},[689,9010,2392],{"class":735},[689,9012,3930],{"class":706},[689,9014,9015],{"class":691,"line":1465},[689,9016,851],{"emptyLinePlaceholder":850},[689,9018,9019,9021,9023,9025],{"class":691,"line":1471},[689,9020,2603],{"class":735},[689,9022,2402],{"class":706},[689,9024,8772],{"class":706},[689,9026,9027],{"class":706}," worked!\n",[689,9029,9030],{"class":691,"line":1476},[689,9031,9032],{"class":763},"# 编译镜像,不签名\n",[689,9034,9035,9037,9039,9041,9043,9045,9047,9050],{"class":691,"line":1482},[689,9036,5598],{"class":735},[689,9038,8999],{"class":706},[689,9040,736],{"class":706},[689,9042,1077],{"class":706},[689,9044,2427],{"class":706},[689,9046,2430],{"class":801},[689,9048,9049],{"class":706}," tpxcer/dct-test:unsigned",[689,9051,2441],{"class":706},[689,9053,9054],{"class":691,"line":1491},[689,9055,3425],{"class":763},[689,9057,9058,9060,9062,9064,9066,9068,9070],{"class":691,"line":1502},[689,9059,5598],{"class":735},[689,9061,8999],{"class":706},[689,9063,736],{"class":706},[689,9065,1077],{"class":706},[689,9067,3393],{"class":706},[689,9069,9049],{"class":706},[689,9071,2966],{"class":728},[689,9073,9074,9077,9079,9082,9084,9086],{"class":691,"line":1507},[689,9075,9076],{"class":735},"The",[689,9078,3393],{"class":706},[689,9080,9081],{"class":706}," refers",[689,9083,2741],{"class":706},[689,9085,8631],{"class":706},[689,9087,9088],{"class":728}," [docker.io/tpxcer/dct-test]\n",[689,9090,9091],{"class":691,"line":1513},[689,9092,9093],{"class":763},"# 运行未签名的镜像\n",[689,9095,9096,9098,9100,9102,9104,9106,9108],{"class":691,"line":3791},[689,9097,5598],{"class":735},[689,9099,8999],{"class":706},[689,9101,736],{"class":706},[689,9103,1077],{"class":706},[689,9105,1080],{"class":706},[689,9107,9049],{"class":706},[689,9109,9110],{"class":728},"                                    \n",[689,9112,9113,9116],{"class":691,"line":3796},[689,9114,9115],{"class":735},"It",[689,9117,9027],{"class":706},[689,9119,9120],{"class":691,"line":3802},[689,9121,851],{"emptyLinePlaceholder":850},[689,9123,9124],{"class":691,"line":3808},[689,9125,9126],{"class":763},"# 启用 DCT,再次运行,未签名报错\n",[689,9128,9129,9131,9133,9135,9137],{"class":691,"line":3814},[689,9130,5598],{"class":735},[689,9132,8999],{"class":706},[689,9134,736],{"class":706},[689,9136,3021],{"class":801},[689,9138,2966],{"class":728},[689,9140,9141,9144,9146,9149],{"class":691,"line":6698},[689,9142,9143],{"class":735},"root@docker-dev:~#",[689,9145,4597],{"class":706},[689,9147,9148],{"class":706}," DOCKER_CONTENT_TRUST=",[689,9150,9151],{"class":801},"1\n",[689,9153,9154,9156,9158,9160],{"class":691,"line":6707},[689,9155,9143],{"class":735},[689,9157,1077],{"class":706},[689,9159,1080],{"class":706},[689,9161,9162],{"class":706}," tpxcer/dct-test:unsigned\n",[689,9164,9165,9168,9171,9174,9176,9179,9181],{"class":691,"line":6712},[689,9166,9167],{"class":735},"docker:",[689,9169,9170],{"class":706}," No",[689,9172,9173],{"class":706}," valid",[689,9175,8467],{"class":706},[689,9177,9178],{"class":706}," data",[689,9180,2804],{"class":706},[689,9182,9183],{"class":706}," unsigned.\n",[689,9185,9186,9189],{"class":691,"line":6718},[689,9187,9188],{"class":735},"See",[689,9190,9191],{"class":706}," 'docker run --help'.\n",[689,9193,9195],{"class":691,"line":9194},46,[689,9196,851],{"emptyLinePlaceholder":850},[689,9198,9200],{"class":691,"line":9199},47,[689,9201,9202],{"class":763},"# 编译镜像，签名\n",[689,9204,9206,9208,9210,9212,9214,9216,9218,9221],{"class":691,"line":9205},48,[689,9207,5598],{"class":735},[689,9209,8999],{"class":706},[689,9211,736],{"class":706},[689,9213,1077],{"class":706},[689,9215,2427],{"class":706},[689,9217,2430],{"class":801},[689,9219,9220],{"class":706}," tpxcer/dct-test:signed",[689,9222,2441],{"class":706},[689,9224,9226],{"class":691,"line":9225},49,[689,9227,9228],{"class":763},"# 签名并推送\n",[689,9230,9232,9234,9236,9238,9240,9243,9245],{"class":691,"line":9231},50,[689,9233,5598],{"class":735},[689,9235,3164],{"class":706},[689,9237,1077],{"class":706},[689,9239,8467],{"class":706},[689,9241,9242],{"class":706}," sign",[689,9244,9220],{"class":706},[689,9246,9006],{"class":728},[689,9248,9250],{"class":691,"line":9249},51,[689,9251,9252],{"class":763},"# 然后再执行 \n",[689,9254,9256,9258,9260],{"class":691,"line":9255},52,[689,9257,1225],{"class":735},[689,9259,1080],{"class":706},[689,9261,9262],{"class":706}," tpxcer/dct-test:signed\n",[661,9264,9266],{"id":9265},"_2-让其他用户访问docker","2. 让其他用户访问docker",[678,9268,9270],{"className":680,"code":9269,"filename":682,"language":683,"meta":684,"style":684},"docker-dev➜  ~ sudo usermod -aG docker tpxcer\ndocker-dev➜  ~ sudo reboot\n",[686,9271,9272,9288],{"__ignoreMap":684},[689,9273,9274,9276,9278,9280,9282,9284,9286],{"class":691,"line":692},[689,9275,5598],{"class":735},[689,9277,3164],{"class":706},[689,9279,736],{"class":706},[689,9281,1959],{"class":706},[689,9283,1962],{"class":801},[689,9285,1077],{"class":706},[689,9287,1967],{"class":706},[689,9289,9290,9292,9294,9296],{"class":691,"line":767},[689,9291,5598],{"class":735},[689,9293,3164],{"class":706},[689,9295,736],{"class":706},[689,9297,1974],{"class":706},[674,9299,9300],{},"十、限制资源",[678,9302,9304],{"className":680,"code":9303,"filename":682,"language":683,"meta":684,"style":684},"# 限制内存\ndocker container run --name test2 --memory=100m -d popd  80:80 nginx\n# 限制CPU\ndocker container run -d --cpus=\"1.5\" -name test4 -p 70:70 nginx\ndocker container run -d --cpus=\"2\" --cpuset-cpus=\"0,1\" -name test -p 60:60 nginx\n",[686,9305,9306,9311,9337,9342,9371],{"__ignoreMap":684},[689,9307,9308],{"class":691,"line":692},[689,9309,9310],{"class":763},"# 限制内存\n",[689,9312,9313,9315,9317,9319,9321,9324,9327,9329,9332,9335],{"class":691,"line":767},[689,9314,1225],{"class":735},[689,9316,2885],{"class":706},[689,9318,1080],{"class":706},[689,9320,3583],{"class":801},[689,9322,9323],{"class":706}," test2",[689,9325,9326],{"class":801}," --memory=100m",[689,9328,808],{"class":801},[689,9330,9331],{"class":706}," popd",[689,9333,9334],{"class":706},"  80:80",[689,9336,2110],{"class":706},[689,9338,9339],{"class":691,"line":778},[689,9340,9341],{"class":763},"# 限制CPU\n",[689,9343,9344,9346,9348,9350,9352,9355,9358,9361,9364,9366,9369],{"class":691,"line":794},[689,9345,1225],{"class":735},[689,9347,2885],{"class":706},[689,9349,1080],{"class":706},[689,9351,808],{"class":801},[689,9353,9354],{"class":801}," --cpus=",[689,9356,9357],{"class":706},"\"1.5\"",[689,9359,9360],{"class":801}," -name",[689,9362,9363],{"class":706}," test4",[689,9365,1402],{"class":801},[689,9367,9368],{"class":706}," 70:70",[689,9370,2110],{"class":706},[689,9372,9373,9375,9377,9379,9381,9383,9386,9389,9392,9394,9397,9399,9402],{"class":691,"line":814},[689,9374,1225],{"class":735},[689,9376,2885],{"class":706},[689,9378,1080],{"class":706},[689,9380,808],{"class":801},[689,9382,9354],{"class":801},[689,9384,9385],{"class":706},"\"2\"",[689,9387,9388],{"class":801}," --cpuset-cpus=",[689,9390,9391],{"class":706},"\"0,1\"",[689,9393,9360],{"class":801},[689,9395,9396],{"class":706}," test",[689,9398,1402],{"class":801},[689,9400,9401],{"class":706}," 60:60",[689,9403,2110],{"class":706},[9405,9406,9407],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sRLjE, html code.shiki .sRLjE{--shiki-light:#A626A4;--shiki-default:#A626A4;--shiki-dark:#C678DD}html pre.shiki code .s3_5o, html code.shiki .s3_5o{--shiki-light:#E45649;--shiki-default:#E45649;--shiki-dark:#E06C75}html pre.shiki code .sBZeU, html code.shiki .sBZeU{--shiki-light:#50A14F;--shiki-default:#50A14F;--shiki-dark:#98C379}html pre.shiki code .skGaQ, html code.shiki .skGaQ{--shiki-light:#383A42;--shiki-default:#383A42;--shiki-dark:#ABB2BF}html pre.shiki code .sgdWN, html code.shiki .sgdWN{--shiki-light:#4078F2;--shiki-default:#4078F2;--shiki-dark:#61AFEF}html pre.shiki code .slzXe, html code.shiki .slzXe{--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-default:#A0A1A7;--shiki-default-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic}html pre.shiki code .soiGB, html code.shiki .soiGB{--shiki-light:#986801;--shiki-default:#986801;--shiki-dark:#D19A66}html pre.shiki code .sXhqU, html code.shiki .sXhqU{--shiki-light:#0184BC;--shiki-default:#0184BC;--shiki-dark:#56B6C2}html pre.shiki code .sQ8GY, html code.shiki .sQ8GY{--shiki-light:#383A42;--shiki-default:#383A42;--shiki-dark:#56B6C2}",{"title":684,"searchDepth":767,"depth":767,"links":9409},[9410,9418,9429,9448,9463,9467,9476,9482,9492],{"id":658,"depth":767,"text":659,"children":9411},[9412,9414,9416],{"id":663,"depth":778,"text":9413},"1.1 Ubuntu 中安装",{"id":1244,"depth":778,"text":9415},"1.2 CentOS 中安装",{"id":1519,"depth":778,"text":9417},"1.3 Debian  中安装",{"id":2035,"depth":767,"text":2036,"children":9419},[9420,9421,9422,9423,9424,9425,9426,9427,9428],{"id":2039,"depth":778,"text":2040},{"id":2113,"depth":778,"text":2114},{"id":2207,"depth":778,"text":2208},{"id":2365,"depth":778,"text":2366},{"id":2920,"depth":778,"text":2921},{"id":3150,"depth":778,"text":3151},{"id":3314,"depth":778,"text":3315},{"id":3364,"depth":778,"text":3365},{"id":3459,"depth":778,"text":3460},{"id":3485,"depth":767,"text":3486,"children":9430},[9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447],{"id":3489,"depth":778,"text":3490},{"id":3845,"depth":778,"text":3846},{"id":3976,"depth":778,"text":3977},{"id":4188,"depth":778,"text":4189},{"id":4209,"depth":778,"text":4210},{"id":4270,"depth":778,"text":4271},{"id":4386,"depth":778,"text":4387},{"id":4411,"depth":778,"text":4412},{"id":4421,"depth":778,"text":4422},{"id":4431,"depth":778,"text":4432},{"id":4441,"depth":778,"text":4442},{"id":4470,"depth":778,"text":4471},{"id":4498,"depth":778,"text":4499},{"id":4517,"depth":778,"text":4518},{"id":4561,"depth":778,"text":4562},{"id":4579,"depth":778,"text":4580},{"id":4632,"depth":778,"text":4633},{"id":4737,"depth":767,"text":4738,"children":9449},[9450,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461,9462],{"id":4751,"depth":778,"text":4752},{"id":4761,"depth":778,"text":4762},{"id":4768,"depth":778,"text":4769},{"id":4778,"depth":778,"text":4779},{"id":4813,"depth":778,"text":4814},{"id":4837,"depth":778,"text":4838},{"id":4871,"depth":778,"text":4872},{"id":4897,"depth":778,"text":4898},{"id":4926,"depth":778,"text":4927},{"id":5025,"depth":778,"text":5026},{"id":5085,"depth":778,"text":5086},{"id":5136,"depth":778,"text":5137},{"id":5170,"depth":778,"text":5171},{"id":5216,"depth":767,"text":5217,"children":9464},[9465,9466],{"id":5291,"depth":778,"text":5291},{"id":5326,"depth":778,"text":5326},{"id":5364,"depth":767,"text":5365,"children":9468},[9469,9470,9471,9472,9473,9475],{"id":5368,"depth":778,"text":5369},{"id":5378,"depth":778,"text":5379},{"id":5393,"depth":778,"text":5394},{"id":5420,"depth":778,"text":5421},{"id":5446,"depth":778,"text":9474},"6.5 推送远程仓库",{"id":5454,"depth":778,"text":5455},{"id":5578,"depth":767,"text":5579,"children":9477},[9478,9479,9480,9481],{"id":5582,"depth":778,"text":5583},{"id":5772,"depth":778,"text":5773},{"id":5920,"depth":778,"text":5921},{"id":5986,"depth":778,"text":5987},{"id":6729,"depth":767,"text":6730,"children":9483},[9484,9485,9486,9487,9488,9489,9490,9491],{"id":6733,"depth":778,"text":6734},{"id":7137,"depth":778,"text":7138},{"id":7690,"depth":778,"text":7691},{"id":7702,"depth":778,"text":7703},{"id":7935,"depth":778,"text":7936},{"id":7972,"depth":778,"text":7973},{"id":8115,"depth":778,"text":8116},{"id":8237,"depth":778,"text":8238},{"id":8393,"depth":767,"text":8394,"children":9493},[9494,9495],{"id":8397,"depth":778,"text":8398},{"id":9265,"depth":778,"text":9266},"Docker 相关教程","md",null,{"date":9500},"2026-03-14",{"icon":66},{"title":63,"description":9496},"c4g3lqJhb0GYqeaF71HA4MENEExlBXY2tm2AAM6kxsE",[9505,9507],{"title":58,"path":59,"stem":60,"description":9506,"icon":61,"children":-1},"SQLite 相关资料",{"title":68,"path":69,"stem":70,"description":684,"icon":71,"children":-1},1777777460279]