$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
[...]
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Commandes principales
Lister les conteneurs
conteneurs actifs
$ docker ps
conteneur ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dbec964fa3a nginx:latest "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp agitated_dubinsky
Tous les conteneurs
$ docker ps -a [--all]
conteneur ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dbec964fa3a nginx:latest "/docker-entrypoint.…" 6 minutes ago Up 7 minutes 80/tcp agitated_dubinsky
882f5d50bdab nginx:latest "/docker-entrypoint.…" 13 minutes ago Exited (0) 12 minutes ago dreamy_yalow
[...]
Lancer un conteneur
$ docker run nginx:latest
Options
-d : lance le conteneur en arrière-plan (detached)
-ti : mode interactif (text interactive)
--rm : supprime le conteneur lorsqu'il est stoppé
--name : assigne un nom au conteneur
--hostname : modifie le hostname du système dans le conteneur
--dns : précise le serveur DNS à utiliser dans le conteneur
for color in {0..255}; do
tput setab $color
echo -n "$color "
done
tput sgr0
echo
~/.bashrc
Equivalence de couleurs
Couleur
Code
Black
0;30
Blue
0;34
Green
0;32
Cyan
0;36
Red
0;31
Purple
0;35
Brown
0;33
Light Gray
0;37
Dark Gray
1;30
Light Blue
1;34
Light Green
1;32
Light Cyan
1;36
Light Red
1;31
Light Purple
1;35
Yellow
1;33
White
1;37
Eléments basiques
Code
Elément affiché
\a
Echappement
\d
Date (Sun Jun 20)
\e
Caractère 'Bell'
\h
Nom d'hôte (hostname)
\H
Nom d'hôte complet (hostname.domain.tld)
\j
Nombre de process lancés par le shell
\l
Nom du terminal
\n
Retour à la ligne
\r
Retour chariot
\u
Nom d'utilisateur
\v
Version de Bash
\w
Répertoire courant
\W
Chemin complet du répertoire courant
!
Numéro d'historique de la commande en cours
Exemples
Couleur du prompt en rouge
PS1='\[\033[31m\][\u@\h \W]\$\[\033[0m\] '
Couleur du prompt en bleu
PS1='\[\033[34m\][\u@\h \W]\$\[\033[0m\] '
Bashrc
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
####################
# SHELL OPTS
###############
#PS1='[\u@\h \W]\$ '
PS1='\[\033[34m\][\u@\h \w]\$\[\033[0m\] '
####################
# ENV
###############
# Editor
export EDITOR=vim
####################
# ALIAS
###############
# Colorization of outputs
alias diff='diff --color=auto'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias ip='ip --color=auto'
alias dmesg='dmesg --color=always'
# Commands alias
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias cls='clear'
alias vi='vim'
# Tricks & Useful aliases
alias cd..='cd ..'
alias env='env | sort'
# -> if the second argument is an alias, it will get expanded prior to passing to sudo
alias sudo='sudo '
alias keygen='keygen -C "$(whoami)@$(uname -n)-$(date -I)"'
systemctl # Contrôle systemd et gère les unités.
journalctl # Consultation du journal de systemd.
loginctl # Contrôle des sessions utilisateurs (systemd-logind).
systemctl # Liste des unités
systemctl list-units
systemctl status <unit> # Affiche le statut de l'unité
systemctl list-dependencies [<unit>] # Liste des dépendances d'une unité
$ systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
● systemd-modules-load.service loaded failed failed Load Kernel Modules
On récupère ainsi le nom du service en échec à partir duquel on va pouvoir demander plus de détails.
Détails sur le service en échec
$ systemctl status systemd-modules-load.service
● systemd-modules-load.service - Load Kernel Modules
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2016-12-04 09:24:59 CET; 18min ago
Docs: man:systemd-modules-load.service(8)
man:modules-load.d(5)
Process: 333 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
Main PID: 333 (code=exited, status=1/FAILURE)
Ces informations nous permettent de récupérer le PID du process incriminé, et de cibler plus précisément notre recherche :
$ journalctl _PID=333
-- Logs begin at Mon 2016-11-21 08:22:44 CET, end at Sun 2016-12-04 09:40:41 CET. --
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxpci'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetadp'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetflt'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'
Maintenant c'est déjà plus clair, le problème semble provenir de modules absents. Le nom de ces modules nous donne un indice sur l'application incriminée, ici VirtualBox.
Gestion du journal
$ journalctl --disk-usage # Taille occupée par les journaux sur le disque
$ journalctl --verify # Vérification de la "possible" corruption des fichiers journaux
Taille du journal
Editer le fichier /etc/systemd/journald.conf et modifier la valeur suivante :
[Journal]
...
SystemMaxUse=50M
Nettoyage du journal
$ sudo journalctl --vacuum-size=50M # Suppression des journaux archivés jusqu'à ce que leur taille totale descende en deça de 50Mo
$ sudo journalctl --vacuum-time=2weeks # Suppression des événements agés de plus de deux semaines
La liste des miroirs les plus rapides peut être déterminée à l'aide de l'utilitaire /usr/bin/rankmirrors.
Pour mettre à jour la liste des miroirs français en http/https et IPv4, lancer les commandes suivantes :
$ sudo pacman -Sy # Synchronise la liste des paquets
$ sudo pacman -Syu # Synchronise la liste des paquets et effectue une mise à jour
$ sudo pacman -Ss <package> # Cherche un paquet contenant le terme "package"
$ sudo pacman -Si <package> # Information sur un paquet
$ sudo pacman -S <package> # Installe "package"
$ sudo pacman -S --asdeps # Installe un paquet comme dépendance
Mise à jour (-U)
$ sudo pacman -U <package> # Met à jour "package"
Requête (-Q)
$ sudo pacman -Q # Liste les paquets installés
$ sudo pacman -Ql <package> # Liste les fichiers d'un paquet
$ sudo pacman -Qo /path/file # Demande à quel paquet appartient le fichier
$ sudo pacman -Qdtq # Liste des dépendances inutiles
Suppression (-R)
$ sudo pacman -Rs <package> # Supprime un paquet et ses dépendances
$ sudo pacman -Rsn <package> # Supprime un paquet, sa configuration et ses dépendances
$ sudo pacman -Rs $(pacman -Qtdq) # Suppression des dépendances inutiles
Création de la liste des paquets installés pour réinstallation
Suppression des paquest non-installés du cache (anciennes versions ou non installées sur le système) :
$ sudo pacman -Sc
Il est aussi possible de vider complètement le cache. Il s’agit d’une très mauvaise pratique qui empêche toute réinstallation de paquets depuis le cache et impose donc de les télécharger à nouveau.
Vous ne devriez jamais utiliser cette commande à moins d’un besoin absolu de récupérer de l’espace disque.
$ sudo pacman -Scc
AUR
$ yaourt (utilise la même syntaxe que pacman)
Mise à jour du système
$ yaourt -Syua # Mise à jour du système (pacman + aur)
Local
Attention ! Pour des raisons de sécurité, éviter d'utiliser makepkg en root. Préférer l'utilisation de sudo.