Archivio

Posts Tagged ‘docker-engine’

Installare Docker 1.12.xx in Debian Jessie 8.6

dockerDocker  consente l’esecuzione di applicazioni con le relative dipendenze in un container virtuale isolato dal sistema operativo.  Di fatto le applicazioni possono coincidere con un sistema operativo quasi completo evitando in questo modo la necessità di una macchina virtuale. Aspetti positivi: minori risorse, maggior velocità  di avvio, evitare i problemi di gestione di una macchina virtuale. Aspetto negativo l’isolamento rnon è totale e le risorse a disposizione del container sono meno garantite. Docker che si esegue in modo nativo su macchine Linux gira anche su OS e Windows.

Installazione di Docker 1.12.xx in Debian Jessie

L’ultima versione di Docker disponibile è la 1.12.2-0. L’installazione di Docker richiede una versione a 64bit di Debian e un kernel versione > 3.10.   La guida ufficiale all’installazione su debian di docker  è disponibile all’indirizzo  https://docs.docker.com/engine/installation/linux/debian/

Il kernel può essere controllato utilizzando uname.
Passare a super user per le varie fasi dell’istallazione

$ su 

$ uname -r 
3.16.0-4-amd64

L’installazione della versione 12.10 avverrà via apt-get dal repository di Docker il repository corrente infatti ospita una versione decisamente obsoleta.

La versione datata può essere evidenziata con apt-cache  policy

$ apt-cache policy docker
docker:
 Installed: (none)
 Candidate: 1.5-1
 Version table:
 1.5-1 0
 500 http://ftp.it.debian.org/debian/ jessie/main amd64 Packages
 100 /var/lib/dpkg/status

La guida su Docker evidenzia alcune accorgimenti che vanno adottati preliminarmente:

Rimuovere eventuali precedenti versioni installate:

$ apt-get purge "lxc-docker" 
$ apt-get purge "lxc-docker"

Nel nostro caso non era presenti precedenti versioni è l’esito è stato negativo.
Di seguito un esempio di precedenti versioni presenti nei repository

$  apt-cache search docker
...
docker - System tray for KDE3/GNOME2 docklet applications 
...
docker.io - Linux container runtime 
...
lxc-docker - Linux container runtime 
lxc-docker-0.10.0 - Linux container runtime 
...
lxc-docker-0.12.0 - Linux container runtime 
lxc-docker-0.5.3 - lxc-docker is a Linux container runtime 
lxc-docker-0.6.0 - lxc-docker is a Linux container runtime
...
lxc-docker-0.6.6 - lxc-docker is a Linux container runtime
lxc-docker-0.6.7 - Linux container runtime
...
lxc-docker-0.9.0 - Linux container runtime  
...
lxc-docker-1.5.0 - Linux container runtime
lxc-docker-1.6.0 - Linux container runtime
...
lxc-docker-1.9.0 - Linux container runtime
lxc-docker-1.9.1 - Linux container runtime
 

 .

Per poter utilizzare il repository specifico di docker è necessario installare la GPG Key e accertarsi che apt-get apt-get operi con il protocool https. Anche se probabilmente presenti installare o verificare l’installazione dei pacchetti apt-transport-https ca-certificates con :

$ apt-get install apt-transport-https ca-certificates
Reading package lists... Done
Building dependency tree 
Reading state information... Done
apt-transport-https is already the newest version.
ca-certificates is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Installare la GPG Key con

$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

In apt-get non dovrebbero essere presenti riferimenti al repository di docker. E’ possibile controllare la presenza di eventuali file docker.list con

$ ls /etc/apt/sources.list.d/docker*

Aggiungere ad apt-get il repository di docker con :

$ echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list


effettuare l’update dei repositories con

$ apt-get update

Per verificare che apt-get faccia riferimento al repository di docker corretto utilizzare apt-cache

$ apt-cache policy docker-engine 
Installed: (none)
Candidate: 1.12.2-0~jessie
Version table:
1.12.2-0~jessie 0
500 https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
1.12.1-0~jessie 0
500 https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
1.12.0-0~jessie 0
500 https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
1.11.2-0~jessie 0
500 https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
...
...
1.6.1-0~jessie 0
500 https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
1.6.0-0~jessie 0
500 https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
1.5.0-0~jessie 0
500 https://apt.dockerproject.org/repo/ debian-jessie/main amd64 Packages
root@debian8SdaDMZ:/home/maurizio# apt-get install docker
Reading package lists... Done

parte della lista delle versioni docker disponibili e l’indicazione che docker non è installato.

Per utilizzare Docker installare il pacchetto docker-engine

$ apt-get install docker-engine

Avviare il demone Docker con

$ service docker start

Avviare il primo container

Per verificare che Docker sia funzionante avviamo il primo container. Cioè la nostra prima applicazione o parte di macchina virtuale. Per poter avviare un container e necessario disporre di una image di partenza con l’applicazione o parte della macchina virtuale. Un container è una image che vive e a partire dalla stessa image possono essere avviati molti containers indipendenti .  La relazione che esiste tra container e image e simile alla relazione che nella programmazione ad oggetti esiste tra classe e oggetto. Un oggetto è un classe che vive. E di classe possiamo avviare molte istanze così da avere molti oggetti inidendenti.  Così un container e una image viva e possiamo avere avviare una molteplicita di containers a partire dalla stessa classe.

In genere conviene partire da images disponibili on line modificandole piuttosto che partire da zero.
Le immagini disponibili per Docker possono essere ricercate con il comando search:

$ docker search debian 
docker search debian
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
debian                         Debian is a Linux distribution that's comp...   1724      [OK]       
neurodebian                    NeuroDebian provides neuroscience research...   29        [OK]       
jesselang/debian-vagrant       Stock Debian Images made Vagrant-friendly ...   9                    [OK]
armbuild/debian                ARMHF port of debian                            8                    [OK]
...
konstruktoid/debian            Debian base image                               0                    [OK]
pl31/debian                    Debian base image.                              0                    [OK]
gnumoksha/debian               [PT-BR] Imagem básica do Debian com ajust...    0                    [OK]

L’image utilizzata per testare docker in genere è Hello-World una immagine decisamente piccola.

In questo caso scarichiamo una image più complessa scarichiamo una image debian di base si tratta dell’ultima versione di debian jesse ( 51 MB da scaricare ).

Utilizziamo il comando pull debian

$ docker pull debian 
Using default tag: latest
latest: Pulling from library/debian
6a5a5368e0c2: Pull complete 
Digest: sha256:677f184a5969847c0ad91d30cf1f0b925cd321e6c66e3ed5fbf9858f58425d1a
Status: Downloaded newer image for debian:latest

Possiamo controllare le images disponibili con il comando docker images

$ docker images  
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
debian                latest              ddf73f48a05d        3 weeks ago         123 MB

Avviamo il container a partire dall’image scaricata con il comando run

$ docker run -i -t ddf73f48a05d /bin/bash 
root@7c7a22fdf29e:/# 

il comando indicato consente di avviare il container e lanciare il comando /bin/bash così da avere accesso alla console.
A questo punto è possibile utilizzare i comandi da terminale  per installare pacchetti e configurare a piacimento il container.

Per uscire digitare exit.

Per visualizzare le informazioni su docker utilizzare il comando info 

$ docker info  
Containers: 11
 Running: 3
 Paused: 2
 Stopped: 6
Images: 6
Server Version: 1.12.2
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 14
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
...
Docker Root Dir: /var/lib/docker
...

per una lista dei comandi digitare docker :

$ docker 
Usage: docker [OPTIONS] COMMAND [arg...]
 docker [ --help | -v | --version ]
A self-sufficient runtime for containers.
Options:
 --config=~/.docker Location of client config files
 -D, --debug Enable debug mode
 -H, --host=[] Daemon socket(s) to connect to
 -h, --help Print usage
 -l, --log-level=info Set the logging level
 --tls Use TLS; implied by --tlsverify
 --tlscacert=~/.docker/ca.pem Trust certs signed only by this CA
 --tlscert=~/.docker/cert.pem Path to TLS certificate file
 --tlskey=~/.docker/key.pem Path to TLS key file
 --tlsverify Use TLS and verify the remote
 -v, --version Print version information and quit
Commands:
 attach Attach to a running container
 build Build an image from a Dockerfile
 commit Create a new image from a container's changes
 cp Copy files/folders between a container and the local filesystem
 create Create a new container
 diff Inspect changes on a container's filesystem
 events Get real time events from the server
 exec Run a command in a running container
 export Export a container's filesystem as a tar archive
 history Show the history of an image
 images List images
 ...

Il servizio docker con sysv-rc-conf

il servizio docker sysv-rc-conf

Upgrade di Docker

Per effettuare l’upgrade di docker

$ apt-get upgrade docker-engine

Disinstallare Docker

Per disinstallare Docker rimuover il pacchetto docker-engine

$ apt-get purge docker-engine

Per disistallare il pacchetto e le dipendenze digitare

$ apt-get autoremove --purge docker-engine

per rimuovere o,ages, containers a i volumi rimuovere la cartella /var/lib/docker

$ rm -rf /var/lib/docker

Risorse: