| Objectif | Commande |
|---|---|
| Voir les images locales | docker images |
| Voir les containers | docker ps -a |
| Voir les logs d'un container | docker logs <id> |
| Démarrer un container | docker start <id> |
| Démarrer un container avec console | docker start --attach <name>docker run -it <moncontainer> /bin/bashdocker run --tty --interactive debian:7 |
| Stopper un container | docker stop <id> |
| Voir la configuration | docker inspect <id> |
| Chercher une image en distant | docker search nginx |
| Télécharger une image | docker pull nginx |
| Créer et démarrer un container | docker run -d --name Serveur nginx:latest |
| Lancer un container et le rendre accessible | docker run -d -p 9876:80 --name=MonWebserver nginx:latest |
| Démarrer un shell sur le container | docker exec -ti <id> /bin/bashdocker exec -ti MonWebserver /bin/bashdocker exec MonWebserver ls -al |
| Supprimer une image locale | docker rmi <REPOSITORY>:<tag> |
| Supprimer un container | docker rm <id> |
| Voir l'IP d'un container | docker inspect <id> | grep IPAddress |
| Création d'image | docker create --tty --interactive --name="monImage" debian:7 |
| Supprimer tous les containers arrêtés | docker rm $(docker ps -a -q) |
| Construire depuis un Dockerfile | docker build -t myapache .Principales directives Dockerfile : MAINTAINER : nom et email du mainteneurFROM : image de base (Ubuntu, Debian)VOLUME : point de montageRUN : commande à exécuter pour installerENTRYPOINT : commande au démarrage (une seule sera exécutée)CMD : commande au démarrageADD : copier un fichier dans le containerUSER : utilisateur qui exécute les commandesEXPOSE : port(s) à exposer |
| Apache PHP | docker run -d -p 81:80 -v /home/user/site:/var/www/html apache-php-dev |
| MySQL | docker pull mysqldocker run -d -p 3306:3306 -v /home/user/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=azerty mysql |
FROM debian:latest MAINTAINER Radern <a@b.c> RUN apt-get update && apt-get install -y apache2 php5 libapache2-mod-php5 php5-mysql # Variables d'environnement ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_PID_FILE /var/run/apache2.pid ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_SITE /var/www/site RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR $APACHE_SITE # Tracer toutes les erreurs PHP RUN sed -i -e 's/^error_reporting\s*=.*/error_reporting = E_ALL/' /etc/php5/apache2/php.ini RUN sed -i -e 's/^display_errors\s*=.*/display_errors = On/' /etc/php5/apache2/php.ini # Configuration personnalisée ADD ./fichier.conf /etc/apache2/sites-available/ RUN a2ensite fichier.conf RUN a2dissite 000-default.conf RUN a2enmod rewrite RUN a2enmod expires RUN a2enmod headers RUN a2enmod cgi EXPOSE 80 ENTRYPOINT ["/usr/sbin/apache2"] CMD ["-D", "FOREGROUND"]
<VirtualHost *:80>
DocumentRoot /var/www/site/
ServerName monapache
<Directory /var/www/site>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
# Pour un environnement Apache/MySQL/PHP/PhpMyAdmin
# Site en local dans le répertoire www
# Base de données locale donc persistence des données
# Container MySQL
mysql:
image: mysql:5.7
environment:
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpassword
MYSQL_ROOT_PASSWORD: dbrootpassword
MYSQL_DATABASE: dbdatabase
volumes_from:
- datastore
container_name: rad_mysql
# Container PhpMyAdmin
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- '8080:80'
container_name: rad_phpmyadmin
# Container de stockage
datastore:
image: busybox
volumes:
- /var/lib/mysql
container_name: rad_store
# Container PHP basé sur l'image du répertoire app
php:
build: app
ports:
- '80:80'
links:
- mysql
volumes:
- ./www:/var/www/site
container_name: rad_apache
<?php
mysqli_connect("mysql", "dbuser", "dbpassword") or die(mysqli_error());
echo "Connected to MySQL<br />";
phpinfo();
?>
<?php
echo 'CREATION<br/>';
$servername = "mysql";
$username = "dbuser";
$password = "dbpassword";
$dbname = "dbdatabase";
$conn = mysqli_connect($servername, $username, $password);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "CREATE DATABASE $dbname";
if (mysqli_query($conn, $sql)) {
echo "Database created successfully";
} else {
echo "Error creating database: " . mysqli_error($conn);
}
mysqli_select_db($conn, $dbname);
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
<?php
echo 'INSERTION<br/>';
$servername = "mysql";
$username = "dbuser";
$password = "dbpassword";
$dbname = "dbdatabase";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully<br/>";
} else {
echo "Error: " . $sql . "<br/>" . $conn->error;
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
Ressources :