Acquisisci familiarità con le funzionalità principali di Docker. Docker Helper for Dummies Soluzione di istanze dalla A alla Z basata sulla finestra mobile

Golovna / 2 lettori fantastici

Docker è il più ampio sistema di containerizzazione che consente di eseguire la necessaria distribuzione di software in container senza installarli sul sistema locale. Come parte di questo materiale, analizzeremo la gestione dei container docker.

Docker è costituito da una serie di componenti:
  1. Immagine- configurabile dai rivenditori per selezionare PZ, che vengono eliminati dal sito ufficiale
  2. Contenitore- implementazione dell'immagine - giorno sul server, creato dal nuovo, il contenitore non è colpevole di una copia esatta e può essere corretto per ulteriori Dockerfile
  3. Volume- l'area sul disco, come contenitore vicoroso e i dati vengono salvati. Se il contenitore PZ non viene rimosso, i dati possono essere interrotti in futuro

Al di sopra dell'intera struttura è presente uno speciale rango di fusione, che consente al bazhan rank di portare e rubare il container a una chiamata accessibile (per le abbreviazioni dei wine che lavorano sull'indirizzo IP locale) attraverso il bridge virtuale. Il contenitore può essere disponibile come un mondo, quindi come un indirizzo.

Movimentazione Docker tramite container: funzionalità di base

Installiamo Docker su server Ubuntu o Debian, poiché non ci sono ancora installazioni secondo le istruzioni. È meglio eseguire comandi per conto di un koristuvach senza privilegi tramite sudo

L'avvio del contenitore più semplice mostrerà come funziona tutto

Combi di base per l'imballaggio dei contenitori

Puoi inserire tutti i contenitori attivi in ​​questo modo

Con l'opzione -a, verranno mostrati tutti i contenitori, inclusi quelli inattivi

Dicker assegna i nomi ai contenitori in un ordine speciale, puoi specificare i nomi senza intermediari

docker run -name ciao mondo

Avviamo il container con il nome my-linux-container basato sull'immagine ubuntu e andiamo nella console del container, indicando la bash shell

docker esegui -it -name my-linux-container ubuntu bash

Per disconnettersi dal contenitore e accedere nuovamente al sistema host

Tutte le immagini, in base alle quali vengono creati i contenitori, vengono acquisite automaticamente da hub.docker.com alla prima creazione del contenitore, ovvero già in locale, puoi lavorare digitando docker images

La creazione di un contenitore da un'immagine precedentemente scaricata è significativamente più veloce (mayzhe mittevo)

Quando si esce dal contenitore, il vino di uscita sta suonando, in modo che non fosse possibile utilizzare le stesse chiavi CTRL+A+P

Puoi riordinare tutti i contenitori che non sono attivi

docker rm $(docker ps -a -f status=uscito -q)

Abo vederli uno per uno

Vice ID nel resto del comando, è possibile specificare il nome

Nella finestra mobile, la gestione dei container viene eseguita per un numero limitato di comandi intuitivamente sensati:

ID di avvio del contenitore docker

ID di arresto del contenitore docker

ID di riavvio del contenitore docker

ID contenitore docker

Il resto è particolarmente ridondante, visualizzerà tutte le informazioni sul contenitore, i file di configurazione e gli hack per il partizionamento del disco. L'intero elenco di comandi è facilmente reperibile presso l'help desk o sul sito Web ufficiale di Docker

Creazione della tua immagine Docker e utilizzo di un Dockerfile

I suoni dell'immagine vengono creati dalle opzioni già esistenti per l'addendum rahunox assegnate al Dockerfile

DA Ubuntu
CMD echo "ciao mondo"

Una nuova immagine viene creata immediatamente sulla base dello standard ubuntu

Selezioniamo l'immagine assegnandole un nome (un punto alla fine del comando indica che la directory dello stream è in fase di modifica, quindi Dockerfile in quella nuova)

docker build -t my-ubuntu.

immagini di docker ora mostra le creazioni dell'immagine my-ubuntu

Yogo può essere eseguito, alla console quando verrà mostrato Ciao mondo e il prezzo è lo stesso dell'immagine predefinita

Chiama le regole di piegatura necessarie, ad esempio, dobbiamo includere python3 nell'immagine: spostati in una nuova directory e crea un Dockerfile

DA Ubuntu
CMD apt-get update && apt-get install python3

Tutte le istruzioni sono scritte in una riga

docker build -t my-ubuntu-with-python3 .

Iniziamo il contenitore, passando per il centro

docker esegui -it my-ubuntu-with-python3 bash

Tutto nel mezzo del nome della radice è necessario per il viconato dpkg-l | grep python3, il comando mostrerà se il pacchetto è presente nel sistema, il che significa successo

Usa Docker per Linux, che, sperimentalmente, FreeBSD. Funziona nativamente sotto Linux e sperimentalmente sotto FreeBSD. Per MacOSX, Windows - tramite una macchina virtuale.

Docker - ce ha sottolineato l'isolamento. Isolamento di ciò che si trova al centro del contenitore Docker dal sistema operativo e isolamento del sistema operativo da ciò che si trova al centro del Docker. L'isolamento trasferisce l'isolamento di tutti i file, le porte, le priorità.

Tse mayzhe macchina virtuale. Maizhe, non la chiamiamo.

Є tale comprensione dell '"inferno dei maggesi". Che si tratti di software installato sul computer, tirati dietro maggese(File di configurazione, file statici denominati asset, utilità/servizi aggiuntivi, librerie, ecc.). Un certo numero di biblioteche/utilità/servizi pazzi uno per uno. E guardando quelli che hanno librerie/utilità/servizi di skin e la loro obsolescenza, la situazione è anche peggiore.

Ad esempio, Yandex.Cocaine, a quanto pare, viene compilato normalmente su Ubuntu 14.04 (e, ad esempio, su Debian 7). Ale non pid CentOS 6, 7, Debian 8, FreeBSD 9, 10, Ubuntu 15, 16 e in. è impossibile compilare lo yoga. Funziona su questi sistemi operativi in ​​Docker.

Dall'altro lato, e allo stesso tempo, è necessario installare un altro PZ più attuale. Sono più grande allo stesso tempo. E perché non parlare delle versioni di Linux, che sono seriamente criticate. Ad esempio, un firmware non può essere inferiore a Ubuntu 14.10 e non superiore a Linux 14.04.

Docker-tze un programma nel mezzo di uno sviluppo individuale da una singola versione del sistema operativo. Per il rahunok dei contenitori di foglie, mentre vinci una radice per tutti i ranghi, quindi la dimensione del contenitore Docker è di un kilobyte maggiore della dimensione del file binario, eseguire sotto Docker.

In questo modo, possiamo avere un file binario che gira come un bi nel tuo sistema operativo.

Puoi dire: ba, che tse è a casa da molto tempo macchina virtuale. Ma no, non è così. Questo è ciò che chiamano contenitori. Non puzzo come una macchina virtuale lì. Dietro Windows e MacOSX, de robot senza una macchina virtuale è ancora possibile solo sperimentalmente e la norma in questi sistemi operativi è lo scorrimento Docker nel mezzo di una macchina virtuale completa.

Le macchine virtuali di Ale di Docker vincono solo per la distribuzione. Per avviare in produzione le macchine virtuali da Docker non vengono violate.

Contenitore Docker per il sistema operativo. LXC su Linux, Jails su FreeBSD. Contenitore: l'intera area del sistema operativo, isolata dalla parte principale del sistema operativo. Il contenitore ha il proprio albero di directory (incluso il sistema /dev, /bin, /sbin e altro), la propria porta e porta.

Ale, con il quale, non è vittorioso che la virtualizzazione sia completamente. Qual è il punto di risparmiare risorse. Esegui 100 nuove macchine virtualiè improbabile che vedrai un server rigido. E da eseguire 100 container Docker su un computer domestico debole: è possibile.

La verità è che la virtualizzazione della virtualizzazione non è la stessa tra le alternative dei sistemi operativi nel mezzo dei contenitori. Di regola, versioni appositamente preparate di Linux e FreeBSD. Di per sé è appositamente preparato. Windows: il principio non può essere avviato in un contenitore.

I container sono stati costruiti prima di Docker. Docker, rigorosamente apparentemente, niente di più selezione manuale degli strumenti, presi insieme, per la gestione della virtualizzazione dei container Ale troppo difficile.

Perché sei vittorioso?

I ragazzi dalle forze di Dropbox, Facebook e i colossi che gestiscono 1 milione di programmi diversi ciascuno sui loro servizi hanno zitto perché è impossibile garantire una configurazione identica del sistema operativo. Ed è fondamentale.

Fino al punto in cui Quel programma è idealmente scritto e testato su un server reale e inizia a comportarsi non trasferito.

Questo è il motivo per cui alcuni di questi ragazzi intelligenti hanno dato vita a un nuovo concetto: il programma skin sui server viene lanciato in modo individuale, con un sistema operativo adattato individualmente.

Più di questo: una manciata di fornitori di software programma di test nel contenitore Docker, con il canto nalashtuvannyami. io negli stessi (altrimenti con le stesse personalizzazioni) contenitori del programma Docker sul server.

Tse consente di garantire un'identità più ricca del mezzo dell'espansione e del mezzo del vimini.

Fino ad allora, le persone hanno sofferto, hanno indovinato gli astuti installatori.

Potim sputa prova a ordinare l'affilatura nel sistema operativo- e subito il concetto è così: installa programmi sul server insieme ai propri sistemi operativi adattati individualmente per loro- contenitori tobto useredinі. 1 contenitore = 1 sistema operativo personalizzato = 1 programma nel mezzo.

In altre parole:

  • Il contenitore docker dovrebbe essere ottimizzato per la personalizzazione.
  • Lo stesso contenitore Docker deve essere violato sul server.

Tse mi permetta di non esercitarmi con le frustate "server pid" localmente da una macchina del rivenditore. Tse ti consente di rozroblyat sulla macchina rozrobnik assolutamente diversi programmi un'ora, yakі vimagaє folli miglioramenti nel sistema operativo. Tse ti permette di dare maggiori garanzie, che il programma sul server si comporti allo stesso modo, come sulla macchina del rivenditore. Questo ci permette di espanderci sotto Windows/MacOSX e di "esaminare" manualmente i test sotto Linux.

Docker si blocca solo software server sotto Linux(Sperimentale sotto FreeBSD). Chi non è per gli smartphone. E per quanto riguarda i desktop, è solo la sicurezza del software senza una GUI.

Oskilki Docker permettendo in un colpo solo chiedi il robot a rivenditori e amministratori e alza il livello del risultato- immediatamente boom su Docker. È stata inventata una maestosa montagna di strumenti per gestire lo sviluppo degli additivi creati con Docker. Anche prima, per eseguire 10.000 programmi su 1000 server, ci sarebbero voluti almeno 3 devop altamente qualificati, come hanno scritto acquistare una descrizione di come tse ha lavorato su Puppet, Salt, Chef, Ansible, quello e quello non aveva garanzie, tutto è stato testato per mesi. Quindi subito, con Docker, puoi creare una qualifica di devops, puoi gestire milioni di programmi su decine di migliaia di server. Con una migliore garanzia che tutto ricomincerà normalmente.

Puoi diventare un po' più ostile, quindi il rivenditore prepara il contenitore a Docker e poi lo passa all'amministratore.
La metodologia è ancora corretta:

Il rivenditore mostra tutti i tuoi risultati per il sistema CI (chiamata tramite git)
CI sulla pelle di un nuovo commit per aiutare con un'immagine Docker per il test.
Se i test hanno esito positivo, la stessa immagine Docker viene inviata alla produzione in produzione.
Altrimenti, molte cose nei sistemi che vengono compilati non sono necessarie in produzione: in Docker, il middleware viene rimpinzato per la compilazione e per i test viene rimpinzata un'altra immagine con il bene già compilato, che è già in esecuzione in produzione .

Quindi, per lo scambio giusto, il rivenditore è impossibile / non colpevole di incorporare quelli che saranno un'immagine.
E l'asse è per l'ambiente di test (viene lanciato sul server, inaccessibile al rivenditore per i grandi team) e vince in produzione una e la stessa immagine.

L'idea principale è cosa è stato testato, come e come viene lanciato sul server di combattimento. One-to-one, inclusi gli stessi file (Non lo stesso, ma lo stesso te stesso).

Abbiamo ripetutamente discusso di argomenti e cercato ispirazione in sistemi impersonali. Oggi sappiamo con un sistema miracoloso Contenitori Docker.

Per questo motivo, descriveremo le funzionalità di base, che troveremo utili negli articoli successivi del ciclo, e indovineremo brevemente l'architettura Docker. L'architettura client-server personalizzata di Docker è composta da un client: utilità docker che si rivolgono al server per chiedere aiuto API RESTful, e demone nel sistema operativo Linux (div. Fig. 1). Se vuoi che Docker funzioni sul sistema operativo Linux, non puoi vedere la puzza in questo articolo.

Componenti principali di Docker:
    • Contenitori- isolamento per tecnologia aggiuntiva del sistema operativo del nucleo dell'affilatura, in cui vengono utilizzati i programmi. È più semplice designare un contenitore Docker come componente aggiuntivo eseguito da un'immagine. Prima del discorso, il Docker più ideologicamente e vіdіznyaєetsya, ad esempio, come LXC ( Contenitori Linux), volendo sconfiggere il fetore delle stesse tecnologie del kernel Linux. Gli sviluppatori del progetto Docker seguono il principio: un contenitore, un programma.
    • modulo– disponibile per la lettura di modelli di programma. Nuovi livelli possono essere aggiunti sopra le immagini di base, in modo che il file system possa essere impostato contemporaneamente, modificando o integrando il livello precedente. Chiama una nuova immagine da creare per ulteriori risparmi di un contenitore già in esecuzione, una nuova immagine sopra quella esistente o per ulteriori istruzioni speciali per l'utilità. Per separare diversi container riv sul file system riv, puoi hackerare AUFS, btrfs, vfs e Device Mapper. Come trasferire la versione completa di Docker SELinux, allora è necessario mappatore del dispositivo.
    • Registro di sistema, cosa vendicare i repository ( deposito) immagini, - merezhevі raccolte di immagini. Possono essere sia private che pubblicamente accessibili. Registro Nayvidomishim є.

Per l'isolamento dei container nei sistemi operativi GNU/Linux, vengono utilizzate le tecnologie del kernel Linux standard, come ad esempio:
  • Distesa di nomi ( Spazi dei nomi Linux).
  • Gruppi di controllo ( Gruppi).
  • Gestisci i tuoi privilegi ( Funzionalità Linux).
  • Dodatkovі, sistemi di sicurezza obbligatori, quindi AppArmor o SELinux.

Diamo un'occhiata all'elenco delle tecnologie in alcuni rapporti.

Meccanismo del gruppo di controllo (cgruppi) fornire uno strumento per il controllo preciso sulla distribuzione, l'assegnazione delle priorità e la gestione delle risorse di sistema. Gruppi di controllo implementati nel kernel Linux. Nelle distribuzioni moderne, la gestione del gruppo di controllo è implementata tramite systemd, tuttavia, viene salvata la possibilità di occuparsi dell'aiuto della biblioteca libcgroup quella utilità cgconfig. Di seguito sono elencate le principali gerarchie dei gruppi di controllo (detti anche controllori):

  • blkio- porre limiti al funzionamento input-output e all'accesso ai blocchi annessi;
  • processore- Vykoristovuyuchi pianificazione dei processi, rozpodіlyaє protsessorny ora tra le attività;
  • cpuacct– creare chiamate automatiche in base alle risorse del processore centrale. Pratsiuє con il controller processore, descriviamo di più;
  • cpuset- chiudere i processori di memoria ei nodi di memoria dietro le attività;
  • dispositivi– regolamentare l'accesso dal fronte agli annessi cantanti;
  • congelatore- Supinyaє o rinnovare il manager;
  • memoria– impostare limiti e generare registrazioni sulla conservazione della memoria da parte del gruppo di controllo;
  • net_cls– impostare il tagging dei pacchetti che si uniscono con l'identificatore di classe ( ID della classe). Tse consente al controllore del traffico ( comando tc) e firewall ( iptables) per proteggere i tag dell'ora di elaborazione del traffico;
  • perf_evento– consente di monitorare i gruppi di controllo per ulteriore utilità perfezionare;
  • enormetlb– permette di conquistare i lati virtuali della memoria del grande mondo e di porvi dei limiti.

Espansione dei nomi, nelle sue mani, il controllo non ha ampliato le risorse, ma l'accesso alle strutture di questi nuclei. In effetti, significa l'isolamento dei processi un tipo di uno e la possibilità della madre in parallelo "lo stesso", ma non la gerarchia dei processi, i corystuvac e le interfacce di meshing, che non si sovrappongono uno per uno. Per il servizio di vari servizi, le madri possono ispirare le proprie autorità interfaccia di loopback.

Applica una vasta gamma di nomi che Docker vince:
  • PID, ID processo- Isolamento della gerarchia dei processi.
  • RETE, Reti- Isolamento delle interfacce mesh.
  • PC, comunicazione tra processi- Gestione dell'interazione tra i processi.
  • MNT, Monte- Gestione dei punti di montaggio.
  • UTS, sistema di multiproprietà Unix– isolamento del core e identificatori di versione.

Meccanismo sotto il nome Capacità consente di suddividere i privilegi della radice koristuvach in piccoli gruppi di privilegi e segni del loro okremo. Questa funzionalità in GNU/Linux è apparsa all'inizio della versione kernel 2.2. I container di avvio vengono già avviati con un set limitato di privilegi.

Per opzioni aggiuntive al comando docker, puoi abilitare questo straziante:
  • operazioni di installazione;
  • accesso alle prese;
  • vikonannya parte dell'operazione dal file system, ad esempio, modificando gli attributi dei file o del sacco.

Puoi saperne di più sui privilegi con l'aiuto del lato uomo CAPACITÀ(7).

Installazione di Docker

Diamo un'occhiata all'installazione di Docker sull'applicazione CentOS. Quando lavori con CentOS, hai una scelta: cicoria la versione rimanente con u pstream O la versione selezionata dal progetto CentOS dai componenti aggiuntivi di Red Hat. Descrizione delle modifiche a lato.

Nella pipeline di porting principale, le nuove versioni upstream sono state corrette e le modifiche propagate dai rivenditori Red Hat non sono state ancora accettate nel codice principale. La nota più importante al momento della stesura dell'articolo era quella che le nuove versioni del servizio docker erano divise in tre parti: demone docker, container e runc. Red Hat non si preoccupa ancora che la modifica sia stabile e invia un file monolitico 1.10.

Configurazione di un repository per l'installazione versioni a monte, così come le istruzioni per l'installazione in altre distribuzioni e sistemi operativi, indicate nella guida all'installazione sul sito ufficiale. Zocrema, ottimizzato per il repository CentOS 7:

# cat /etc/yum.repos.d/docker.repo name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7 enabled=1 gpgcheck=1 gpgkey=https://yum .dockerproject.org/gpg

# cat /etc/yum.repos.d/docker.repo

nome = Deposito

baseurl=https://yum.dockerproject.org/repo/main/centos/7

abilitato=1

gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg

Installiamo i pacchetti necessari su quel launcher e abilitiamo il servizio:

# yum install -y docker-engine # systemctl start docker.service # systemctl enable docker.service

# yum install -y docker-engine

# systemctl avvia docker.service

# systemctl abilita docker.service

Verifica dello stato del servizio:

# systemctl status docker.service

# systemctl status docker.service

Puoi anche guardare le informazioni di sistema su Docker e verificarle:

# informazioni sulla finestra mobile

Quando esegui lo stesso comando su un Docker appena installato dal repository CentOS, vedrai alcuni dettagli minori, simili alla vecchia versione del software. Z visnovka informazioni sulla finestra mobile possiamo scoprire qual è il driver per la raccolta di dati vittoriosi mappatore del dispositivo e come un tesoro: un file /var/lib/docker/:

# ls -lh /var/lib/docker/devicemapper/devicemapper/data -rw-------. 1 root root 100G 27 dicembre 12:00 /var/lib/docker/devicemapper/devicemapper/data

# ls -lh /var/lib/docker/devicemapper/devicemapper/data

Rw -- -- -- - . 1 root root 100G 27 dic 12:00 /var/lib//devicemapper/devicemapper/data

Le opzioni per l'avvio del demone, come chiamarlo in CentOS, vengono salvate in /etc/sysconfig/. In questo caso, mi riferisco al file docker. Riga Vіdpovіdny /etc/sysconfig/docker per descrivere le opzioni:

OPTIONS="--selinux-enabled --log-driver=journald"

Yakby abbiamo eseguito il comando docker come root non corrosivo e non come corist, per entrare nel gruppo docker, vorresti un perdono:

$ finestra mobile cerca mysql

$cerca mysql

Avviso: impossibile ottenere l'endpoint del registro predefinito dal daemon (Impossibile connettersi al daemon Docker. Il daemon Docker è in esecuzione su questo host?). Utilizzando l'impostazione predefinita del sistema: https://index. docker.io/v1/

Impossibile connettersi al demone Docker. Il demone docker è in esecuzione su questo host?

Presta attenzione al fatto che l'inclusione di un koristuvach nel gruppo docker è uguale all'inclusione di quel koristuvach nel gruppo radice.

I rivenditori RHEL/CentOS hanno un po' meno tempo per proteggere il daemon Docker, mentre gli stessi rivenditori Docker hanno un upstream inferiore. Un rapporto sul Red Hat pidhide è scritto nell'articolo di Dan Walsh, il distributore della distribuzione RHEL.

Se vuoi che il comportamento "standard" di Docker sia installato dal repository CentOS (come descritto nella documentazione ufficiale), devi creare un gruppo docker e aggiungere le opzioni per avviare il demone:

OPTIONS="--selinux-enabled --log-driver=journald ↵ --group=docker"

OPZIONI= "--selinux-enabled --log-driver=journald ↵ --group=docker"

Dopo aver riavviato il servizio e verificato che il file sul socket docker appartenga al gruppo docker e non a root:

# ls -l /var/run/docker.sock

Cerca immagini e tag Docker

Prova a conoscere il contenitore su Docker Hub.

$ docker ricerca haproxy

$search haproxy


Abbiamo vinto un elenco di una serie di immagini HA Proxy con questa visnovka. L'elemento più grande nell'elenco è HA Proxy dal repository ufficiale. Quindi, le immagini ricordano loro, che nel nome non c'è simbolo «/» , che consente di proteggere il repository del contenitore con il nome del contenitore stesso. Il calcio dietro l'ufficiale mostra due immagini di haproxy dai repository aperti nel nucleo eeacms e million12.

Immagine, simile alle due in basso, puoi crearla tu stesso registrandoti su Docker Hub. I funzionari sono supportati da un team speciale, sponsorizzato da Docker, Inc. Caratteristiche del repository ufficiale:

  • Tse consigliato fino alla scelta dell'immagine, creata con il miglioramento delle migliori raccomandazioni e pratiche.
  • La puzza sono le immagini di base, che possono diventare il punto di partenza per una messa a punto più fine. Ad esempio, le immagini di base di Ubuntu, CentOS o la libreria e il mezzo della distribuzione.
  • Nebbia le restanti versioni del software con l'uso di incoerenze.
  • Tse canale ufficiale per la distribuzione dei prodotti. Sob meno di un'immagine ufficiale, puoi selezionare un'opzione -filter "è-ufficiale=vero" comando ricerca docker.

Il numero di stelle della squadra vista ricerca docker dimostra la popolarità dell'immagine. Pulsante analogico Tse Piace sui social network o segnalibri per altri coristuvachs. automatizzato significa che l'immagine viene prelevata automaticamente da uno script speciale da Docker Hub. Suono accanto alle immagini, che vengono selezionate automaticamente dopo il fatto che può essere invertito dalla familiarità con il file visivo.

Cattura l'immagine ufficiale di HA Proxy:

$ docker pull haproxy Utilizzo del tag predefinito: latest

Al di fuori di esso, posso apparire così:

[im'ya koristuvacha]immagine im'i[:tag]

Puoi consultare l'elenco di immagini attraenti con il comando immagini della finestra mobile:

Contenitori funzionanti

Per lanciare il contenitore, non è l'immagine obov'yazkovo zazdalegіd zavantazhuvat. Se il vino è disponibile, verrà selezionato automaticamente. Proviamo a eseguire un contenitore con Ubuntu. Non specificheremo il repository e verrà coperto il resto dell'immagine ufficiale supportata da Canonical.

$ docker esegui -it ubuntu [e-mail protetta]:/#

$ corri - è Ubuntu

root@d7402d1f7c54 :/#

Squadra di Crimea correre, abbiamo specificato due opzioni: -io– il contenitore è colpevole di funzionare in modalità interattiva e -t- A causa di visioni dello pseudo-terminale. Come puoi vedere dal collegamento, il contenitore può avere privilegi di root e come nome del nodo viene visualizzato l'ID del contenitore. Il resto potrebbe non essere valido per tutti i contenitori e trovarsi nel rivenditore di contenitori. Vediamo cosa è veramente affilato da Ubuntu:

[e-mail protetta]:/# cat /etc/*rilascio | grep DISTRIB_DESCRIPTION DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

root@d7402d1f7c54 :/ # cat /etc/*rilascio | grep DISTRIB_DESCRIPTION

DISTRIB_DESCRIPTION = "Ubuntu 16.04.1 LTS"

comando uname -un per tali scopi, vikoristovuvaty non viide, il contenitore di shard funziona con il core host.

Come una delle opzioni puoi impostare un nome univoco per il contenitore, puoi usarlo per chiarezza, crim Contenitore di identificazione. Vaughn si chiede come -nome<имя>. Se l'opzione viene omessa, verrà generata automaticamente.

I nomi dei contenitori generati automaticamente non hanno alcun significato, infatti, si può vedere che i nomi sono generati in un rango vipadkovy dal nome di una persona famosa, colpevole o di un hacker. Al codice del generatore per il nome della skin, puoi trovare una breve descrizione di quale sia il nome del bambino.

È possibile visualizzare l'elenco dei contenitori in esecuzione con il comando. Per il quale vedi un altro terminale:

Tuttavia, non possiamo vedere come inviare un comando a un contenitore creato da un'immagine mysql. Opzione di accelerazione -un, per mostrare tutti i contenitori, non solo in esecuzione:

Ovviamente, all'avvio del contenitore, non sono stati specificati parametri di lingua. Per una descrizione degli ambienti in evoluzione necessari per eseguire il contenitore, è possibile trovare l'immagine MySQL ufficiale su Docker Hub. Ripetiamo il test, opzione vikoristovuyuchi -e come impostare le modifiche nel contenitore:

$ finestra mobile run --name mysql-test ↵ -e MYSQL_ROOT_PASSWORD=docker -d mysql

Il parametro rest è il comando, come se volessi liberare nel mezzo del contenitore. Quale ha l'interprete dei comandi bash. Opzioni -esso simile al riconoscimento delle vittorie precedenti da parte della squadra corsa del docker.

Infatti, dopo aver eseguito il comando nel container prova mysql viene aggiunto un altro processo - bash. Puoi chiedere aiuto con il comando pstree. Velocità di visnovok al comando dirigente docker:

Dovіdka per comandi immagini keruvannya e contenitori Docker.

Termini

Immagine– ce build statica basata sul sistema operativo della canzone.

Contenitore- ce zanedbany istanza all'immagine.

Autorizzazioni per eseguire la finestra mobile

Per eseguire un contenitore Docker con la tua password (senza sudo), devi accedere al gruppo specifico:

sudo usermod -aG finestra mobile YOU_USER

Servizio Docker

Gestione del servizio Docker:

sudo service docker start|stop|restart|status sudo restart docker # alias

modulo

Elenco delle immagini disponibili:

Immagini Docker

Ottieni l'immagine (o l'intero repository) dal registro ufficiale (raccolta di immagini):

finestra mobile tirare ubuntu: 14.04

Guarda le informazioni sull'immagine:

la finestra mobile ispeziona Ubuntu

Guarda l'immagine:

Docker esegue il commit CONTAINER_ID IMAGE_NAME

Contenitori

Rispetto!

Una volta avviato il container Docker, i servizi/demoni (come SSH, Supervisor, ecc.) non si avvieranno automaticamente! Sono vitrativ kіlka anno per un perdono: " ssh_exchange_identification: lettura: connessione ripristinata dal peer", quando provi a connetterti al contenitore tramite SSH. Ma si è scoperto che il demone sshd non si è avviato affatto. Sarai responsabile dell'avvio manuale dei demoni o del supervisore dopo aver avviato il contenitore:"

Docker exec CONTAINER_ID bash -c "service ssh start"

Elenco di tutti i container (lanci e lanci):

Docker ps -a

Contenitore/i di visibilità:

Docker rm CONTAINER_ID CONTAINER_ID

Visualizza tutti i contenitori:

Docker rm $(docker ps -aq)

Crea ed esegui un contenitore Docker in Ubuntu 14.04 in modalità interattiva (apri la shell di quel contenitore):

Docker run -it ubuntu bash docker run [opzioni] image [comando] -i Modalità interattiva, se possibile STDIN a crit -t Alloca/crea uno pseudo-TTY che collega stdin e stdout --name ID modifica nome contenitore -w Specifica lavoratore directory ( --workdir) -e Installa la modifica nel contenitore -u Koristuvach:gruppo in base a quale contenitore è responsabile dell'avvio -v Monta il file nel contenitore o nella directory del sistema host -p Inoltra le porte del contenitore -<порт хост-системы>:<порт контейнера>(--publish=) --entrypoint Ignora il comando ENTRYPOINT predefinito in Dockerfile

Nota

Per vedere un TTY senza un'ammaccatura del contenitore, premi Ctr + P + Ctrl + Q .

Crea ed esegui un contenitore Docker in modalità daemon su una porta SSH inoltrata:

Docker esegui -itd -p 127.0.0.1:221:22 ubuntu

Crea e lancia un contenitore dalle parti più lontane del contenitore dopo i chicchi (grossolano per l'arricchimento):

Docker esegui -i -t --rm ubuntu bash

Eseguire il contenitore zupin in modo interattivo:

Docker start -i CONTAINER_ID

Connettiti a un contenitore demonizzato:

Docker collega CONTAINER_ID

Comandi Docker

Utilizzo: docker COMANDO demone docker [--help | ... ] finestra mobile [ --help | -v | --version ] Un runtime autosufficiente per i contenitori. Opzioni: --config=~/.docker Posizione dei file di configurazione del client -D, --debug=false Abilita la modalità di debug --disable-legacy-registry=false Non contattare i registri legacy -H, --host= Daemon socket( s ) fare clic su -h, --help=false Utilizzo stampa -l, --log-level=info Cambia livello --tls=false Usa TLS; implicito in --tlsverify --tlscacert=~/.docker/ca.pem Certificati attendibili firmati solo da questa CA --tlscert=~/.docker/cert.pem Percorso del file del certificato TLS --tlskey=~/.docker/ key.pem Percorso del file della chiave TLS --tlsverify=false Stub TLS e verifica il -v remoto, --version=false Stampa le informazioni sulla versione ed esci Comandi: attach Collega alla build del contenitore in esecuzione Crea un'immagine da un commit Dockerfile Crea un nuovo immagine dalle modifiche di un contenitore cp Copia file/cartelle tra il contenitore e il filesystem locale create Crea un nuovo contenitore diff Ispeziona le modifiche sugli eventi del filesystem del contenitore Ottieni eventi in tempo reale dal server exec Esegue un comando nell'esecuzione di container export Esporta un contenitore filesystem come cronologia archivio tar Mostra la cronologia delle immagini Importa immagini elenca Importa i contenuti da un tarball per creare un'immagine del filesystem info Visualizza informazioni a livello di sistema inspect Restituisce informazioni di basso livello su un container o un'immagine kill Uccidi un container in esecuzione load Load un'immagine e archivio tar o login STDIN Registr o logout Registri di registro Docker 1 mappatura specifica per CONTAINER ps Elenco contenitori pull Estrai un'immagine o un repository dal registro comando push in un nuovo contenitore save Salva una o più immagini in un archivio tar Tagga un'immagine in repository top Visualizza il processo in esecuzione del container unpause Riattiva tutti i processi all'interno del volume del container Gestisci volumi Docker attendi Blocca fino a quando un container non si ferma, stampa il suo codice di uscita Esegui "docker COMMAND --help" per maggiori informazioni su un comando.

Docker è uno strumento popolare, che è l'inizio della containerizzazione e tutto ciò di cui hai bisogno per eseguire i componenti aggiuntivi. Con i contenitori Docker, puoi essere certo che il programma funzioni su qualsiasi computer su cui lo esegui.

Grazie al tuo aiuto, conosci il collegamento di contenitori e immagini Docker, nonché su come installare, eseguire, eseguire e vedere i contenitori.

guardando intorno

Immagine Docker può essere immaginato come una sorta di modello, che vikoristovuetsya per la creazione di contenitori. I suoni dell'immagine partono dal file system root, a cui poi aggiungiamo palle alla bestia con varie modifiche e altri parametri di lancio. Dal punto di vista delle distribuzioni tipiche di Linux, Docker suona per vendicare solo le parti necessarie per eseguire il programma. Le immagini non hanno status e la puzza non cambia. Sarebbe più corretto dire che la puzza è il punto di uscita, la base dei container Docker.

L'immagine "prende vita" in quel momento, se inserisci il comando docker run, crea immediatamente un contenitore come risultato dell'aggiunta di un nuovo livello di lettura/scrittura sopra l'immagine. Questa combinazione di righe per la sola lettura (in cima alla quale viene aggiunta una riga per la lettura e la registrazione) è nota anche come UnionFS, un file system che collega e monta i file system. Se vengono apportate modifiche al file principale del contenitore in esecuzione, il file viene copiato dall'area di sola lettura e di scrittura e lettura, in cui verranno apportate le modifiche. І ora un file di posta di allegati con una versione uguale per la scrittura e la lettura, ma non per la visualizzazione. Modifiche simili nelle righe per la scrittura e la lettura vengono utilizzate solo al centro del contenitore. Se il contenitore viene visualizzato, anche tutte le modifiche verranno annullate (poiché non è stato salvato).

Lavoro in container

Quindi, se vinci il comando docker run, verrà creato un nuovo contenitore nel modo specificato. Esempi più specifici verranno esaminati di seguito.

Krok 1: piegare due contenitori

Il comando docker run di seguito creerà un nuovo contenitore che fungerà da base per ricostruire l'immagine di Ubuntu. L'opzione -t assegna un terminale e -i - la possibilità di interagire con esso. Per aprire nel mezzo di un contenitore, puoi digitare il comando bash standard. Tobto puoi inviare:

$ finestra mobile esegui -ti ubuntu

$ docker esegui -i -t ubuntu:14.04 /bin/bash

(in un'altra cartella, esegui il comando /bin/bash nel mezzo del contenitore e scenderà automaticamente al centro del contenitore)

La riga di comando avrà la conferma che sei nel mezzo del contenitore come supercorristuvach. Dopo il segno @, inserisci l'ID contenitore, in cui modifichi:

[e-mail protetta]:/#

Ora, dopo aver modificato il comando echo, apportare modifiche alla directory /tmp, quindi invertire ciò che le modifiche sono state scritte per il comando cat aggiuntivo:

echo "Esempio1" > /tmp/Esempio1.txt cat /tmp/Esempio1.txt

Sullo schermo puoi chattare:

Ora vedi dal contenitore:

Non appena il team è stato vikonan e hai lasciato la riga di comando, il contenitore Docker ha smesso di funzionare. Se puoi aiutare, puoi anche testare il comando docker ps:

Nel bel mezzo del lancio di container, non intervenire, che tipo di vicorista è di più:

ID CONTENITORE COMANDO IMMAGINE STATO CREATO PORTE NOMI

Tuttavia, puoi aggiungere l'opzione -a per far funzionare tutti i contenitori, come se fossero corretti, quindi appendere il contenitore in cui hai lavorato prima:

$ docker ps -a ID CONTENITORE IMMAGINE COMANDO CREATO STATO PORTE NOMI 11cc47339ee1 ubuntu "/bin/bash" 9 minuti fa Esci (127) 10 secondi fa small_sinoussi

Quando viene creato un contenitore, avrà un ID e un nome generato automaticamente. In questo caso, 11cc47339ee1 è il numero di identificazione (ID) del contenitore e small_sinoussi è il nome generato. Il comando ps -a mostra il numero di dati, nonché l'immagine di quale contenitore di creazioni (in questa modalità ubuntu), se il contenitore di creazioni (9 volte fa) e come il comando è stato eseguito in uno nuovo (" /bin/bash"). Puoi anche guardare lo stato del container (dalla prima volta era 10 secondi fa), se il container fosse stato completato, avresti controllato lo stato "Up" e l'ora, a che ora era già in funzione.

Ora puoi inserire nuovamente il comando per chiudere il contenitore:

$ finestra mobile esegui -ti ubuntu

Indipendentemente da quelli che il team sembra proprio come il tempo passato, creerai un contenitore completamente nuovo: avrai un numero di identificazione diverso, ma se provi a guardare il file Esempio1, che è stato modificato in precedenza, non lo farai lo so.

[e-mail protetta]:/# cat /tmp/Esempio1

Visnovok:

Cat: /tmp/Example1: Nessun file simile ma directory

Puoi scappare, che i dati sono arrivati, ma a destra, ovviamente, non allo stesso modo. Sfoglia da un altro contenitore, per riconnetterti, quale contenitore (incluso il primo del file richiesto) è utilizzato dal sistema.

[e-mail protetta]:/# exit $ finestra mobile ps -a

Visnovok:

ID CONTENITORE IMMAGINE COMANDO CREATO STATO PORTE NOMI 6e4341887b69 ubuntu "/bin/bash" Circa un minuto fa Uscito (1) 6 secondi fa kickass_borg 11cc47339ee1 ubuntu "/bin/es

Krok 2: riavvio del primo container

Per riavviare il contenitore già creato, è necessario eseguire il comando start con i due switch -ai. Abbiamo bisogno che tu scriva il numero identificativo del container, per il quale vuoi lavorare, altrimenti lo nominerò. Di conseguenza, il tuo comando è simile a questo:

Docker start -ai 11cc47339ee1

Ora sei tornato nella shell bash nel mezzo del contenitore e puoi riconsiderare che il file che hai creato sulla pannocchia dell'articolo è ancora qui:

Cat /tmp/Esempio1.txt

Balli sullo schermo:

Ora puoi uscire dal contenitore:

In questo modo, tutte le modifiche al centro del contenitore vengono salvate, continuano come al solito e quindi riavviano il contenitore. I dati sono visti meno a volte, se il contenitore stesso è visto. Inoltre, assicurati di modificare il costo di un container (e non di tutti i container al giorno).

Krok 3: rimozione di entrambi i contenitori

Il passaggio finale sarà la rimozione di due contenitori, come hai fatto tu, raggiungendo l'aiutante. Per cui è necessario un comando docker rm. Tuttavia, c'è dell'altro sul fondo del contenitore. Dopo la squadra è necessario indicare un numero identificativo, oppure nominerò uno o più contenitori. Ad esempio, per vedere i contenitori creati in precedenza, devi inserire il comando:

Docker rm 6e4341887b69 small_sinoussi

Sullo schermo appendere:

6e4341887b69 small_sinoussi

Ora i contenitori sono stati offesi e le pallottole sono state cambiate.

Visnovok

Hai appreso i comandi principali per lavorare in Docker e hai imparato come creare, zupinyat, rilanciare e rilanciare i container.

© 2022 androidas.ru - Tutto su Android