{"id":31641,"date":"2019-10-31T21:42:19","date_gmt":"2019-10-31T18:42:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\/"},"modified":"2019-10-31T21:42:19","modified_gmt":"2019-10-31T18:42:19","slug":"docker-eto-igrushka-ili-net-ili-vsyo-taki-da","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","title":{"rendered":"\u00c4r Docker en leksak eller inte? Eller vad s\u00e4ger ni?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej alla!<\/p>\n<p><\/p>\n<p>Jag vill verkligen b\u00f6rja med \u00e4mnet direkt, men det \u00e4r b\u00e4ttre att f\u00f6rst ber\u00e4tta lite om min historia:<\/p>\n<p><\/p>\n<h2>Inledning<\/h2>\n<p><\/p>\n<p>Jag \u00e4r en programmerare med erfarenhet av att utveckla frontend singelsidesapplikationer, Scala\/Java och Node.js p\u00e5 servern. <\/p>\n<p><\/p>\n<p>Under en ganska l\u00e5ng tid (definitivt ett par \u2013 tre \u00e5r) har jag h\u00e5llit med om att Docker \u00e4r en gudag\u00e5va och \u00f6verhuvudtaget ett fantastiskt verktyg som alla utvecklare b\u00f6r veta hur man anv\u00e4nder. Och d\u00e4rmed f\u00f6ljer att varje utvecklare borde ha Docker installerat p\u00e5 sin lokala maskin. Faktum \u00e4r att titta p\u00e5 annonserna som publiceras p\u00e5 samma hh. I varannan finns det n\u00e4mnd Docker, och om du beh\u00e4rskar det \u00e4r det din konkurrensf\u00f6rdel \ud83d\ude09<\/p>\n<p><\/p>\n<p>P\u00e5 min v\u00e4g har jag st\u00f6tt p\u00e5 m\u00e5nga m\u00e4nniskor, med olika attityder till Docker och hans ekosystem. Vissa sa att det \u00e4r en bekv\u00e4m sak som garanterar plattformsoberoende. Andra f\u00f6rstod inte varf\u00f6r de skulle k\u00f6ra i containrar och vilken f\u00f6rdel som kom med det, medan de tredje helt enkelt sket i det och bara skrev kod och gick hem \u2013 jag avundas dem f\u00f6rresten \ud83d\ude42<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Anv\u00e4ndningsanledningar<\/h2>\n<p><\/p>\n<p>Varf\u00f6r anv\u00e4nde jag Docker? Antagligen av f\u00f6ljande sk\u00e4l:<\/p>\n<p><\/p>\n<ul>\n<li>starta databaser, 99% av applikationerna anv\u00e4nder dem<\/li>\n<li>starta Nginx f\u00f6r att distribuera frontend och proxy till backend<\/li>\n<li>jag kan paketera applikationen i en Docker-image, vilket g\u00f6r att min applikation fungerar \u00f6verallt d\u00e4r Docker finns, distributionsproblemet \u00e4r redan l\u00f6st<\/li>\n<li>service discovery ur l\u00e5dan, man kan skapa mikrotj\u00e4nster, varje container (ansluten till det gemensamma n\u00e4tverket) kan enkelt n\u00e5 en annan via alias, v\u00e4ldigt praktiskt<\/li>\n<li>\u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 &#171;\u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f&#187; \u0432 \u043d\u0435\u043c.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Vad jag alltid INTE gillade med Docker:<\/h2>\n<p><\/p>\n<ul>\n<li>f\u00f6r att f\u00e5 min applikation att fungera kr\u00e4vs sj\u00e4lva Docker p\u00e5 servern. Men varf\u00f6r skulle jag beh\u00f6va det n\u00e4r mina applikationer redan k\u00f6rs p\u00e5 JRE eller Node.js och milj\u00f6n f\u00f6r dem finns redan p\u00e5 servern?<\/li>\n<li>om jag vill k\u00f6ra min (privata) lokalt byggda image p\u00e5 en fj\u00e4rrserver, beh\u00f6ver jag ett eget Docker-repo, jag m\u00e5ste ha en registry som k\u00f6rs n\u00e5gonstans och dessutom beh\u00f6ver jag konfigurera https, eftersom Docker CLI endast fungerar \u00f6ver https. \u00c5h, fan\u2026 det finns ju alternativ, sj\u00e4lvklart, f\u00f6r att spara imagen lokalt och <code>docker save<\/code> \u0438 \u0447\u0435\u0440\u0435\u0437 scp \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0438\u043d\u0443\u0442\u044c \u043e\u0431\u0440\u0430\u0437\u2026 \u041d\u043e \u044d\u0442\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043b\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439. \u0418 \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 &#171;\u043a\u043e\u0441\u0442\u044b\u043b\u044c\u043d\u044b\u043c&#187; \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0432\u043e\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/li>\n<li><code>docker-compose<\/code>. Den beh\u00f6vs bara f\u00f6r att k\u00f6ra containrar. Och det \u00e4r allt. Mer \u00e4n s\u00e5 kan den inte. <code>Docker-compose<\/code> har massor av versioner av sina filer, sin egen syntax. Hur deklarativ den \u00e4n \u00e4r, vill jag inte l\u00e4sa deras dokumentation. Jag kommer inte att beh\u00f6va den n\u00e5gon annanstans.<\/li>\n<li>n\u00e4r man arbetar i team skriver i de flesta fall folk Dockerfile p\u00e5 ett klumpigt s\u00e4tt, f\u00f6rst\u00e5r inte hur caching fungerar, l\u00e4gger till allt som beh\u00f6vs och inte beh\u00f6vs i bilden, \u00e4rver fr\u00e5n bilder som inte finns p\u00e5 dockerhub eller i det privata arkivet, skapar n\u00e5got <code>docker-compose<\/code> \u0444\u0430\u0439\u043b\u044b \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0438\u0440\u0443\u044e\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0433\u043e\u0440\u0434\u043e \u0437\u0430\u044f\u0432\u043b\u044f\u044e\u0442, \u0447\u0442\u043e docker \u043a\u0440\u0443\u0442, \u0443 \u043d\u0438\u0445 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0438 HR \u0432\u0430\u0436\u043d\u043e \u043f\u0438\u0448\u0435\u0442 \u0432 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438: &#171;\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c docker \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0441 \u0442\u0430\u043a\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b&#187;<\/li>\n<li>f\u00f6rf\u00f6ljer alltid tankar om att k\u00f6ra allt i docker: postgresql, kafka, redis. Tyv\u00e4rr fungerar inte allt i containrar, inte allt \u00e4r l\u00e4tt att konfigurera och starta. Det st\u00f6ds av tredjepartsutvecklare, inte av leverant\u00f6rerna sj\u00e4lva. Och f\u00f6rresten, uppst\u00e5r genast fr\u00e5gan, om leverant\u00f6rerna inte bryr sig om att st\u00f6dja sina produkter i docker, varf\u00f6r g\u00f6r de inte det, kanske vet de n\u00e5got?<\/li>\n<li>uppst\u00e5r alltid en fr\u00e5ga om persistens av containerdata. Och h\u00e4r t\u00e4nker man, ska jag bara montera en v\u00e4rddirektory eller skapa ett docker-volume eller g\u00f6ra en data-container som nu <code>deprecated<\/code>? \u0415\u0441\u043b\u0438 \u044f \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e uid \u0438 gid \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0438\u043d\u0430\u0447\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 root. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <code>volym<\/code> data helt enkelt kommer att skapas i n\u00e5got <code>\/usr\/*<\/code> \u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0441 uid \u0438 gid \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0448\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: &#171;\u0430 \u0432 \u043a\u0430\u043a\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u0438\u0448\u0435\u0442 \u0444\u0430\u0439\u043b\u044b?&#187;<\/li>\n<\/ul>\n<p>Jag har alltid ogillat att man m\u00e5ste sl\u00f6sa s\u00e5 mycket tid p\u00e5 docker. <strong>i b\u00f6rjan<\/strong>: jag kom p\u00e5 hur man k\u00f6r containrar, fr\u00e5n vilka bilder man ska starta, gjorde Makefile som inneh\u00f6ll aliaser till l\u00e5nga docker-kommandon. Jag kunde inte st\u00e5 ut med docker-compose, f\u00f6r jag ville inte l\u00e4ra mig ett ytterligare verktyg inom docker-ekosystemet. Och <code>docker-compose up<\/code> det oroade mig, s\u00e4rskilt om det ocks\u00e5 d\u00f6k upp <code>build<\/code> konstruktioner ist\u00e4llet f\u00f6r redan byggda bilder. Det som jag verkligen ville - var att g\u00f6ra produkten effektivt och snabbt. Men jag kunde inte f\u00e5 ordning p\u00e5 anv\u00e4ndningen av docker.<\/p>\n<p><\/p>\n<h2>Bekantskap med Ansible<\/h2>\n<p><\/p>\n<p>Nyligen (f\u00f6r tre m\u00e5nader sedan) arbetade jag med ett DevOps-team, n\u00e4stan varje medlem av teamet hade en negativ inst\u00e4llning till docker. Av sk\u00e4l:<\/p>\n<p><\/p>\n<ul>\n<li>docker p\u00e5verkar iptables (\u00e4ven om man kan st\u00e4nga av det i daemon.json)<\/li>\n<li>Docker \u00e4r n\u00f6dv\u00e4ndig, men vi kommer inte att k\u00f6ra det i produktion.<\/li>\n<li>Om Docker-daemonen kraschar, s\u00e5 kraschar sj\u00e4lvklart alla containrar med infrastrukturen.<\/li>\n<li>Det finns ingen n\u00f6dv\u00e4ndighet f\u00f6r Docker.<\/li>\n<li>Varf\u00f6r anv\u00e4nda Docker n\u00e4r det finns Ansible och virtuella maskiner?<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00e5 samma jobb st\u00f6tte jag p\u00e5 ett annat verktyg \u2013 Ansible. Jag hade h\u00f6rt talas om det tidigare, men jag hade inte provat att skriva mina egna playbooks. Nu har jag b\u00f6rjat skriva mina uppgifter och min syn p\u00e5 verktyget har \u00e4ndrats radikalt! F\u00f6r jag ins\u00e5g att Ansible har moduler f\u00f6r att k\u00f6ra samma Docker-containrar, bygga bilder, n\u00e4tverk med mera, och dessutom kan containrar startas inte bara lokalt utan \u00e4ven p\u00e5 fj\u00e4rrservrar! Min gl\u00e4dje var gr\u00e4nsl\u00f6s \u2013 jag hade hittat ett RIKTIGT verktyg och kastade bort mina Makefile- och docker-compose-filer, de ersattes av yaml-uppgifter. Koden minskades tack vare anv\u00e4ndningen av konstruktioner som <code>loop<\/code>, <code>when<\/code>, etc.<\/p>\n<p><\/p>\n<h2>Docker f\u00f6r att k\u00f6ra tredjepartskomponenter som databaser.<\/h2>\n<p><\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0441\u044f \u0441 ssh \u0442\u0443\u043d\u0435\u043b\u044f\u043c\u0438. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e &#171;\u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c&#187; \u043f\u043e\u0440\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0440\u0442. \u0423\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u0442\u0430\u043a \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439 \u0432 VirtualBox. \u0415\u0441\u043b\u0438 \u043c\u043d\u0435 \u0438\u043b\u0438 \u043c\u043e\u0435\u043c\u0443 \u043a\u043e\u043b\u043b\u0435\u0433\u0435 \u043d\u0443\u0436\u043d\u0430 \u0431\u0434 (\u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0439 \u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442), \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c \u0438 \u0437\u0430\u0433\u0430\u0441\u0438\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u044d\u0444\u0444\u0435\u043a\u0442, \u043a\u0430\u043a \u0438 \u0431\u0434, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u0430\u044f \u0432 docker \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435.<\/p>\n<p><\/p>\n<p>Detta kommando vidarebefordrar min lokala port till en fj\u00e4rrserver med PostgreSQL:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>Att anv\u00e4nda en fj\u00e4rrserver l\u00f6ser problemet med utveckling i team. Flera utvecklare kan anv\u00e4nda samma server, de beh\u00f6ver inte kunna konfigurera PostgreSQL, f\u00f6rst\u00e5 sig p\u00e5 Docker och andra kr\u00e5ngligheter. P\u00e5 fj\u00e4rrservern kan man installera samma databas i Docker om det \u00e4r sv\u00e5rt att installera en specifik version. Det enda som utvecklarna beh\u00f6ver \u00e4r SSH-\u00e5tkomst!<\/p>\n<p><\/p>\n<p>Jag l\u00e4ste nyligen att SSH-tunnlar har begr\u00e4nsad funktionalitet j\u00e4mf\u00f6rt med en vanlig VPN! Man kan enkelt st\u00e4lla in OpenVPN eller andra VPN-implementeringar, konfigurera infrastrukturen och ge den till utvecklarna. Det \u00e4r ju s\u00e5 fantastiskt!<\/p>\n<p><\/p>\n<p>Lyckligtvis erbjuder AWS, GoogleCloud och andra ett \u00e5r av gratis anv\u00e4ndning, s\u00e5 anv\u00e4nd dem! De \u00e4r billiga om du st\u00e4nger av dem n\u00e4r de inte anv\u00e4nds. Jag har alltid undrat i vilka syften jag skulle beh\u00f6va en fj\u00e4rrserver som gcloud, verkar som om jag har hittat det.<\/p>\n<p><\/p>\n<p>Som virtuell maskin p\u00e5 lokal k\u00f6rning kan man anv\u00e4nda samma Alpine som aktivt anv\u00e4nds i dockercontainrar. Eller andra l\u00e4ttviktsdistributioner f\u00f6r att f\u00e5 maskinen att starta snabbare.<\/p>\n<p><\/p>\n<p>Slutsats: det g\u00e5r bra att k\u00f6ra databaser och andra infrastrukturella komponenter p\u00e5 fj\u00e4rrservrar eller i virtualbox. Jag beh\u00f6ver inte docker f\u00f6r dessa \u00e4ndam\u00e5l.<\/p>\n<p><\/p>\n<h2>Lite om dockerbilder och distribution<\/h2>\n<p><\/p>\n<p>Jag har redan skrivit <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/443136\/\">artikeln<\/a><\/noindex> d\u00e4r jag ville f\u00f6rmedla att anv\u00e4ndningen av dockerbilder inte ger n\u00e5gra garantier. Dockerbilder beh\u00f6vs bara f\u00f6r att skapa dockercontainrar. Om du f\u00f6rlitar dig p\u00e5 dockerbilder, betyder det att du f\u00f6rlitar dig p\u00e5 anv\u00e4ndning av dockercontainrar och du kommer bara att jobba med dem.<\/p>\n<p><\/p>\n<p>Har du sett n\u00e5gonstans d\u00e4r mjukvaruutvecklare portat sina produkter endast i dockerbilder?<br \/>\nResultatet f\u00f6r de flesta produkter \u00e4r bin\u00e4ra filer f\u00f6r en specifik plattform, som bara l\u00e4ggs till i dockerbilden som h\u00e4rstammar fr\u00e5n den plattform som beh\u00f6vs. Har du n\u00e5gonsin undrat varf\u00f6r det finns s\u00e5 m\u00e5nga liknande bilder p\u00e5 dockerhub? S\u00f6k till exempel p\u00e5 nginx, du kommer att se 100500 bilder fr\u00e5n olika personer. Dessa personer har inte utvecklat nginx sj\u00e4lva, de har bara lagt till officiell nginx i sin dockerbild och anpassat den med sina egna konfigurationer f\u00f6r att g\u00f6ra starten av containrar mer bekv\u00e4m. <\/p>\n<p><\/p>\n<p>I allm\u00e4nhet kan man lagra dem i tgz, om n\u00e5gon beh\u00f6ver k\u00f6ra detta i docker, s\u00e5 kan de l\u00e4gga till tgz i Dockerfile, h\u00e4rstamma fr\u00e5n den n\u00f6dv\u00e4ndiga milj\u00f6n och skapa ytterligare funktioner som inte \u00e4ndrar sj\u00e4lva applikationen i tgz. Den som skapar dockerbilden kommer att veta vad detta tgz \u00e4r och vad som beh\u00f6vs f\u00f6r att det ska fungera. S\u00e5 h\u00e4r anv\u00e4nder jag docker. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kondaurovDev\/dockerfile\">). Ett typiskt exempel p\u00e5 anv\u00e4ndning:<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Slutsats: jag beh\u00f6ver ingen docker registry, jag anv\u00e4nder n\u00e5gon S3 eller bara en fillagringstj\u00e4nst som google drive\/dropbox.<\/p>\n<p><\/p>\n<h2>Docker i CI<\/h2>\n<p><\/p>\n<p>Alla f\u00f6retag jag har arbetat p\u00e5 liknar varandra. De \u00e4r oftast produktf\u00f6retag. Det vill s\u00e4ga att de har en applikation, en teknikstack (kanske en eller tv\u00e5 programmeringsspr\u00e5k).<\/p>\n<p><\/p>\n<p>Dessa f\u00f6retag anv\u00e4nder Docker p\u00e5 sina servrar d\u00e4r CI-processen k\u00f6rs. Fr\u00e5gan \u00e4r \u2014 varf\u00f6r beh\u00f6va bygga projekt i en Docker-container p\u00e5 sina servrar? Varf\u00f6r inte bara f\u00f6rbereda en milj\u00f6 f\u00f6r bygget, till exempel skriva en Ansible-playbook som installerar de versioner av Node.js, PHP, JDK som beh\u00f6vs och kopierar SSH-nycklar osv. till servern d\u00e4r bygget ska ske? <\/p>\n<p><\/p>\n<p>Nu f\u00f6rst\u00e5r jag att detta \u00e4r att skjuta sig sj\u00e4lv i foten, eftersom Docker inte ger n\u00e5got v\u00e4rde med sin isolation. Problema med CI i Docker som jag har st\u00f6tt p\u00e5:<\/p>\n<p><\/p>\n<ul>\n<li>\u00e5terigen beh\u00f6vs en Docker-avbildning f\u00f6r bygget. Man m\u00e5ste leta r\u00e4tt p\u00e5 en avbildning eller skriva sin egen Dockerfile.<\/li>\n<li>90 % av tiden m\u00e5ste man vidarebefordra n\u00e5gon slags SSH-nycklar, hemliga data som man inte vill skriva i Docker-avbildningen.<\/li>\n<li>Containern skapas och d\u00f6r, alla cachar g\u00e5r f\u00f6rlorade tillsammans med den. N\u00e4sta byggprocess kommer att ladda ner alla projektberoenden igen, och det tar l\u00e5ng tid och \u00e4r ineffektivt, och tid \u00e4r pengar.<\/li>\n<\/ul>\n<p><\/p>\n<p>Utvecklare bygger inte projekt i Docker-containrar (jag var en g\u00e5ng en s\u00e5dan fanatiker, synd om mitt tidigare jag xD). I Java finns m\u00f6jligheten att ha flera versioner och byta med ett kommando till den som beh\u00f6vs just nu. I Node.js \u00e4r det samma, d\u00e4r finns NVM.<\/p>\n<p><\/p>\n<h2>Utdata<\/h2>\n<p><\/p>\n<p>\u042f \u0441\u0447\u0438\u0442\u0430\u044e \u0447\u0442\u043e docker \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u0449\u043d\u044b\u0439 \u0438 \u0433\u0438\u0431\u043a\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0432 \u044d\u0442\u043e\u043c \u0435\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a (\u0437\u0432\u0443\u0447\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0434\u0430). \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043b\u0435\u0433\u043a\u043e &#171;\u043f\u043e\u0434\u0441\u0430\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f&#187; \u043d\u0430 \u043d\u0435\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043a\u0430\u043a\u043e\u0435 \u0442\u043e \u0441\u0432\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0442\u043e\u043c \u044d\u0442\u043e \u0432\u0441\u0435 \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0442\u0435\u043a\u0430\u0435\u0442 \u0432 CI, \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d. DevOps \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0438\u0448\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b.<\/p>\n<p><\/p>\n<p>Anv\u00e4nd Docker endast i <strong>det absolut senaste<\/strong> steget i din arbetsprocess, dra inte in det i projektet i b\u00f6rjan. Det kommer inte att l\u00f6sa dina aff\u00e4rsproblem. Det kommer endast att skjuta problemen till en ANNAN niv\u00e5 och erbjuda sina l\u00f6sningar, och du kommer att g\u00f6ra dubbelt arbete.<\/p>\n<p><\/p>\n<p><strong><em>N\u00e4r Docker \u00e4r beh\u00f6vligt<\/em><\/strong>: jag har kommit fram till att Docker \u00e4r v\u00e4ldigt bra f\u00f6r att optimera den etablerade processen men inte f\u00f6r att bygga grundl\u00e4ggande funktionalitet.<\/p>\n<p><\/p>\n<p>Om du \u00e4nd\u00e5 har beslutat att anv\u00e4nda Docker, s\u00e5:<\/p>\n<p><\/p>\n<ul>\n<li>var extremt f\u00f6rsiktig<\/li>\n<li>tvinga inte anv\u00e4ndningen av Docker p\u00e5 utvecklarna<\/li>\n<li>lokalisera anv\u00e4ndningen till en specifik plats, sprid inte ut Dockerfile och docker-compose \u00f6ver alla repositorier.<\/li>\n<\/ul>\n<p><\/p>\n<p>PS:<\/p>\n<p><\/p>\n<ul>\n<li>Jag st\u00f6tte nyligen p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.packer.io\/\">packer<\/a><\/noindex> och de s\u00e4ger att han fungerar mycket bra med Ansible och g\u00f6r det m\u00f6jligt att standardisera processen f\u00f6r att bygga bilder (inklusive docker image)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">ocks\u00e5 om docker, intressant artikel<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Tack f\u00f6r att du l\u00e4ste, jag \u00f6nskar dig transparenta l\u00f6sningar i dina aff\u00e4rer och produktiva arbetsdagar!<\/p>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445914\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, scala\/java \u0438 nodejs \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e (\u0443\u0436\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0443 \u2014 \u0442\u0440\u043e\u0439\u043a\u0443 \u043b\u0435\u0442), \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043c\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e docker \u044d\u0442\u043e \u043c\u0430\u043d\u043d\u0430 \u043d\u0435\u0431\u0435\u0441\u043d\u0430\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31641","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:42:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:19+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Docker \u2014 \u00e4r det en leksak eller inte? Eller \u00e4r det faktiskt s\u00e5?","description":"Hej allihopa! Jag vill j\u00e4tteg\u00e4rna b\u00f6rja med \u00e4mnet direkt, men det \u00e4r b\u00e4ttre att f\u00f6rst ber\u00e4tta lite om min historia: Inledning Jag \u00e4r programmerare med erfarenhet av frontend-utveckling.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:42:19+00:00","article:modified_time":"2019-10-31T18:42:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31641","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 07:08:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:13:28","updated":"2026-01-21 07:08:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=31641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/31641\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=31641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=31641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=31641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}