Docker CheatSheet

IMAGES

Rechercher Images Dans Le Repo Docker Public

$ docker search image_name:stable

Charger Image Debian:Stable depuis Le Repo Docker Public

$ docker pull image_name:stable

Lister les images

$ docker images
$ docker images -a

-a, --all Show all images (default hides intermediate images)

Supprimer une image

$ docker rmi image_id_or_image_name

Supprimer toutes les images

$ docker rmi $(docker images -a -q)

-q, --quiet Only show numeric IDs

Enregistrer les modif dans l'image

$ docker commit image_name Modif_name

CONTAINER

Lister tous les conteneurs

$ docker ps -a
$ docker ps -l

--all , -a Show all containers (default shows just running) --latest , -l Show the latest created container (includes all states

Lister les conteneurs actifs

$ docker ps

Stopper un conteneur efficlloud-00

$ docker stop efficlloud-00

Arrêter tous les conteneurs

$ docker stop $(docker ps -a -q)

Mettre en pause un conteneur efficlloud-00

$ docker pause efficlloud-00

Supprimer un conteneur efficloud-00

$ docker rm efficloud-01

Supprimer tous les conteneurs

$ docker rm $(docker ps -a -q)

Détail sur un conteneur

$ docker inspect "container_id"

Lancer un container de nom efficloud-01 depuis l'image efficloud_template en mode interactif avec renvoi de port 22

$ docker run -i --name efficloud-01 -p 2221:22 -t efficloud_template /bin/bash

Lancer un container de nom efficloud-02 depuis l'image efficloud_template en mode daemon avec renvoi de port 22

$ docker run -d --name efficloud-02 -p 2222:22 efficloud_template

Lancer un container de nom efficloud-03 depuis l'image efficloud_template en mode daemon avec ....

$ docker run -d -P --name efficloud-03 efficloud_template

Savoir sur quel port du host est redirigé le port 22 du Container efficloud-03

$ docker port efficloud-03 22

Lancer un container de nom efficloud-04 depuis l'image efficloud_template en mode interactif avec renvoi de port 22 et mount vol

$ docker run -i --name efficloud-04 -p 2224:22 -v /DockerData:/datapps -t efficloud_template /bin/bash

Monter dossier /export de host dans dossier /datapps du container

$ docker run -d -p 2222:22 -v /export:/datapps container_id

Voir la sortie d'un container executer en mode Detached

$ docker logs [Container iD]
$ docker logs -f [Container iD]
$ docker logs container_name | tail
$ docker -diff container

S'attacher à un container

$ docker attach efficloud-01
$ docker attach debian-01 —sig-proxy=false 75

Se détacher du container

Ctrl-p + Ctrl-q

Se connecter en SSH au container efficloud-04

$ ssh -p 2224 root@localhost

Lancer une commande sur un container actif

$ docker exec -d container_name touch /tmp/myfile
$ docker exec -it container_name /bin/bash

DOCKERFILE

Création de son Dockerfile pour une image que l'on nommera efficloud-template

$ mkdir -p /var/lib/docker/image/efficloud-template
$ cd /var/lib/docker/image/efficloud-template

$ touch Dockerfile

$ ls

$ sudo nano dockerfile
MAINTAINER : nom et mail de mainteneur du conteneur
FROM : image de base (ubuntu, debian)
VOLUME : Point de montage
RUN : commande à exécuter pour installer le conteneur.
ENTRYPOINT : commande qui s’exécute au démarrage du conteneur (une seule sera exécutée).
CMD : commande qui s’exécute au démarrage du conteneur.
ADD : Copier un fichier du répertoire courant dans le filesystem du conteneur.
USER : utilisateur qui exécute les commandes dans le conteneur.
EXPOSE : Port(s) à exposer à l’exterieur.
DIFF:

Construire son Image

$ docker build -t efficloud_template -f dockerfile . (Le Point est important à la fin)

Docker attach

By ID

$ sudo docker attach <container-id>

or by Name

$ sudo docker attach <container-name>
$ root@<container-id>:/#

UPDATE: (docker >= 1.3) If we use attach we can use only one instance of shell. So if we want open new terminal with new instance of container's shell, we just need run the following:

By ID

$ sudo docker exec -it <container-id> /bin/bash

or by Name

$ sudo docker exec -i -t <container-name> /bin/bash
$ root@<container-id>:/#

Docker Compose CheatSheet

Deploying changes

When you make changes to your app code, you’ll need to rebuild your image and recreate your app’s containers. To redeploy a service called web, you would use:

$ docker-compose build web

$ docker-compose up --no-deps -d web

This will first rebuild the image for web and then stop, destroy, and recreate just the web service. The --no-deps flag prevents Compose from also recreating any services which web depends on.

Connect to Docker MySQL container from localhost?

Using docker-compose up

Since you published port 3306 on your docker host, from that host itself you would connect to 127.0.0.1:3306.

Using docker-compose run

In that case the port mapping section of the docker-compose.yml file is ignored. To have the port mapping section considered, you have to add the --service-ports option:

docker-compose run --service-ports db

Additional note

Beware that by default, the mysql client tries to connect using a unix socket when you tell it to connect to localhost. So do use 127.0.0.1 and not localhost:

$ mysql -h 127.0.0.1 -P 3306 -u root

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

$ mysql -h localhost -P 3306 -u root

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Install Docker Ubuntu 1604

$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
$ sudo apt-get update
$ sudo apt-get install docker-engine
$ sudo service docker start
$ sudo usermod -aG docker $USER
$ members docker

$ sudo nano /etc/default/grub
    GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
$ sudo update-grub
$ reboot

Start Docker on Boot

$ sudo systemctl enable docker
$ docker info

Upgrade Docker

$ sudo apt-get upgrade docker-engine

Uninstall Docker

$ sudo apt-get purge docker-engine
$ sudo apt-get autoremove --purge docker-engine (suppression Docker + dépendances)
$ rm -rf /var/lib/docker (Suppression  images, containers et volumes)

Fichier de Configuration de Docker

$ cd /var/lib/docker
$ vim /etc/default/docker.io

Install Docker CentOS-7

Update CentOS

$ sudo yum update

Create file /etc/yum.repos.d/docker.repo

$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

Update CentOS

$ sudo yum update

Install Docker

$ sudo yum install docker-engine

Enable Docker service

$ sudo systemctl enable docker.service

Start Docker

$ sudo systemctl start docker

Check docker

$ sudo docker search nginx

Add user localadmin to docker group

$ sudo usermod -aG docker localadmin

Start Docker on Boot

$ sudo systemctl enable docker

results matching ""

    No results matching ""