In precedenza abbiamo visto le installazioni di hypervisor come Xen e middleware cloud come openstack. Recentemente una nuova tecnologia chiamata docker container è diventata la tendenza più in voga nello sviluppo di applicazioni. In questo articolo vedremo cos'è esattamente una finestra mobile, le sue differenze con le macchine virtuali, l'installazione della finestra mobile e il suo utilizzo.
Cos'è Docker?
Docker è un contenitore che racchiude un pezzo di software in un file system completo che contiene tutto ciò di cui ha bisogno per essere eseguito:codice, runtime, strumenti di sistema, librerie di sistema, qualsiasi cosa tu possa installare su un server. I container si virtualizzano a livello di sistema operativo, rendendolo più efficiente degli hypervisor nell'utilizzo delle risorse di sistema. Esistono molte tecnologie di container Linux come LXC, Docker ecc.
Qual è la differenza tra Docker e una macchina virtuale?
Con un approccio architetturale diverso, i container sono molto più portatili ed efficienti, anche se hanno un isolamento delle risorse simile. L'immagine sotto mostra la differenza architettonica tra un container e le macchine virtuali.
Come installare un contenitore Docker su CentOS 7?
L'ultima versione ufficiale di Docker è la v1.10. Di seguito le istruzioni per l'installazione di Docker Container sul server CentOS 7. Accedi al server CentOS 7 come root e segui i passaggi seguenti.
Passaggio 1: Come best practice, aggiorniamo il sistema usando yum come mostrato di seguito:
# yum -y update
Passaggio 2: Per impostazione predefinita, Docker è incluso nel repository CentOS-Extra. Se desideri utilizzare una versione più aggiornata della finestra mobile, esegui il comando seguente per aggiungere al repository.
# tee /etc/yum.repos.d/docker.repo <<-'EOF'
> [dockerrepo]
> name=Docker Repository
> baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
> enabled=1
> gpgcheck=1
> gpgkey=https://yum.dockerproject.org/gpg
> EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
Passaggio 3: Installa il pacchetto Docker e il registro Docker. Il registro Docker è un'applicazione lato server senza stato e altamente scalabile che archivia e consente di distribuire le immagini Docker.
# yum -y install docker docker-registry
Passaggio 3: Al termine dell'installazione di Docker, avvia il servizio Docker.
# systemctl start docker.service
Passaggio 4: Assicurati che il servizio Docker si avvii all'avvio con il comando seguente:
# systemctl enable docker.service
Passaggio 5: Verifica il servizio Docker
# systemctl status docker.service
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2016-03-22 16:29:00 IST; 20h ago Docs: http://docs.docker.com Main PID: 30108 (docker) CGroup: /system.slice/docker.service ââ30108 /usr/bin/docker daemon --selinux-enabled
Mar 22 17:10:12 vm1 docker[30108]: time="2016-03-22T17:10:12.541577770+05:3...1" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429417681+05:3...0" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429730128+05:3...s" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429781346+05:3...04 Mar 22 17:11:13 vm1 docker[30108]: time="2016-03-22T17:11:13.020019713+05:3...0" Mar 22 17:11:23 vm1 docker[30108]: time="2016-03-22T17:11:23.021293894+05:3...e" Mar 22 17:11:28 vm1 docker[30108]: time="2016-03-22T17:11:28.600657892+05:3...n" Mar 22 17:11:35 vm1 docker[30108]: time="2016-03-22T17:11:35.938950613+05:3...0" Mar 22 17:11:45 vm1 docker[30108]: time="2016-03-22T17:11:45.939810804+05:3...e" Mar 22 17:11:57 vm1 docker[30108]: time="2016-03-22T17:11:57.720737864+05:3...n" Hint: Some lines were ellipsized, use -l to show in full.
Come si usa Docker?
Passaggio 1: Scarica un contenitore Docker. Esegui il comando seguente per ottenere l'ultima immagine CentOS ufficiale stabile:
# docker pull centos
Il comando precedente estrae l'ultima versione stabile di centos. Per estrarre qualsiasi altra versione dell'immagine CentOS, ad esempio CentOS 6:
# docker pull centos:centos6
Passaggio 2: Per verificare che le immagini siano state scaricate in locale:
# docker images centos REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos latest bb3d629a7cbc 2 weeks ago 196.6 MB
Passaggio 3: Per elencare tutte le immagini scaricate disponibili:
# docker images
Come eseguire un Docker Container
Passaggio 1: Esegui un contenitore Centos di base con una shell bash. Qui, -i l'opzione allega stdin e stdout , -t assegna un tty .
# docker run -i -t centos /bin/bash
Questo è tutto! Ora sei atterrato su una shell bash all'interno di un container docker centos.
Comandi per lavorare con i container Docker
1. Per scollegare o staccare dal contenitore senza spegnere il contenitore:
Ctrl-p + Ctrl-q
2. Ci sono molti container già disponibili per comunità. Per elencare i contenitori della community:
# docker search centos INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/centos The official build of CentOS. 2042 [OK] docker.io docker.io/jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8... 18 [OK] docker.io docker.io/jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M... 14 [OK] ... ...
# docker search ubuntu INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/ubuntu Ubuntu is a Debian-based Linux operating s... 3464 [OK] docker.io docker.io/ubuntu-upstart Upstart is an event-based replacement for ... 60 [OK] docker.io docker.io/torusware/speedus-ubuntu Always updated official Ubuntu docker imag... 25 [OK] docker.io docker.io/rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 23 [OK] ... ...
3. Elenca tutti i contenitori
# docker ps -a
4. Elenca solo i contenitori in esecuzione
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4293c8265d00 centos "/bin/bash" 22 hours ago Up 9 seconds agitated_poincare
5. Arresta un contenitore
Ottieni l'ID contenitore dall'elenco sopra e utilizzalo per arrestare il rispettivo contenitore:
# docker stop 4293c8265d00
6:riavvia il servizio Docker
# systemctl restart docker.service