Kaj je Dockerfile in kako ustvariti Docker image?

Med delom na docker projektih večinoma obstoječe slike dockerjev ne bodo ustrezale vašim zahtevam.


Tu se pojavi slika Dockerfile; pomagal vam bo ustvariti slike Docker po meri. Zato je znanje o Dockerfile nujno.

Kaj je Dockerfile?

Je preprosta besedilna datoteka z nizom ukazov ali navodil. Ti ukazi / navodila se izvajajo zaporedno za izvajanje dejanj na osnovni sliki za ustvarjanje nove slike dockerja.

komentarji in ukazi + argumenti so dve vrsti glavnih vrstic v sintaksi Dockerfile

Sintaksa komentarjev

Št. Vrstice, ki se uporabljajo za komentiranje

argument argument ukaza1…..

Primer ukazov + argumentov

Št. Vrstice, ki se uporabljajo za komentiranje

argument argument ukaza1…..

Spodaj je, kako bo izgledal vaš potek dela.

  • Ustvari datoteko Dockerfile in omeni navodila za ustvarjanje slike dockerja
  • Zaženite ukaz za gradnjo dockerja, ki bo sestavil sliko dockerja
  • Zdaj je slika dockerja pripravljena za uporabo, uporabite ukaz docker run za ustvarjanje vsebnikov

dockerfile potek dela

Osnovni ukazi

OD – Določi osnovno sliko za uporabo in začetek postopka izdelave.

RUN – Za uvajanje s slike je potreben ukaz in njegovi argumenti.

CMD – Podobna funkcija kot ukaz RUN, vendar se izvrši šele, ko je vsebnik sprožen.

VSTOPNA TOČKA – Ko je ustvarjen vsebnik, cilja na vašo privzeto aplikacijo na sliki.

DODAJ – Kopira datoteke od vira do cilja (znotraj vsebnika).

ENV – Nastavi spremenljivke okolja.

Kako ustvariti Docker Image z Dockerfile?

Najprej ustvarimo Dockerfile.

[zaščitena e-pošta]: ~ $ gedit Dockerfile

Vanj vstavite spodnje ukaze / navodila in jih shranite.

# Osnovno sliko nastavite na Ubuntu
OD ubuntuja

# Posodobite seznam virov virov skladišča in namestite gnupg2
RUN apt-get update && apt-get install -y gnupg2

# Dodajte ključ za preverjanje paketa
RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

# Dodajte MongoDB na seznam virov virov
RUN echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

# Posodobite seznam virov virov
RUN apt-get update

# Namestite paket MongoDB (.deb)
RUN apt-get install -y mongodb

# Ustvari privzeti imenik podatkov
RUN mkdir -p / podatki / db

# Izpostavite privzeta vrata
IZPOSTAVLJENO 27017

# Privzeta vrata za izvajanje vhodne točke (MongoDB)
CMD ["–pristanišče 27017"]

# Nastavi privzeti ukaz posode
VSTOPI usr / bin / mongodb

V tem Dockerfileu je ubuntu nastavljen kot osnovna slika. Nato se navedejo potrebni ukazi in argumenti za namestitev MongoDB. Pristanišče 27017 je izpostavljeno MongoDB s privzetim ukazom vsebnika kot usr / bin / mongodb

Nato jo bom sprožil za ustvarjanje slike dockerja.

Zagon dockerfile

Naslednji ukaz bo po uspešni izvedbi ustvaril sliko dockerja, imenovano geekflare_mongodb.

[zaščitena e-pošta]: ~ $ docker build -t geekflare_mongodb .

Okvir za pošiljanje zgradbe dockerjevemu demonu 667,2 MB

Korak 1/9: OD ubuntuja

najnovejše: Povleci iz knjižnice / ubuntu

7413c47ba209: Potegnite dokončano

0fe7e7cbb2e8: Potegnite dokončano

1d425c982345: Potegnite dokončano

344da5c95cec: Potegnite dokončano

Digest: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

Status: Prenesena novejša slika za ubuntu: najnovejša

—> 3556258649b2

2. korak: RUN posodobitev apt-get && apt-get install -y gnupg2

—> Teče v de3706328761

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

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

Pridobljeno 16,9 MB v 38 sekundah (445 kB / s)

Branje seznamov paketov…

Branje seznamov paketov…

Gradnja drevesa odvisnosti…

Branje informacij o stanju…

Potrebno je dobiti 5187 kB arhivov.

Po tej operaciji bo uporabljenih 15,8 MB dodatnega prostora na disku.

Pridobite: 1 http://archive.ubuntu.com/ubuntu bionic / main amd64 readline-skupno vse 7.0-3 [52,9 kB]

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

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

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

debconf: zamujanje konfiguracije paketa, ker apt-utils ni nameščen

Pridobljenih 5187 kB v 12 s (416 kB / s)

Izbira predhodno neizbranega bralnika za skupno branje.

(Branje baze podatkov … 4040 datotek in imenikov je trenutno nameščeno.)

Priprava na razpakiranje … / 00-readline-common_7.0-3_all.deb …

Razpakiranje bralne vrvice – običajno (7.0-3) …

Izbira predhodno neizbranega paketa libreadline7: amd64.

Priprava na razpakiranje … / 01-libreadline7_7.0-3_amd64.deb …

Izbira predhodno neizbranega paketa dirmngr.

Nastavitev libnpth0: amd64 (1,5-3) …

Nastavitev libksba8: amd64 (1.3.5-2) …

Nastavitev gnupg-l10n (2.2.4-1ubuntu1.2) …

Obdelava sprožilcev za libc-bin (2,27-3ubuntu1) …

Odstranjevanje vmesne posode de3706328761

—> a32533894ed1

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

—> Teče v 69c4dba38983

Opozorilo: izhod ključa apt ne sme razčleniti (stdout ni terminal)

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

gpg: tipka 5F8F93707F0CEB10: javni ključ "Popolnoma zakonit ključ za podpisovanje <[zaščitena e-pošta]>" uvoženo

gpg: tipka 9ECBEC467F0CEB10: 1 podpis ni preverjen zaradi manjkajočega ključa

gpg: tipka 9ECBEC467F0CEB10: javni ključ "Richard Kreuter <[zaščitena e-pošta]>" uvoženo

gpg: Skupno število obdelanih: 2

gpg: uvoženo: 2

Odstranjevanje vmesne posode 69c4dba38983

—> cffbe06c1b50

Korak 4/10: RUN odmev “deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen” > tee /etc/apt/sources.list.d/mongodb.list

—> Teče v 40630fd7b0a9

Odstranjevanje vmesne posode 40630fd7b0a9

—> a1bd9d8d7e51

5. korak: RUN posodobitev apt-get

—> Teče v 750717d9c0ea

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

Hit: 2 http://archive.ubuntu.com/ubuntu bionic-posodobitve InRelease

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

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

Branje seznamov paketov…

Odstranjevanje vmesne posode 750717d9c0ea

—> 397d6501db58

6. korak: RUN apt-get install -y mongodb

—> Teče leta 88609c005e73

Branje seznamov paketov…

Gradnja drevesa odvisnosti…

Branje informacij o stanju…

Naslednji NOVI paketi bodo nameščeni:

libboost-filesystem1.65.1 libboost-iostreams.6.6.1

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

libpcap0.8 libpcrecpp0v5 libsnappy1v5 libstemmer0d libtcmalloc-minimal4

libunwind8 libyaml-cpp0.5v5 mongo-orodja mongodb mongodb-strank

mongodb-strežnik mongodb-server-core

0 nadgrajenih, 17 na novo nameščenih, 0 odstraniti in 0 ne nadgraditi.

Potrebno je dobiti 53,7 MB arhivov.

Po tej operaciji bo uporabljenih 218 MB dodatnega prostora na disku.

Pridobite: 1 http://archive.ubuntu.com/ubuntu bionic-updates / univerza amd64 mongodb-client amd64 1: 3.6.3-0ubuntu1.1 [20.2 MB]

Pridobite: 2 http://archive.ubuntu.com/ubuntu bionic-updates / univerza amd64 mongodb-jedro strežnika amd64 1: 3.6.3-0ubuntu1.1 [20.3 MB]

Pridobite: 3 http://archive.ubuntu.com/ubuntu bionic-updates / univerza amd64 mongodb-server vse 1: 3.6.3-0ubuntu1.1 [12,6 kB]

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

Pridobljenih 53,7 MB v 10 sekundah (5485 kB / s)

Izbira predhodno neizbranega paketa libpcap0.8: amd64.

(Branje baze podatkov … 4390 datotek in imenikov je trenutno nameščeno.)

Izbira predhodno neizbranih paketov mongodb-odjemalcev.

Priprava za odpakiranje … / 13-mongodb-clients_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Odpakiranje odjemalcev mongodb (1: 3.6.3-0ubuntu1.1) …

Izbira prej neizbranega paketa jedro mongodb-server-core.

Priprava za odpakiranje … / 14-mongodb-server-core_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Odpakiranje jedra mongodb-strežnika (1: 3.6.3-0ubuntu1.1) …

Izbira prej neizbranega paketa mongodb-strežnika.

Priprava za odpakiranje … / 15-mongodb-server_1% 3a3.6.3-0ubuntu1.1_all.deb …

Odpakiranje mongodb-strežnika (1: 3.6.3-0ubuntu1.1) …

Izbira prej neizbranega paketa mongodb.

Priprava za odpakiranje … / 16-mongodb_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Odpakiranje mongodb (1: 3.6.3-0ubuntu1.1) …

Nastavitev jedra mongodb-server-ja (1: 3.6.3-0ubuntu1.1) …

Nastavitev mongo-orodij (3.6.3-0ubuntu1) …

Nastavitev odjemalcev mongodb (1: 3.6.3-0ubuntu1.1) …

Nastavitev mongodb-strežnika (1: 3.6.3-0ubuntu1.1) …

invoke-rc.d: trenutne ravni teka ni bilo mogoče določiti

invoke-rc.d: policy-rc.d zavrnil izvedbo zagona.

Nastavitev mongodb (1: 3.6.3-0ubuntu1.1) …

Obdelava sprožilcev za libc-bin (2,27-3ubuntu1) …

Odstranjevanje vmesne posode 88609c005e73

—> d9c072cb1f84

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

—> Teče v f817778f69ab

Odstranjevanje vmesne posode f817778f69ab

—> a3fbdb3def5c

Korak 8/10: EXPOSE 27017

—> Teče v 8d070e2a1e07

Odstranjevanje vmesne posode 8d070e2a1e07

—> f770776a538c

9. korak: CMD ["–pristanišče 27017"]

—> Teče v ab612410df77

Odstranjevanje vmesne posode ab612410df77

—> e5830b80934f

Korak 10/10: VSTOPITE usr / bin / mongod

—> Teče v 95f574727aab

Odstranjevanje vmesne posode 95f574727aab

—> 095d17727ca0

Uspešno zgrajena 095d17727ca0

Geekflare_mongodb: najnovejše

Preverimo, ali je bila slika dockerja ustvarjena z imenom geekflare_mongodb.

[zaščitena e-pošta]: ~ $ docker slike

VELIKOST VELIKOSTI ID REZERZITORA TAG

geekflare_mongodb najnovejši 095d17727ca0 3 minute nazaj 325MB

ubuntu najnovejši 3556258649b2 pred 4 dnevi 64,2MB

mean_express najnovejši 35dcb3df9806 pred 6 dnevi 923MB

mean_angular najnovejši 9f8d61db600c pred 6 dnevi 1,29GB

Zaženite docker image geekflare_mongodb znotraj vsebnika mongo_container.

[zaščitena e-pošta]: ~ $ docker run – ime mongo_container -i -t geekflare_mongodb

2019-07-27T19: 38: 23.734 + 0000 KONTROLA [initandlisten] MongoDB start: pid = 6 port = 27017 dbpath = / data / db 64-bitni gostitelj = b0095c1e5536

2019-07-27T19: 38: 23.735 + 0000 KONTROLA [initandlisten] db različica v3.6.3

2019-07-27T19: 38: 23.735 + 0000 KONTROLA [initandlisten] git različica: 9586e557d54ef70f9ca4b43c26892cd55257e1a5

2019-07-27T19: 38: 23.736 + 0000 KONTROLA [initandlisten] Različica OpenSSL: OpenSSL 1.1.1 11. september 2018

2019-07-27T19: 38: 23.739 + 0000 KONTROLIM dodelitev [initandlisten]: tcmalloc

2019-07-27T19: 38: 23.739 + 0000 KONTROLE [initandlisten] modulov: noben

2019-07-27T19: 38: 23.739 + 0000 KONTROLA [initandlisten] gradbeno okolje:

2019-07-27T19: 38: 23.739 + 0000 KONTROLA [initandlisten] distarzija: x86_64

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

2019-07-27T19: 38: 23.739 + 0000 KONTROLA [initandlisten] možnosti: {}

2019-07-27T19: 38: 23.745 + 0000 SKLADIŠČENO [initandlisten] wiredtiger_open config: ustvari, cache_size = 2038M, session_max = 20000, izselitev = (nit_min = 4, niti_max = 4), config_base = false, statistika = (hitro) , log = (omogočeno = res, arhiv = resnično, pot = dnevnik, kompresor = snappy), file_manager = (close_idle_time = 100000), statistics_log = (čakanje = 0), verbose = (recovery_progress),

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

2019-07-27T19: 38: 24.734 + 0000 KONTROLA [initandlisten] ** OPOZORILO: Nadzor dostopa za bazo podatkov ni omogočen.

2019-07-27T19: 38: 24.735 + 0000 KONTROLA [initandlisten] ** Branje in pisanje dostopa do podatkov in konfiguracije je neomejeno..

2019-07-27T19: 38: 24.736 + 0000 KONTROLA [initandlisten] ** OPOZORILO: Ta postopek izvajate kot korenski uporabnik, kar ni priporočljivo.

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

2019-07-27T19: 38: 24.736 + 0000 KONTROLA [initandlisten] ** OPOZORILO: Ta strežnik je vezan na localhost.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Oddaljeni sistemi se ne bodo mogli povezati s tem strežnikom.

2019-07-27T19: 38: 24.737 + 0000 KONTROLA [initandlisten] ** Zaženite strežnik s –bind_ip, da določite, kateri IP

2019-07-27T19: 38: 24.737 + 0000 KONTROLA [initandlisten] ** naslovi, na katere naj se prikažejo odgovori od – ali z –bind_ip_all za

2019-07-27T19: 38: 24.737 + 0000 KONTROLA [initandlisten] ** veže na vse vmesnike. Če je takšno vedenje zaželeno, začnite postopek

2019-07-27T19: 38: 24.738 + 0000 KONTROLIM [initandlisten] ** strežnik z –bind_ip 127.0.0.1, da onemogočim to opozorilo.

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

2019-07-27T19: 38: 24.739 + 0000 SKLADIŠČENO [initandlisten] createCollection: admin.system.version s priloženim UUID: 4b8b509d-633a-46c1-a302-cb8c82b0d5d3

2019-07-27T19: 38: 24.788 + 0000 I KOMAND [initandlisten] funkcija nastavitveCompatibilityVersion to 3.6

2019-07-27T19: 38: 24.818 + 0000 SKLADIŠČEM [initandlisten] createCollection: local.startup_log z ustvarjenim UUID: 6c1c0366-4b1b-4b92-9fcd-d18acc126072

2019-07-27T19: 38: 24.862 + 0000 I FTDC [initandlisten] Zagon popolnega zajema diagnostičnih podatkov z imenikom ‘/data/db/diagnostic.data’

2019-07-27T19: 38: 24.866 + 0000 MREŽA [initandlisten] čaka na povezave na pristanišču 27017

Odprite nov terminal in preverite, ali se mongo_container izvaja.

[zaščitena e-pošta]: ~ $ docker ps

IMENA ID ID KONTEJNERA USTVARJENA STATUSNA PORTSKA IMENA

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin /…"   35 sekund nazaj gor 33 sekund 27017 / tcp mongo_container

Kot lahko vidite, je vsebnik, ustvarjen iz slike geekflare_mongodb, pripravljen in deluje.

Upam, da vam to predstavi dockerfile in njegove koristi. Ogledate si lahko tudi to dokumentacijo Dockerfile najboljše prakse če želite izvedeti več.

Oznake:

  • Docker

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map