Terwyl u aan die docker-projekte werk, sal die bestaande docker-beelde meestal nie aan u vereistes voldoen nie.


Dit is hier waar Dockerfile in die prentjie kom; dit sal u help om persoonlike Docker-beelde te skep. Daarom is kennis van Dockerfile noodsaaklik.

Wat is Dockerfile?

Dit is ‘n eenvoudige tekslêer met ‘n stel opdragte of instruksies. Hierdie opdragte / instruksies word opeenvolgend uitgevoer om aksies op die basisbeeld uit te voer om ‘n nuwe docker-beeld te skep.

opmerkings en opdragte + argumente is twee soorte hooflynblokke in die sintaksis van Dockerfile

Opmerkings sintaksis

# Lynblokke wat gebruik word vir kommentaar

opdrag argument argument1 …..

Opdragte + argumente Voorbeeld

# Lynblokke wat gebruik word vir kommentaar

opdrag argument argument1 …..

Hier is hoe u werkstroom sal lyk.

  • Skep ‘n Dockerfile en noem die instruksies om u docker-beeld te skep
  • Voer docker build opdrag uit wat ‘n docker image sal bou
  • Nou is die docker-prent gereed om gebruik te word, gebruik die docker-opdrag om houers te skep

dockerfile werkstroom

Basiese opdragte

VAN – Definieer die basisbeeld om te gebruik en begin met die bouproses.

RUN – Dit neem die opdrag en die argumente om dit vanaf die beeld te laat loop.

CMD – Soortgelyke funksie as ‘n RUN-opdrag, maar dit word uitgevoer slegs nadat die houer geïnstalleer is.

INSKRYWINGSPUNT – Dit is gerig op u standaardtoepassing op die prent wanneer die houer geskep word.

VOEG – Dit kopieer die lêers van bron na bestemming (binne-in die houer).

ENV – Stel omgewingsveranderlikes in.

Hoe om ‘n Docker-beeld met ‘n Dockerfile te skep?

Laat ons eerstens ‘n Dockerfile skep.

[Email protected]: ~ $ gedit Dockerfile

Plaas die opdragte / instruksies hieronder en stoor dit.

# Stel die basisbeeld op Ubuntu
UIT ubuntu

# Dateer die bronnelys van die bewaarplek op en installeer gnupg2
LOP apt-get update && geskik om te installeer -y gnupg2

# Voeg die pakketverifiëringsleutel by
RUN apt-key adv – keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

# Voeg MongoDB by die bronnelys van die bewaarplek
RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

# Dateer die bronlys van die bewaarplek op
LOP apt-get update

# Installeer MongoDB-pakket (.deb)
RUN apt-get install -y mongodb

# Skep die standaarddatagids
RUN mkdir -p / data / db

# Stel die standaardpoort bloot
BLOOTSTELLING 27017

# Standaardpoort om die toegangspunt uit te voer (MongoDB)
CMD ["–hawe 27017"]

# Stel die standaardhoueropdrag
ENTRYPOINT usr / bin / mongodb

In hierdie Dockerfile word ubuntu as die basisbeeld gestel. Dan word die nodige opdragte en argumente genoem om MongoDB te installeer. Port 27017 word blootgestel aan MongoDB met die standaardhoueropdrag as usr / bin / mongodb

Vervolgens sal ek dit uitvoer om ‘n docker-beeld te skep.

‘N Dockerfile bestuur

Die volgende opdrag skep ‘n docker-beeld genaamd geekflare_mongodb na suksesvolle uitvoering.

[Email protected]: ~ $ docker build -t geekflare_mongodb .

Stuur bou-konteks na Docker daemon 667.2MB

Stap 1/9: VANAF ubuntu

nuutste: Trek uit biblioteek / ubuntu

7413c47ba209: Trek voltooi

0fe7e7cbb2e8: Trek voltooi

1d425c982345: Trek voltooi

344da5c95cec: Trek voltooi

Vertering: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

Status: nuwer beeld vir ubuntu afgelaai: nuutste

—> 3556258649b2

Stap 2/10: RUN apt-get update && geskik om te installeer -y gnupg2

—> Begin in de3706328761

Kry: 1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88,7 kB]

Kry: 2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]

16,9 MB in 38’s (445 kB / s) gehaal

Leespakketlyste…

Leespakketlyste…

Bou afhanklikheid boom…

Lees inligting oor die staat…

Moet 5187 kB argiewe bekom word.

Na hierdie operasie word 15,8 MB ekstra skyfspasie gebruik.

Kry: 1 http://archive.ubuntu.com/ubuntu bionic / main amd64 readline-common all 7.0-3 [52.9 kB]

Kry: 2 http://archive.ubuntu.com/ubuntu bionic / main amd64 libreadline7 amd64 7.0-3 [124 kB]

Kry: 3 http://archive.ubuntu.com/ubuntu bionic-updates / main amd64 libsqlite3-0 amd64 3.22.0-1ubuntu0.1 [497 kB]

Kry: 4 http://archive.ubuntu.com/ubuntu bionic-updates / main amd64 libssl1.1 amd64 1.1.1-1ubuntu2.1 ~ 18.04.4 [1300 kB]

debconf: pakketkonfigurasie vertraag, aangesien apt-utils nie geïnstalleer is nie

5187 kB in 12s (416 kB / s) gehaal

Kies voorheen nie-gekose pakket readline-common.

(Lees databasis … 4040 lêers en kaarte word tans geïnstalleer.)

Berei voor om uit te pak … / 00-readline-common_7.0-3_all.deb …

Leeslyn-algemeen uitgepak (7.0-3) …

Die keuse van voorheen nie-gekose pakket libreadline7: amd64.

Berei voor om uit te pak … / 01-libreadline7_7.0-3_amd64.deb …

Die keuse van voorheen nie-gekose pakketdirmngr.

Opstel van libnpth0: amd64 (1.5-3) …

Opstel van libksba8: amd64 (1.3.5-2) …

Gnupg-l10n instel (2.2.4-1ubuntu1.2) …

Die verwerking van snellers vir libc-bin (2.27-3ubuntu1) …

Tussentydse houer verwyder de3706328761

—> a32533894ed1

Stap 3/10: RUN apt-key adv – keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

—> Hardloop in 69c4dba38983

Waarskuwing: die toepaslike sleutel-uitvoer moet nie ontleed word nie (stdout is nie ‘n terminale term nie)

Uitvoer: /tmp/apt-key-gpghome.MuT5BDWwKZ/gpg.1.sh –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

gpg: sleutel 5F8F93707F0CEB10: openbare sleutel "Heeltemal legit onderteken sleutel <[Email protected]>" ingevoer

gpg: sleutel 9ECBEC467F0CEB10: 1 handtekening nie nagegaan nie weens ‘n ontbrekende sleutel

gpg: sleutel 9ECBEC467F0CEB10: openbare sleutel "Richard Kreuter <[Email protected]>" ingevoer

gpg: Totale getal verwerk: 2

gpg: ingevoer: 2

Tussentydse houer verwyder 69c4dba38983

—> cffbe06c1b50

Stap 4/10: RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

—> Hardloop in 40630fd7b0a9

Tussenhouer 40630fd7b0a9 verwyder

—> a1bd9d8d7e51

Stap 5/10: RUN apt-get update

—> Hardloop in 750717d9c0ea

Treffer: 1 http://archive.ubuntu.com/ubuntu bionic InRelease

Treffer: 2 http://archive.ubuntu.com/ubuntu bionic-updates InRelease

Treffer: 3 http://security.ubuntu.com/ubuntu bionic-security InRelease

Treffer: 4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease

Leespakketlyste…

Tussenhouer 750717d9c0ea verwyder

—> 397d6501db58

Stap 6/10: RUN apt-get install -y mongodb

—> Hardloop in 88609c005e73

Leespakketlyste…

Bou afhanklikheid boom…

Lees inligting oor die staat…

Die volgende NUWE pakkette sal geïnstalleer word:

libboost-filesystem1.65.1 libboost-iostreams1.65.1

libboost-program-options1.65.1 libboost-system1.65.1 libgoogle-perftools4

libpcap0.8 libpcrecpp0v5 libsnappy1v5 libstemmer0d libtcmalloc-minimal4

libunwind8 libyaml-cpp0.5v5 mongo-gereedskap mongodb mongodb-kliënte

mongodb-bediener mongodb-bediener-kern

0 opgegradeer, 17 nuut geïnstalleer, 0 om te verwyder en 0 nie opgegradeer nie.

Moet 53,7 MB argiewe kry.

Na hierdie operasie word 218 MB ekstra skyfspasie gebruik.

Kry: 1 http://archive.ubuntu.com/ubuntu bionic-updates / heelal amd64 mongodb-kliënte amd64 1: 3.6.3-0ubuntu1.1 [20.2 MB]

Kry: 2 http://archive.ubuntu.com/ubuntu bionic-updates / universe amd64 mongodb-server-core amd64 1: 3.6.3-0ubuntu1.1 [20.3 MB]

Kry: 3 http://archive.ubuntu.com/ubuntu bionic-updates / heelal amd64 mongodb-server almal 1: 3.6.3-0ubuntu1.1 [12.6 kB]

Kry: 4 http://archive.ubuntu.com/ubuntu bionic-updates / heelal amd64 mongodb amd64 1: 3.6.3-0ubuntu1.1 [9968 B]

53,7 MB in tien’s gehaal (5485 kB / s)

Die keuse van voorheen nie-gekose pakket libpcap0.8: amd64.

(Lees databasis … 4390 lêers en kaarte is tans geïnstalleer.)

Die keuse van voorheen nie-gekose pakket-mongodb-kliënte.

Berei voor om uit te pak … / 13-mongodb-clients_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Die uitpak van mongodb-kliënte (1: 3.6.3-0ubuntu1.1) …

Die keuse van voorheen nie-gekose pakket mongodb-server-kern.

Berei voor om uit te pak … / 14-mongodb-server-core_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Uitpak van mongodb-bediener-kern (1: 3.6.3-0ubuntu1.1) …

Die keuse van voorheen nie-gekose pakket-mongodb-bediener.

Berei voor om uit te pak … / 15-mongodb-server_1% 3a3.6.3-0ubuntu1.1_all.deb …

Uitpak van mongodb-bediener (1: 3.6.3-0ubuntu1.1) …

Die keuse van voorheen nie-gekose pakket mongodb.

Berei voor om uit te pak … / 16-mongodb_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Uitpak van mongodb (1: 3.6.3-0ubuntu1.1) …

Installeer mongodb-bediener-kern (1: 3.6.3-0ubuntu1.1) …

Mongo-gereedskap instel (3.6.3-0ubuntu1) …

Die opstel van mongodb-kliënte (1: 3.6.3-0ubuntu1.1) …

Installeer mongodb-bediener (1: 3.6.3-0ubuntu1.1) …

invoke-rc.d: kon nie die huidige loopvlak bepaal nie

invoke-rc.d: policy-rc.d het die uitvoering van die begin geweier.

Opstel van mongodb (1: 3.6.3-0ubuntu1.1) …

Die verwerking van snellers vir libc-bin (2.27-3ubuntu1) …

Tussenhouer 88609c005e73 verwyder

—> d9c072cb1f84

Stap 7/10: RUN mkdir -p / data / db

—> Hardloop in f817778f69ab

Tussenhouer verwyder f817778f69ab

—> a3fbdb3def5c

Stap 8/10: BLOOTSTELLING 27017

—> Hardloop in 8d070e2a1e07

Tussentydse houer verwyder 8d070e2a1e07

—> f770776a538c

Stap 9/10: CMD ["–hawe 27017"]

—> Begin in ab612410df77

Tussenhouer verwyder ab612410df77

—> e5830b80934f

Stap 10/10: ENTRYPOINT usr / bin / mongod

—> Hardloop in 95f574727aab

Tussentydse houer 95f574727aab verwyder

—> 095d17727ca0

095d17727ca0 suksesvol gebou

Geekflare_mongodb is suksesvol gemerk: nuutste

Laat ons kyk of die afbeelding van die docker geskep is met die naam geekflare_mongodb.

[Email protected]: ~ $ docker-beelde

REPOSITORY LAG BEELD ID GESKAPTE GROOTTE

geekflare_mongodb nuutste 095d17727ca0 3 minute gelede 325MB

ubuntu nuutste 3556258649b2 4 dae gelede 64.2MB

mean_express nuutste 35dcb3df9806 6 dae gelede 923MB

mean_angular nuutste 9f8d61db600c 6 dae gelede 1.29 GB

Voer die docker-beeld geekflare_mongodb in ‘n houer mongo_container uit.

[Email protected]: ~ $ docker run – naam mongo_container -i -t geekflare_mongodb

2019-07-27T19: 38: 23.734 + 0000 I CONTROL [initandlisten] MongoDB begin: pid = 6 poort = 27017 dbpath = / data / db 64-bit host = b0095c1e5536

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] db version v3.6.3

2019-07-27T19: 38: 23.735 + 0000 I CONTROL [initandlisten] git-weergawe: 9586e557d54ef70f9ca4b43c26892cd55257e1a5

2019-07-27T19: 38: 23.736 + 0000 I CONTROL [initandlisten] OpenSSL-weergawe: OpenSSL 1.1.1 11 Sep 2018

2019-07-27T19: 38: 23.739 + 0000 I BEHEER [initandlisten] allocator: tcmalloc

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [modules]: geen

2019-07-27T19: 38: 23.739 + 0000 EK BEHEER [initandlisten] bou-omgewing:

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] distarch: x86_64

2019-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] target_arch: x86_64

2019-07-27T19: 38: 23.739 + 0000 EK BEHEER [initandlisten] opsies: {}

2019-07-27T19: 38: 23.745 + 0000 I STORAGE [initandlisten] wiredtiger_open config: create, cache_size = 2038M, session_max = 20000, uitsetting = (threads_min = 4, threads_max = 4), config_base = false, statistiek = (vinnig) , log = (enabled = true, argief = true, pad = joernaal, kompressor = pittig), file_manager = (close_idle_time = 100000), statistics_log = (wag = 0), verbose = (recovery_progress),

2019-07-27T19: 38: 24.733 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.734 + 0000 I CONTROL [initandlisten] ** WAARSKUWING: Toegangsbeheer is nie ingeskakel vir die databasis.

2019-07-27T19: 38: 24.735 + 0000 I CONTROL [initandlisten] ** Lees- en skryftoegang tot data en konfigurasie is onbeperk.

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten] ** WAARSKUWING: U voer hierdie proses aan as die wortelgebruiker, wat nie aanbeveel word nie.

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten] ** WAARSKUWING: Hierdie bediener is gebind aan localhost.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Afstandstelsels kan nie met hierdie bediener koppel nie.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Begin die bediener met –bind_ip om te spesifiseer watter IP

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** spreek dit aan om antwoorde van, of met –bind_ip_all te dien

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** bind aan alle koppelvlakke. As hierdie gedrag verlang word, begin dan die

2019-07-27T19: 38: 24.738 + 0000 I CONTROL [initandlisten] ** bediener met –bind_ip 127.0.0.1 om hierdie waarskuwing uit te skakel.

2019-07-27T19: 38: 24.738 + 0000 I CONTROL [initandlisten]

2019-07-27T19: 38: 24.739 + 0000 I STORAGE [initandlisten] createCollection: admin.system.version met voorsien UUID: 4b8b509d-633a-46c1-a302-cb8c82b0d5d3

2019-07-27T19: 38: 24.788 + 0000 I COMMAND [initandlisten] instelling funksie CompatibilityVersion to 3.6

2019-07-27T19: 38: 24.818 + 0000 I STORAGE [initandlisten] createCollection: local.startup_log met gegenereerde UUID: 6c1c0366-4b1b-4b92-9fcd-d18acc126072

2019-07-27T19: 38: 24.862 + 0000 I FTDC [initandlisten] Initiëring van voltydse diagnostiese datavaslegging met gids ‘/data/db/diagnostic.data’

2019-07-27T19: 38: 24.866 + 0000 I NETWERK [initandlisten] wag vir verbindings op hawe 27017

Maak ‘n nuwe terminale oop en kyk of mongo_container loop.

[Email protected]: ~ $ docker ps

HOUER-ID BEELDBESTUUR GEMAAKTE STATUS-PORTERNAME

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin / …"   35 sekondes gelede Op 33 sekondes 27017 / tcp mongo_container

Soos u kan sien, is die houer wat uit die geekflare_mongodb-prent geskep is, aan die gang.

Ek hoop dit gee u ‘n idee oor dockerfile en die voordele daarvan. U kan ook hierdie dokumentasie op Dockerfile beste praktyke om meer te leer.

Tags:

  • Docker

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me