Què és Dockerfile i com crear una imatge Docker?

Mentre treballem en projectes de docker, la majoria de les vegades, les imatges de docker existents no compleixen els vostres requisits.


Aquí és on entra a la imatge Dockerfile; us ajudarà a crear imatges Docker personalitzades. Per tant, el coneixement de Dockerfile és fonamental.

Què és Dockerfile?

És un fitxer de text senzill amb un conjunt d’ordres o instruccions. Aquestes ordres / instruccions s’executen successivament per realitzar accions a la imatge base per crear una nova imatge docker.

els comentaris i les ordres + arguments són dos tipus de blocs de línia principals en la sintaxi de Dockerfile

Comentaris Sintaxi

# Línies utilitzades per fer comentaris

argument argument argument1 …..

Exemple d’ordres i arguments

# Línies utilitzades per fer comentaris

argument argument argument1 …..

A continuació, es mostrarà el flux de treball.

  • Creeu un Dockerfile i mencioneu les instruccions per crear la vostra imatge docker
  • Executeu l’ordre de docker build que crearà una imatge docker
  • Ara la imatge del docker està a punt per utilitzar-la, utilitzeu l’ordre docker run per crear contenidors

flux de treball dockerfile

Comandes bàsiques

DE – Defineix la imatge base a utilitzar i inicia el procés de creació.

CORRER – Pren la comanda i els seus arguments per executar-la des de la imatge.

CMD – Funció similar a una ordre RUN, però només s’executa després d’inicialitzar el contenidor.

PUNT D’ENTRADA – Orienta la vostra aplicació predeterminada a la imatge quan es crea el contenidor.

AFEGIR – Copia els fitxers de la font a la destinació (dins del contenidor).

ENV – Estableix variables d’entorn.

Com crear una imatge Docker amb un document dockerfile?

En primer lloc, creem un Dockerfile.

[correu electrònic protegit]: ~ $ gedit Dockerfile

Escriviu-hi les ordres / instruccions següents i guardeu-les.

# Estableix la imatge base a Ubuntu
DE ubuntu

# Actualitzeu la llista de fonts del repositori i instal·leu gnupg2
Actualitza RUN apt-get RUN && apt-get install -y gnupg2

# Afegir la clau de verificació del paquet
RUN apt-key adv –keyserver hkp: //keyserver.ubuntu.com: 80 –recv 7F0CEB10

# Afegeix MongoDB a la llista de fonts del repositori
RUN eco ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > tee /etc/apt/sources.list.d/mongodb.list

# Actualitzar la llista de fonts del repositori
Actualitza RUN apt-get RUN

# Instal·leu el paquet MongoDB (.deb)
RUN apt-get install -y mongodb

# Creeu el directori de dades predeterminat
RUN mkdir -p / data / db

# Exposar el port predeterminat
EXPOSAR 27017

# Port per defecte per executar el punt d’entrada (MongoDB)
CMD ["–port 27017"]

# Estableix l’ordre del contenidor per defecte
ENTRYPOINT usr / bin / mongodb

En aquest Dockerfile, ubuntu es defineix com a imatge base. A continuació, s’esmenten les ordres i els arguments necessaris per instal·lar MongoDB. El port 27017 està exposat a MongoDB amb l’ordre de contenidor predeterminat com a usr / bin / mongodb

A continuació, la executaré per crear una imatge docker.

Execució d’un fitxer Dockerfile

La següent comanda crearà una imatge docker anomenada geekflare_mongodb després de l’execució correcta.

[correu electrònic protegit]: ~ $ docker build -t geekflare_mongodb .

S’està enviant el context de creació al dimoni Docker 667.2MB

Pas 1/9: DE ubuntu

més recent: Tirant de biblioteca / ubuntu

7413c47ba209: Estira complet

0fe7e7cbb2e8: Estireu completats

1d425c982345: Tirada completa

344da5c95cec: Estira complet

Digest: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

Estat: S’ha descarregat la imatge més recent per a ubuntu: la més recent

—> 3556258649b2

Pas 2/10: RUN actualització apt-get RUN && apt-get install -y gnupg2

—> S’executa el de3706328761

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

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

Obtingut 16,9 MB en 38s (445 kB / s)

Lectura de llistes de paquets…

Lectura de llistes de paquets…

Arbre de dependència de construcció…

Lectura d’informació de l’estat…

Necessiteu obtenir 5187 kB d’arxius.

Després d’aquesta operació, s’utilitzaran 15,8 MB d’espai de disc addicional.

Obteniu: 1 http://archive.ubuntu.com/ubuntu bionic / main amd64 readline-common all 7.0-3 [52,9 kB]

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

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

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

debconf: retarda la configuració del paquet, ja que no està instal·lat apt-utils

Obtingut 5187 kB en 12s (416 kB / s)

Selecció de comú de línia en línia de paquet no seleccionat anteriorment.

(Base de dades de lectura … 4040 fitxers i directoris instal·lats actualment.)

Preparant-se per desembalar … / 00-readline-common_7.0-3_all.deb …

Desempaquetar el comú en línia (7.0-3) …

Selecció del paquet no seleccionat anteriorment libreadline7: amd64.

Preparant-se per desembalar … / 01-libreadline7_7.0-3_amd64.deb …

Seleccionant el paquet dirmngr prèviament no seleccionat.

Configuració de libnpth0: amd64 (1.5-3) …

Configuració de libksba8: amd64 (1.3.5-2) …

Configuració de gnupg-l10n (2.2.4-1ubuntu1.2) …

Processament de desencadenants de libc-bin (2.27-3ubuntu1) …

Eliminació del contenidor intermedi de3706328761

—> a32533894ed1

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

—> Execució a 69c4dba38983

Avís: no s’ha d’analitzar la sortida de la clau apte (stdout no és un terminal)

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

gpg: clau 5F8F93707F0CEB10: clau pública "Clau de signatura totalment legal <[correu electrònic protegit]>" importat

gpg: clau 9ECBEC467F0CEB10: no s’ha verificat una signatura a causa d’una clau que falta

gpg: clau 9ECBEC467F0CEB10: clau pública "Richard Kreuter <[correu electrònic protegit]>" importat

gpg: nombre total processat: 2

gpg: importat: 2

Eliminació del contenidor intermedi 69c4dba38983

—> cffbe06c1b50

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

—> S’executa el 40630fd7b0a9

Eliminació del contenidor intermedi 40630fd7b0a9

—> a1bd9d8d7e51

Pas 5/10: RUN actualització apt-get RUN

—> Funcionament al 750717d9c0ea

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

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

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

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

Lectura de llistes de paquets…

Eliminació del contenidor intermedi 750717d9c0ea

—> 397d6501db58

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

—> S’executa al 88609c005e73

Lectura de llistes de paquets…

Arbre de dependència de construcció…

Lectura d’informació de l’estat…

S’instal·laran els paquets NOUS següents:

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-tools mongodb mongodb-clients

mongodb-server mongodb-server-core

0 actualitzats, 17 recent instal·lats, 0 eliminats i 0 no actualitzats.

Necessiteu obtenir 53,7 MB d’arxius.

Després d’aquesta operació, s’utilitzaran 218 MB d’espai de disc addicional.

Obteniu: 1 http://archive.ubuntu.com/ubuntu bionic-Updates / univers amd64 mongodb-clients amd64 1: 3.6.3-0ubuntu1.1 [20.2 MB]

Obteniu: 2 http://archive.ubuntu.com/ubuntu bionic-Updates / univers amd64 mongodb-server-core amd64 1: 3.6.3-0ubuntu1.1 [20,3 MB]

Obteniu: 3 http://archive.ubuntu.com/ubuntu bionic-Updates / univers amd64 mongodb-servidor tot 1: 3.6.3-0ubuntu1.1 [12,6 kB]

Obteniu: 4 http://archive.ubuntu.com/ubuntu bionic-Updates / univers amd64 mongodb amd64 1: 3.6.3-0ubuntu1.1 [9968 B]

Obtingut 53,7 MB en 10 s (5485 kB / s)

Selecció del paquet no seleccionat anteriorment libpcap0.8: amd64.

(Base de dades de lectura … 4390 fitxers i directoris instal·lats actualment.)

Selecció de paquets mongodb-clients prèviament no seleccionats.

Preparació per desembalar … / 13-mongodb-clients_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Desempaquetem els clients mongodb (1: 3.6.3-0ubuntu1.1) …

Selecció del paquet mongodb-server-core prèviament no seleccionat.

Preparant-se per desempaquetar … / 14-mongodb-server-core_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

Desempaquetant mongodb-server-core (1: 3.6.3-0ubuntu1.1) …

Selecció del paquet mongodb-server prèviament no seleccionat.

Preparant-se per desempaquetar … / 15-mongodb-server_1% 3a3.6.3-0ubuntu1.1_all.deb …

Desempaquetem el servidor mongodb (1: 3.6.3-0ubuntu1.1) …

Seleccionant mongodb del paquet no seleccionat anteriorment.

Preparació per desembalar … / 16-mongodb_1% 3a3.6.3-0ubuntu1.1_amd64.deb …

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

Configuració del mongodb-server-core (1: 3.6.3-0ubuntu1.1) …

Configuració de mongo-tools (3.6.3-0ubuntu1) …

Configuració de clients mongodb (1: 3.6.3-0ubuntu1.1) …

Configuració del servidor mongodb (1: 3.6.3-0ubuntu1.1) …

invoke-rc.d: no ha pogut determinar el nivell d’execució actual

invoke-rc.d: policy-rc.d denegà l’execució de l’inici.

Configuració de mongodb (1: 3.6.3-0ubuntu1.1) …

Processament de desencadenants de libc-bin (2.27-3ubuntu1) …

Eliminació del contenidor intermedi 88609c005e73

—> d9c072cb1f84

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

—> Execució a f817778f69ab

Eliminació del contenidor intermedi f817778f69ab

—> a3fbdb3def5c

Pas 8/10: EXPOSAR 27017

—> S’executa el 8d070e2a1e07

Eliminació del contenidor intermedi 8d070e2a1e07

—> f770776a538c

Pas 9/10: CMD ["–port 27017"]

—> S’executa a ab612410df77

Eliminació del contenidor intermedi ab612410df77

—> e5830b80934f

Pas 10/10: ENTRYPOINT usr / bin / mongod

—> Funcionament al 95f574727aab

Eliminació del contenidor intermedi 95f574727aab

—> 095d17727ca0

Construït amb èxit el 095d17727ca0

Etiquetat amb èxit geekflare_mongodb: més recent

Comprovem si la imatge del docker s’ha creat amb el nom geekflare_mongodb.

[correu electrònic protegit]: ~ $ imatges de docker

TALLA DE REPOSITORI MITJÀ CREAT D’ID

geekflare_mongodb més recent 095d17727ca0 fa 3 minuts 325MB

ubuntu més recent 3556258649b2 fa 4 dies 64.2MB

mean_express 35dcb3df9806 més recent fa 6 dies 923MB

mean_angular recent 9f8d61db600c fa 6 dies 1.29GB

Executeu la imatge del docker geekflare_mongodb dins d’un mongo_container contenidor.

[correu electrònic protegit]: ~ $ docker run – nom mongo_container -i -t geekflare_mongodb

27-07-2019: 38: 23.734 + 0000 I CONTROL [initandlisten] Inici de MongoDB: pid = 6 port = 27017 dbpath = / data / db host de 64 bits = b0095c1e5536

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

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

2019-07-27T19: 38: 23.736 + 0000 I CONTROL [initandlisten] Versió OpenSSL: OpenSSL 1.1.1 11 set 2018

27-07-2019: 38: 23.739 + 0000 I CONTROL [initandlisten] assignador: tcmalloc

27-07-27T19: 38: 23.739 + 0000 I CONTROL [initandlisten] mòduls: cap

27-07-2019: 38: 23.739 + 0000 I CONTROL [initandlisten] entorn de creació:

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

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

27-07-2019: 38: 23.739 + 0000 I CONTROL [opcions initandlisten]: {}

27-07-2019: 38: 23.745 + 0000 I STORAGE [initandlisten] wiredtiger_open config: create, cache_size = 2038M, session_max = 20000, eviction = (threads_min = 4, threads_max = 4), config_base = false, Statistics = (fast) , log = (activat = true, arxiu = true, path = journal, compressor = snappy), file_manager = (close_idle_time = 100000), Statistics_log = (espera = 0), verbose = (recovery_progress),

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

27-07-2019: 38: 24.734 + 0000 I CONTROL [initandlisten] ** ADVERTIMENT: el control d’accés no està habilitat per a la base de dades.

27-07-2019: 38: 24.735 + 0000 I CONTROL [initandlisten] ** L’accés de lectura i escriptura a dades i configuració no està restringit.

27-07-2019: 38: 24.736 + 0000 I CONTROL [initandlisten] ** ATENCIÓ: Esteu executant aquest procés com a usuari root, cosa que no és recomanable.

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

2019-07-27T19: 38: 24.736 + 0000 I CONTROL [initandlisten] ** ADVERTIMENT: aquest servidor està obligat a localhost.

2019-07-27T19: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Els sistemes remots no podran connectar-se a aquest servidor.

27-07-2019: 38: 24.737 + 0000 I CONTROL [initandlisten] ** Inicieu el servidor amb –bind_ip per especificar quina IP

27-07-2019: 38: 24.737 + 0000 I CONTROL [initandlisten] ** adreces de les quals hauria de servir respostes o amb –bind_ip_all

27-07-2019: 38: 24.737 + 0000 I CONTROL [initandlisten] ** enllaçar a totes les interfícies. Si es vol aquest comportament, inicieu el botó

27-07-2019: 38: 24.738 + 0000 I CONTROL [initandlisten] ** servidor amb –bind_ip 127.0.0.1 per desactivar aquesta advertència.

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

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

27-07-2019: 38: 24.788 + 0000 I COMMAND [initandlisten] configuració de configuracióCompatibilityVersion to 3.6

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

27-07-2019: 38: 24.862 + 0000 I FTDC [initandlisten] Inicialitzant la captura de dades de diagnòstic a temps complet amb el directori “/data/db/diagnostic.data”

27-07-2019: 38: 24.866 + 0000 I NETWORK [initandlisten] en espera de connexions al port 27017

Obriu un nou terminal i comproveu si s’executa mongo_container.

[correu electrònic protegit]: ~ $ docker ps

Identificador de contenidor IMATGE DE COMANDAMENT ESTATS CREATS PORTS NOMS

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin / …"   Fa 35 segons Puja 33 segons 27017 / tcp mongo_container

Com podeu veure, el contenidor creat a partir de la imatge geekflare_mongodb està en funcionament.

Espero que això us doni una idea sobre el dockerfile i els seus avantatges. També podeu consultar aquesta documentació a Millors pràctiques en Dockerfile per obtenir més informació.

Tags:

  • Atracador

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