1. Docker

picture 1

client通过运行在主机上的docker daemon操作image和container,registry提供image的发布和下载(类似npm和pip)。

Docker 镜像是一个特殊的只读文件系统,提供容器运行时所需的程序、库、资源、配置等文件,还包含一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

Container是image的运行实例,是运行在宿主机上的一种特殊的进程。一个image可以有多个container。

picture 2

Container是在Image基础上叠加了一个读写层,在container内部做一些写操作后,可以commit读写层生成新的image

上图省略掉了存储配置文件信息的init层。init层位于上图image和container两层之间。存放运行操作系统时候需要写的一些目录/文件。例如/etc 目录。init层commit时候不提交。 因为没必要,每次只读层运行时候都会自动生成init层内容。

1.1. commands

#ddd#ddddddddddoooooooooooooIcccCccccccccccmkkkokkkkkkkkkkaeeeneeeeeeeeeegrrrtrrrrrrrrrreapiriprrsrrpcaeummnsuutmmoptxlaiennartelgr-r<$tlacea--tC(ochs<idOd<ch-eIt<NoCailMfcTcOl<tlAcloAkN_coGeanIeTfo-EnstNrAindwtkaEIltioIo-iRcNearrDshnoE_iel>eeInRnncdlrDtaetl_>aImruoniDes-an>n-wmeasroer4mqer>9elgllf>iiidcs7tsmco9etaon-6rignta0/ymetaqedbaai)boigin7cnheneek/eer4eslr:rhlI/oDdr-ouwccnook/rnesltrtda_adifriinitrmelearecg_tenuasm-esqliteadtotcakcehsrh

1.2. Dockerfile

是用来build image的配置文件,从一个基础image开始,运行一些列配置命令,得到另外一个image

2. Docker Compose

一个用于定义,运行和管理多容器的工具. 运行起来之后,也可以用之前的docker命令来操作容器。

dddddddddoooooooooccccccccckkkkkkkkkeeeeeeeeerrrrrrrrr---------cccccccccooooooooommmmmmmmmpppppppppooooooooossssssssseeeeeeeeeuuplpssrdppsoottuograonw-strpndtddciicar/race/echcchetteuusss8h05l5ocg/ondt/iariendceitrruesctuscontcaoinntearinersh8055

3. Examples

3.1. Docker

3.1.1. directus

以下映射了两个卷,读取环境变量,然后交互式运行directus,container名字为directus-sqlite。

dockerrun-it-env-file=./env_sqlite$PWD/:/directus/database$PWD/uploads:/directus/uploads-name="directus-sqlite"directus/directus:latest

其中环境变量文件 env_sqlite

DB_CLIENT="sqlite3"
DB_FILENAME="/directus/database/data.db"

RATE_LIMITER_ENABLED=true
RATE_LIMITER_POINTS=50
RATE_LIMITER_DURATION=1
RATE_LIMITER_STORE=memory

CACHE_ENABLED=true
CACHE_TTL="30m"
CACHE_NAMESPACE="directus-cache"
CACHE_AUTO_PURGE=true

# memory | redis | memcache
CACHE_STORE=memory

ASSETS_CACHE_TTL="30m"

STORAGE_LOCATIONS="local"
STORAGE_LOCAL_DRIVER="local"
STORAGE_LOCAL_ROOT="/directus/uploads"

KEY="xxxxxxx-xxxxxx-xxxxxxxx-xxxxxxxxxx"
SECRET="abcdef"
ACCESS_TOKEN_TTL="15m"
REFRESH_TOKEN_TTL="7d"
REFRESH_TOKEN_COOKIE_SECURE="false"
REFRESH_TOKEN_COOKIE_SAME_SITE="lax"
REFRESH_TOKEN_COOKIE_NAME="directus_refresh_token"

CORS_ENABLED="true"
CORS_ORIGIN="true"
CORS_METHODS=GET,POST,PATCH,DELETE
CORS_ALLOWED_HEADERS=Content-Type,Authorization
CORS_EXPOSED_HEADERS=Content-Range
CORS_CREDENTIALS="true"
CORS_MAX_AGE=18000

AUTH_PROVIDERS="dingtalk"

AUTH_DINGTALK_DRIVER="oauth2"
AUTH_DINGTALK_CLIENT_ID="...."
AUTH_DINGTALK_CLIENT_SECRET="c6rCTM1nmIm-...."
AUTH_DINGTALK_AUTHORIZE_URL="https://fb.....cn/apipro/oauth_dingtalk/auth"
AUTH_DINGTALK_ACCESS_URL="https://fb.....cn/apipro/oauth_dingtalk/access_token"
AUTH_DINGTALK_PROFILE_URL="https://fb.....cn/apipro/oauth_dingtalk/profile"
AUTH_DINGTALK_ALLOW_PUBLIC_REGISTRATION="true"
AUTH_DINGTALK_DEFAULT_ROLE_ID="86a3338c-26a5-447d-bfbd-f938ee2c3c40"
AUTH_DINGTALK_ICON="alipay"

EXTENSIONS_PATH="./extensions"

EMAIL_FROM="[email protected]"
EMAIL_TRANSPORT="smtp"

EMAIL_SMTP_POOL=false
EMAIL_SMTP_HOST="smtp........com"
EMAIL_SMTP_PORT=465
EMAIL_SMTP_SECURE=true # Use TLS
EMAIL_SMTP_IGNORE_TLS=false
EMAIL_SMTP_USER="[email protected]"
EMAIL_SMTP_PASSWORD="...."

后续就可以用docker start来启动directus。

MC7MdMaO8aiacNacrcBTcBeBoAcocooI6otokNckuk-E4-s-PR6P-Pr4rsroI4oqo-D0-l-22i2::t:aaeapIdppiMiiiArwGewwaEcaantnnguggxsxxu/uu$d$$idrdoeocccktkeuersr:plssatta-erasttdirC"eOdcMotMcuAksNe-Drs-qelnittreypoint.s"C6REmAiTnEuDtesagoSETxAiTtUeSd(1)5minutesagoPORTSNdAiMrEeSctus-sqlite

3.1.2. 基本操作

MRMUl2e55aeDSdMRnM///11///222^222222222222MC1M9MC91MtMC91MtMC91MtM91MCMRnMUUDDDDDDDMRMaEasa7fb57fitoaEgaddd00ddd000C000000000000aO2acaOc2aeaOc2aeaOc2aeac2aOaEganneeeeeeeaEacPcit9019ccgaccPicooo--ooo2222222222222222cNfcfcNffcncNffcncNffcncffcNcPicttlllllllcPcBOBneae469eetkBOnBcccllccc2220222222222222BT3BbBTb3BdBTb3BdBTb3BdBb3BTBOnBaaeeeeeeeBOBoSogs048092sueoSxokkkiikkk///2////////////oAeo0oA0eoeoA0eoeoA0eoeo0eoAoSxoggtttttttoSooIot22f261tsroIoeeesseee0002000000000000oI6o2oI26oroI26oroI26oro26oIoIoggeeeeeeeoIokTkd:0e473e::.kTkrrrttrrr333/333333333333kNekdkNdek_kNdek_kNdek_kdekNkTkeedddddddkTk-O-e0c8e81i-O----ee---///0////////////-Ed-b-Ebd-m-Ebd-m-Ebd-m-bd-E-O-dd:::::::-O-PRPfP7df476sDoPRPeeenneee0003000000000000PRbP0PR0bPcPR0bPcPR0bPcP0bPRPRP::PRPrYrau6e560aho/rYrnnn--nnn888/888888888888r2r5r52rlr52rlr52rlr52rrYrsssssssrYrooula929b5awlootttoottt0oIbo5oI5boaoI5boaoI5boao5boIoonnhhhhhhhoo--ll76ea992ni--rrrnnrrr0008000000000000-Db-e-Deb-r-Deb-r-Deb-r-eb-D--ggaaaaaaa--22ti::::::5lb22yyy--yyy88888888888888822f22e22e22e2222ii222222222:T:n6or:Tl:pppiippp:::0::::::::::::::4::n::n::n:::Tl:nn5555555:T:aAatgPPPPPP:aaaAaaoooppooo5558555555555555aabaaaaaaaaaAaaxx6666666aAapGpauuuuuu1drpGtpiiivviii555:555555555555pInp0pInnppInnppInnpppIpGtp:@:::::::pGpiigfllllllceyieinnn66nnn:::5::::::::::::iMgi5iMggiiMggiiMggiiiMieils9ca0715iipp:rllllll1d/pspttt--ttt2225444444444444pAipepAiippAiippAiipppApspahc0bfff0pprro3nrtr...bb...000:333333333333rGnr3rGnnrrGnnrrGnnrrrGrtrta16e0d98rroolmccccccbngoosssyysss4oExoeoExxooExxooExxoooEooe2f7fc309ooxxaooooooceixxhhh--hhh[[[3[[[[[[[[[[[[xxbxxxxxxxxxxs5f2cbfbaxxyytlmmmmmm6wnyy:::dd:::nnnnnnnnnnnnnnnyy6yyyyyyyyyyt62bdd18ayyeippppppdexeeooo[oooooooooooo0:0bec813wIwsbllllller:wI9w/LLffLLCtttnttttttttttttwwewwwwwwwwwI9w1a67c10cwIwaMatreeeeee5laMcadoaaaaaoiiioiiiiiiiiiiiiaaeaaaaaaaaaMcaccf6be79aManAnattttttdianA1noouuuuunccctccccccccccccnC"ndnC""nnC""nnC""nnnCnA1n19043607nAngGgreeeeeefmtgGfgcknllnnfeeeieeeeeeeeeeeegO/g0gO//ggO//ggO//gggOgGfg3c098f3agGgxExycaexEfxkicttcci]]]c]]]]]]]]]]]]xMdxaxMddxxMddxxMddxxxMxEfxb9fbc898xExuu/agsu2uenh..hhgeuMou0uMoouuMoouuMoouuuMu2uc4ae305auu$I$n7et$I0$rgissiiu111]333333111111$Ac$d$Acc$$Acc$$Acc$$$A$I0$6db359ae$I$Dg4Da-nhhnnr###212121######Nk3NkkNkkNkkNDadd4e394bDddi9fdcdefg::gga1111######111111dDedfdDeeddDeeddDeedddDdcde5116e7edooncoo9onot:::#333333::::::oro4orroorroorroooo9o515cf49aoccx3rccctr/ii//i1212121c-cdc--cc--cc--ccccccd7083d9cckCk7k9krdnnddounb:::::::swsswekekdkeekkeekkeekkkk9kf542dd58kCeRe7neeysoffoonsguioiioxene8enneenneenneeeCeecec1c6daeRrEr9grrphcoocciiissseeeegrggrirtr4rttrrttrrttrrrRrraa97b3fdrEA7ioek::kkcnnliiixxxxnknnktr6rrrrrrE773e51e0AiTp4niC6rileeeogxtgggiiiiaeaaepyrfpyyspyyspyysrpAiC6r43fb0deciTmEu1xmRunlrGErrm/nnnttttlrllrspu8spptspptspptmsTmRm99f1012bmEaDl4:aEdnt-en--pt1baaaiionaoooooaoooEaEdic52b17a2aDgl6lgAa.setaeelh.ylllnn1p21p-ie-iip-iir-iip$-DgAa3eb67f8dgeaaeTy-dcntbnnee2gg7r97ran-dannanntann(aeTy7df51ee0esnctsEsi/rtilttt1g222ootdfttttttttdsEs9795ce308sSg0eDtirnerre".c(c((c.5..e..t..eoDc94dff759SIi5saipygdyy;e6c(((SeSSen9nencSa7f00915fIZn2tgnstppppSSSIsIIs"g7""d""n""dkTg4235e8d8ZEx5ogsotlooro1IIIGsGGsi3edeeAo1504e0aeE6inihiiiel0GGGCICnarerrT49c601377noinesnnal.IIIH3OH3x9_r_U6fbde68e9xtnttttd"2NNNL1)L2C4eC6AmC5A_CA2mcSa73a59741S1.ce..y.TTTDDR4cRbcR2bmRbcoS1ca255118cI3edhndde1))))er)eEfEsolEocEomlnI30941edd7aZ4mde/fvxexAs2AeuaAsulAuiatZ45c2c84ef2EMp1c23oe2rrrricriTe6TctrTetaTtnraEM282b66d0fBtc0kn00rn0eeeeteetEcbEoeEcrEueiPB50b79a22eyk-s--t2cccceiceDo3DnanDoaeDatnnO64bef9f91,eluIets1eeeedvednadnneeR7ad384a99rimPnutm0iiiieiddsmdmmsrT9f42d9ba7w-svvnae1vvvvwdvws6isiiS19adb5029ieto6sert1eeeeiei3annnalc34b8534flnefu-th0ddddtdtacguauugsa141b178cltnibwo,,,hhg9otgtto22775f1f8r-nsoud(ffo1eoee-f00a1c23eayetrpDeeercrcae240ab948tpnt/-kexxxooooaaaqN126c7abc2to-ceoebiiimdmdggg)A9ce4944f7eii/tnrittteeSEoooM7bbf2c048mnpnc--aiii33TxE99b0a846bptvg/tpnnnn1020AiSf59ab64aft.6inergggTtcba6762b0d-ngmo1UeSUESEESUE826abbd81tbxipc0SdTpxTxxTpxef6338462y/nle.AiAiiAi8c1c956a1-cxas2(T5tTttT4t2f508461dpdo/ts.0UeUeeUe730cad7a2eencee1)SsdSddSsd86e69f838rffoss-eeb3c9ebc55fa.n..62c(((c(f6810f46oudfss)0o000o007a81bbdrl/.hhn)))n)1mtddsdd2.e/es47As21csfdc5bdohaeosom2nufnseui8fladectn5ituscoug.lonatuctandero.gdsmsancositfoanainagugofgotonPoeORaTgP8SP8oO0O0R/R/TtTtScScPppONoRAbTMjSEeNtoScNtoAebtAebMnjiMnjEdevEdeSeceSecNtort_rtAeb_ig_iMnjmvomvEdeceoceSecl_dl_rtagaag_irolromveoleocendndl_aaagllrolleondall

3.2. Docker Compose

3.2.1. directus的 docker-compose.yaml

vsneeerrdcdtdsvaaiwiiitcineccinrcipndeorocaomoenhomeeomooeenrenebnalt-vPPPenat-cnar-l#######t-p--vKSDDDDDDCCCAA###kc:satguwiOOO:tgwttgtuweiEEBBBBBBAAADDst:saemdrSSSaeoduaes8mBAlM-I-odncdrYC______CCCMMM(P:u'ei:erioTTTi:risi::0eylo/afridaao:RCHPDUPHHHIIasUs3:nsdkrnGGGnkr:n5swcukkrsctnELOOASAEEENNkeB:'ep:asemRRRerseed5:daape/yse_ham'TISRTES_____eeLrot:ceEEEre:cri:eyllde:coebe2:ETTARSESREPI_satnSSS_dt_r8fsosauxtnan5N::B:WNTEMAshCnt/ut___niune0adauttu:st5'TAOAODASut_agds:UPDassac5umrdrawese:d6:''S'RBRIISrtUmiaSABm:mt5laiseban81d5EdDLESLWepRestES:e6eutkv:ans61'a4:i:E:::OsL:/aRS::s,ee/tsti16pt3rDRt::pb:W'/rdoeob4ga2'e':'''Do/doaOdcddusi:tn-8'b'dcdrra:/'ass'Riaiipura/os57aiti'eedsdhttedDrcrrlreld:ebsrurtddm'eotag:i:eheeoecsila-eeseriiidtctbi/rceccatord1c'c'cussn1spasve'tttdyueai-dtte':@rt.ss:acduuusosmcdr5auu'/e3hd:e1rtisssu/ote91ss/xcii/3/ur':aruuuec9-''catsr/-lselrpnsxt65amuedmi'caelt/tu-2cp5iciabttoodes9chl'ntrs/ueslatan/a2eeuetpsstudhtsea-:.psceo'tomseaix3b6cr.trsrebot-53ooiutesane9b7mdosgdossn259'u/.rmles2-'cceeiaufi5ctoxsntmro38inaqceon00ofml/hmse2nip/dewc2gldisht4cueareh04r.tetneb5acach1etoteuh'2imuso6o'ssis3n/tnt'/uogcprolaSnogQfaeLidigsrt-oeoopttiwohnesn/#ugseinnegral)

3.2.2. 基本操作

MDCCCCMC8d5MSSSRRRRMCMaorrrraO4e6attteeeeaOacceeeecN066cooommmmcNcBkaaaaBT6b0BpppooooBTBoettttoA491opppvvvvoAooriiiioI173oiiiiiiioIoknnnnkN46dknnnnnnnkNk-Cgggg-Ee6a-ggggggg-E-PoPR403PPRPrmndcdr68drddcddcnrropeaaioIea6oiaaiaaeoIo-ottcr-De6c-rtcrtct-D-2swahe22eaheahw22:eobec::cbecbeo::dratddtatarddoiksuoIdproususkoIocsescMioecsesecMck"kArsdkdkAkendeGetieoeGeroorEcgsrcrErwcti:kwkwus6wewwaiedddasaddddddraannrooonpnoooooo_nng_nnngdognnnnnndggxtdeeexisxeeeeeeixCxuhiurturuOu$er$eg$e$M$ecicMdDcdtsdtdAootou:ouoNccucs1cscDkksk:3kkee"el-eerrramrr-wta-CcCipescpRoLtsstosEmIhtemAp,-rp-TotaoaEsthsDereeyC"""udOddddp`eMooooSdfMcccwT-oaAkkknAdcuNeeeTklDrrrUet---SreeednnncrtttoirrrmvyyyPpepppOoroooRsiiiTennnStttu...psss`"""NAMC111ER366SEAsssTeeeEcccDooonnndddsssaaagggoooSUUUTpppAT111U033SssseeecccooonnndddsssP056O.43R037T.29S0/.tt0cc:pp8055->8055/tcp,:::8055->8055/tcpNddcAiaaMrtcEeahScbetausse