Aloha kākou! I kona
ʻO ka hoʻomaka
Ua hoʻomaka ia ma ke ahiahi ua ua Sepatemaba i koʻu hoʻomaʻemaʻe ʻana i ka mīkini aʻu i hoʻolimalima ai no $5 ma Digital Ocean, ua paʻa i ka hau ma muli o ka hoʻopiha ʻana o Docker i nā 24 gigabytes o nā wahi disk i loaʻa me kāna mau kiʻi a me nā ipu. ʻO ka mea hoʻohenehene, ʻo kēia mau kiʻi a me nā ipu hao he mea kuewa wale nō a pono e hoʻāʻo wale i ka hana o kaʻu noi i kēlā me kēia manawa i hoʻokuʻu ʻia kahi mana hou o kahi waihona a i ʻole ka framework. Ua ho'āʻo wau e kākau i nā ʻatikala shell a hoʻonohonoho i kahi papa manawa cron e hoʻomaʻemaʻe i ka ʻōpala, akā ʻaʻole ia i kōkua: i kēlā me kēia manawa i pau ʻole me ka ʻai ʻia ʻana o ka wahi disk o kaʻu kikowaena a ke kau nei ke kikowaena (ʻoi aku ka maikaʻi). I kekahi manawa, ua loaʻa iaʻu kahi ʻatikala e pili ana i ka holo ʻana iā Jenkins i loko o kahi pahu a pehea e hiki ai iā ia ke hana a holoi i nā pipelines ma o kahi docker daemon socket i hoʻouna ʻia i loko. Ua makemake au i ka manaʻo, akā ua hoʻoholo wau e hele hou a hoʻāʻo e hoʻokolohua me ka holo pololei ʻana iā Docker i loko o Docker. I kēlā manawa, manaʻo wau he hopena kūpono loa e hoʻoiho i nā kiʻi Docker a hana i nā ipu no nā noi āpau aʻu e pono ai no ka hoʻāʻo ʻana i loko o kahi pahu ʻē aʻe (e kapa mākou he pahu staging). ʻO ka manaʻo e hoʻomaka i kahi pahu hoʻokūkū me ka hae -rm, e hoʻopau koke i ka pahu holoʻokoʻa a me nā mea āpau i ka wā e pani ʻia ai. Hoʻopili wau me ke kiʻi Docker mai Docker ponoʻī (
E hoʻomaʻamaʻa. Cones
Ua hoʻomaka wau e hana i ka pahu e like me kaʻu e pono ai a hoʻomau i kaʻu mau hoʻokolohua, a ua hopena i ka nui o nā ʻōpuʻu. ʻO ka hopena o koʻu hoʻomāinoino ʻana iā ia iho ka algorithm penei:
-
Hoʻomaka mākou i ka pahu Docker ma ke ʻano pāʻani.
docker run --privileged -it docker:18.09.6
E noʻonoʻo i ke ʻano o ka ipu, e neʻe i ka ʻākau a i ʻole hema a lilo kāu DinD i ʻukena. ʻOiaʻiʻo, haki pinepine nā mea ke hoʻokuʻu ʻia kahi mana hou.
Pono mākou e komo koke i loko o ka pūpū. -
Ke hoʻāʻo nei mākou e ʻike i nā pahu e holo nei (Pane: ʻaʻohe), akā e holo mākou i ke kauoha:
docker ps
E kāhāhā iki ʻoe, akā ʻike ʻia ʻaʻole holo ka Docker daemon:
error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 192.168.65.1:53: no such host
-
E holo kakou ia kakou iho:
dockerd &
ʻO kekahi mea kupanaha maikaʻi ʻole:
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found
-
E hoʻouka i nā iptables a me nā pūʻolo bash (ʻoi aku ka maikaʻi o nā mea āpau i ka hana ma ka bash ma mua o ka sh):
apk add --no-cache iptables bash
-
E hoʻomaka kākou i ka bash. ʻO ka hope, hoʻi mākou i ka pūpū maʻamau
-
E hoʻāʻo e hoʻomaka hou iā Docker:
dockerd &
Pono mākou e ʻike i kahi pepa lōʻihi o nā lāʻau e pau ana me:
INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sock
-
E kaomi Enter. Ua hoʻi mākou i ka bash.
Mai kēia manawa, hiki iā mākou ke hoʻāʻo e hoʻolauna i nā pahu ʻē aʻe i loko o kā mākou pahu Docker, akā pehea inā makemake mākou e hoʻolauna i kahi pahu Docker hou i loko o kā mākou pahu Docker a i ʻole kekahi mea i hewa a hāʻule ka pahu? E hoʻomaka hou i nā mea a pau.
ʻO ka ipu DinD ponoʻī a me nā hoʻokolohua hou
I mea e pale ai i ka hana hou ʻana i nā ʻanuʻu ma luna aʻe, ua hana wau i kaʻu pahu DinD ponoʻī:
ʻO ka hoʻonā DinD hana i hāʻawi iaʻu i ka hiki ke holo Docker i loko o Docker me ka hana hou a hana i nā hoʻokolohua hou aku.
E wehewehe ana au i kahi hoʻokolohua (kūpono) me ka holo ʻana i MySQL a me Nodejs i kēia manawa.
Hiki i ka poʻe hoʻomanawanui ke ʻike i ke ʻano ma ʻaneʻi
No laila, e hoʻomaka:
-
Hoʻomaka mākou iā DinD ma ke ʻano pāʻani. Ma kēia mana o DinD, pono mākou e palapala lima lima i nā awa a pau i hiki i kā mākou mau ipu keiki ke hoʻohana (Ke hana nei au i kēia)
docker run --privileged -it -p 80:8080 -p 3306:3306 alekslitvinenk/dind
Hele mākou i loko o ka bash, mai kahi e hiki ai iā mākou ke hoʻomaka koke i ka hoʻokuʻu ʻana i nā ipu keiki.
-
E hoʻomaka i ka MySQL:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysql
-
Hoʻohui mākou i ka waihona ma ke ʻano like me ka hoʻopili ʻana iā ia ma ka ʻāina. E hōʻoia kākou e holo pono nā mea a pau.
-
E hoʻokuʻu i ka pahu lua:
docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-server
E ʻoluʻolu e hoʻomaopopo pono i ka palapala ʻāina awa 8080:8080, no ka mea, ua hoʻopaʻa mua mākou i ke awa 80 mai ka mea hoʻokipa i ka ipu makua i ke awa 8080.
-
Hele mākou i ka localhost i ka polokalamu kele pūnaewele, e hōʻoia i ka pane ʻana o ke kikowaena "Hello World!"
I koʻu hihia, ua maikaʻi ka hoʻokolohua me nā pahu Docker nested a e hoʻomau wau i ka hoʻomohala ʻana i ka papahana a hoʻohana iā ia no ka hoʻokūkū. Me he mea lā he ʻoi aku ka māmā o kēia ma mua o Kubernetes a me Jenkins X. Akā ʻo koʻu manaʻo kumu kēia.
Manaʻo wau ʻo ia wale nō ka ʻatikala o kēia lā. Ma ka ʻatikala aʻe e wehewehe au i nā hoʻokolohua kikoʻī me ka holo ʻana o Docker i Docker a me ka hoʻouka ʻana i nā papa kuhikuhi hohonu i loko o nā pahu nested.
PS Inā ʻike ʻoe he pono kēia papahana, e ʻoluʻolu e hāʻawi iā ia i hōkū ma GitHub, e ʻoki a haʻi i kāu mau hoaaloha.
Edit1 Hoʻoponopono ʻia nā hewa, kālele ʻia ma 2 wikiō
Source: www.habr.com