Dans cet exercice vous allez utiliser Vagrant pour créer une machine virtuelle et installer Docker sur celle-ci.
Quelques mots sur Vagrant
Vagrant est un excellent outil de Hashicorp, il est disponible pour Windows, Linux et Mac et permet de lancer des machines virtuelles Linux sur VirtualBox, Hyper-V, VMWare, …
Vagrant repose sur la définition d’un fichier Vagrantfile dans lequel sont précisés les caractéristiques de la VM (ou des VMs) à provisionner et configurer.
L’installation de Vagrant est très simple, il suffit de récupérer le binaire depuis le site officiel et de mettre celui-ci dans votre PATH. En fonction de votre environnement, il pourrait être nécessaire d’installer l’hyperviseur VirtualBox qui sera utilisé par Vagrant.
Création d’une VM
Dans un nouveau dossier, créez le fichier nommé Vagrantfile avec le contenu suivant:
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/bionic64"
config.vm.network "private_network", ip: "192.168.33.11"
config.vm.provision "shell", inline: <<-SHELL
curl -sSLf https://get.docker.com | sh
sudo usermod -aG docker vagrant
SHELL
end
Ce fichier précise qu’une VM basée sur l’image hashicorp/bionic64 (une déclinaison de Ubuntu) sera créée et que l’adresse IP local 192.168.33.11 lui sera attribuée. Une fois cette VM créée, Docker sera installé dans celle-ci.
Utilisez la commande suivante afin de créer cette VM:
$ vagrant up
Lancez ensuite un shell dans cette VM:
$ vagrant ssh
et vérifiez que Docker a bien été installé, en utilisant la sous commande info:
vagrant@vagrant:~$ docker info
Vous devriez obtenir un résultat similaire à celui ci-dessous:
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.6
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
Default Runtime: runc
Init Binary: docker-init
containerd version: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-58-generic
Operating System: Ubuntu 18.04.3 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 985.5MiB
Name: vagrant
ID: EVC2:HHMI:A7C5:HY7I:TKAB:QIYD:3TH6:SRYZ:337P:ZL5P:FJVX:SDCQ
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
Cleanup
La VM créée précédemment peut être supprimer en utilisant la commande suivante:
$ vagrant destroy -f