Outils pour utilisateurs

Outils du site


systeme:docker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
systeme:docker [2016/10/31 14:32] – [Syntaxe docker-compose.yml] rootsysteme:docker [2018/02/23 21:27] (Version actuelle) root
Ligne 29: Ligne 29:
   * [[https://docs.docker.com/engine/security/https/|Chiffrement]]   * [[https://docs.docker.com/engine/security/https/|Chiffrement]]
   * [[https://docs.docker.com/engine/security/apparmor/|AppArmor]]   * [[https://docs.docker.com/engine/security/apparmor/|AppArmor]]
 +
 +Activation namespace user pour remappinf des uid entre le conteneur et la machine hôte avec : **userns-remap** :
 +  * https://resinfo.org/IMG/pdf/secu-docker.pdf
 +  * https://resourcepool.io/fr/2016/09/09/francais-le-user-namespace-dans-docker/
  
 ===== Plugins ===== ===== Plugins =====
Ligne 428: Ligne 432:
 On créer un fichier [[#dockerfile|Dockerfile]] dans le répertoire courant et on lance la construction de l'image : On créer un fichier [[#dockerfile|Dockerfile]] dans le répertoire courant et on lance la construction de l'image :
 <xtermrtf> <xtermrtf>
-$ docker build -t ouruser/sinatra:v2 .+$ docker build -t gigi206/apache2_php5:v1 . 
 +$ docker tag gigi206/apache2_php5:v1 gigi206/apache2_php5:latest 
 +$ docker push gigi206/apache2_php5:lates 
 +</xtermrtf> 
 + 
 +==== docker save ==== 
 +[[https://docs.docker.com/engine/reference/commandline/save/|Exporte une image au format tar]] : 
 +<xtermrtf> 
 +$ docker save localhost:5000/suse/sles12sp2 -o sles12sp2.tar 
 +</xtermrtf> 
 + 
 +==== docker load ==== 
 +[[https://docs.docker.com/engine/reference/commandline/load/|Importe une image au format tar]] : 
 +<xtermrtf> 
 +$ cat exampleimage.tgz | docker import - exampleimagelocal:new
 </xtermrtf> </xtermrtf>
  
Ligne 665: Ligne 683:
  
 === docker service inspect === === docker service inspect ===
-[[https://docs.docker.com/engine/reference/commandline/service_inspect/|Affiche la configuration du servive]] :+[[https://docs.docker.com/engine/reference/commandline/service_inspect/|Affiche la configuration du service]] :
 <xtermrtf> <xtermrtf>
 $ docker service inspect redis --pretty $ docker service inspect redis --pretty
Ligne 692: Ligne 710:
 <xtermrtf> <xtermrtf>
 $ docker service update --limit-cpu 2 redis $ docker service update --limit-cpu 2 redis
 +</xtermrtf>
 +
 +===== Dockerfile =====
 +  * [[https://docs.docker.com/engine/reference/builder/#/dockerignore-file|Fichier .dockerignore]]
 +
 +==== FROM ====
 +[[https://docs.docker.com/engine/reference/builder/#/from|Auteur du fichier Dockerfile]] :
 +<xtermrtf>
 +MAINTAINER <name>
 +</xtermrtf>
 +
 +==== MAINTAINER ====
 +[[https://docs.docker.com/engine/reference/builder/#/maintainer|Image utilisée pour fabriquer la nouvelle image]] :
 +<xtermrtf>
 +FROM <image>
 +FROM <image>:<tag>
 +FROM <image>@<digest>FROM <image>@<digest>
 +</xtermrtf>
 +
 +==== RUN ====
 +[[https://docs.docker.com/engine/reference/builder/#/run|Exécute des commandes pour la création de l’image]] :
 +<xtermrtf>
 +RUN <command>
 +RUN ["executable", "param1", "param2"]
 +</xtermrtf>
 +
 +==== CMD ====
 +[[https://docs.docker.com/engine/reference/builder/#/cmd|Commande lancée au démarrage du conteneur]] :
 +<xtermrtf>
 +CMD <command>
 +CMD ["executable", "param1", "param2"]
 +</xtermrtf>
 +
 +Si un [[#ENTRYPOINT]] est définit :
 +<xtermrtf>
 +CMD ["param1","param2"]
 +</xtermrtf>
 +
 +==== LABEL ====
 +[[https://docs.docker.com/engine/reference/builder/#/label|Ajoute des méta-data à une image]] :
 +<xtermrtf>
 +LABEL "com.example.vendor"="ACME Incorporated"
 +LABEL com.example.label-with-value="foo"
 +LABEL version="1.0"
 +LABEL description="This text illustrates \
 +that label-values can span multiple lines."
 +LABEL multi.label1="value1" multi.label2="value2" other="value3"
 +LABEL multi.label1="value1" \
 +      multi.label2="value2" \
 +      other="value3"
 +</xtermrtf>
 +
 +==== EXPOSE ====
 +[[https://docs.docker.com/engine/reference/builder/#/expose|Expose un port]] :
 +<xtermrtf>
 +EXPOSE <port> [<port>...]
 +</xtermrtf>
 +
 +==== ENV ====
 +[[https://docs.docker.com/engine/reference/builder/#/env|Définit des varaibles d'environnement]] :
 +<xtermrtf>
 +ENV myName John Doe
 +ENV myDog Rex The Dog
 +ENV myCat fluffy
 +ENV myName="John Doe" myDog=Rex\ The\ Dog \
 +    myCat=fluffy
 +</xtermrtf>
 +
 +==== ADD ====
 +[[https://docs.docker.com/engine/reference/builder/#/add|Ajoute des fichiers]] :
 +<xtermrtf>
 +ADD <src>... <dest>
 +ADD ["<src>",... "<dest>"
 +</xtermrtf>
 +
 +<xtermrtf>
 +ADD hom* /mydir/
 +</xtermrtf>
 +
 +<note info>
 +''ADD'' peut pour la source prendre des URLS (http/https) et des archives qu'il décompressera dans la destination. Voir aussi [[#COPY]]
 +</note>
 +
 +==== COPY ====
 +[[https://docs.docker.com/engine/reference/builder/#/copy|Ajoute des fichiers]] :
 +<xtermrtf>
 +COPY <src>... <dest>
 +COPY ["<src>",... "<dest>"
 +</xtermrtf>
 +
 +<note info>
 +A la différence de [[#ADD]], ''COPY'' ne supporte pas les URLS en source et ne décompressera pas les archives.
 +</note>
 +
 +==== ENTRYPOINT ====
 +[[https://docs.docker.com/engine/reference/builder/#/entrypoint|Permet d’exécuter la commande principale du conteneur. On peut également lui passer un script]] :
 +<xtermrtf>
 +ENTRYPOINT ["executable", "param1", "param2"]
 +ENTRYPOINT command param1 param2
 +</xtermrtf>
 +
 +<note info>
 +Si l'on définit également [[#CMD]] alors qu'un ''ENTRYPOINT'' est définit alors ce qui est déclaré dans ''CMD'' sera passé en argument à ''ENTRYPOINT''.
 +</note>
 +
 +==== VOLUME ====
 +[[https://docs.docker.com/engine/reference/builder/#/volume|Ajoute un volume]] :
 +<xtermrtf>
 +VOLUME <volume>
 +VOLUME ["<volume>"
 +</xtermrtf>
 +
 +==== USER ====
 +[[https://docs.docker.com/engine/reference/builder/#/user|Indique avec quel utilisateur doit être lancé CMD, RUN et ENTRYPOINT]] :
 +<xtermrtf>
 +USER daemon
 +</xtermrtf>
 +
 +==== WORKDIR ====
 +[[https://docs.docker.com/engine/reference/builder/#/workdir|Indique le CWD pour CMD, RUN, ENTRYPOINT, COPY et ADD]] :
 +<xtermrtf>
 +WORKDIR /path/to/workdir
 +</xtermrtf>
 +
 +==== ARG ====
 +[[https://docs.docker.com/engine/reference/builder/#/arg|Définit des variables pour les réutiliser dans le Dockerfile]] :
 +<xtermrtf>
 +FROM busybox
 +USER ${user:-some_user}
 +ARG user
 +USER $user
 +</xtermrtf>
 +
 +Variables prédéfinies :
 +  * HTTP_PROXY
 +  * http_proxy
 +  * HTTPS_PROXY
 +  * https_proxy
 +  * FTP_PROXY
 +  * ftp_proxy
 +  * NO_PROXY
 +  * no_proxy
 +
 +==== ONBUILD ====
 +[[https://docs.docker.com/engine/reference/builder/#/onbuild|Indique un trigger à l'image qui sera lancé par un autre  BUILD sur cette image]] :
 +<xtermrtf>
 +ONBUILD ADD . /app/src
 +ONBUILD RUN /usr/local/bin/python-build --dir /app/src
 +</xtermrtf>
 +
 +<note>
 +Pratique pour lancer une commande sur notre image si elle a été forkée...
 +</note>
 +==== STOPSIGNAL ====
 +[[https://docs.docker.com/engine/reference/builder/#/stopsignal|Indique le signal à envoyer au conteneur pour son arrêt]] :
 +<xtermrtf>
 +STOPSIGNAL signal
 +</xtermrtf>
 +
 +==== HEALTHCHECK ====
 +[[https://docs.docker.com/engine/reference/builder/#/healthcheck|Vérifie la santé en lançant une commande dans le conteneur]] :
 +<xtermrtf>
 +HEALTHCHECK [OPTIONS] CMD command
 +HEALTHCHECK --interval=5m --timeout=3s \
 +  CMD curl -f http://localhost/ || exit 1
 +</xtermrtf>
 +
 +OPTIONS :
 +  * --interval=DURATION (default: 30s)
 +  * --timeout=DURATION (default: 30s)
 +  * --retries=N (default: 3)
 +
 +''CMD'' peut être un script qui peut renvoyer le code de sortie ci-dessous :
 +  * 0: success - the container is healthy and ready for use
 +  * 1: unhealthy - the container is not working correctly
 +  * 2: reserved - do not use this exit code
 +
 +==== SHELL ====
 +[[https://docs.docker.com/engine/reference/builder/#/shell|Indique quel shell utiliser]] :
 +<xtermrtf>
 +SHELL ["executable", "parameters"]
 +SHELL ["/bin/sh", "-c"]
 </xtermrtf> </xtermrtf>
  
Ligne 933: Ligne 1133:
  
 === env_file === === env_file ===
-[[https://docs.docker.com/compose/compose-file/#/envfile|Déclare des variables d'environnement]] :+[[https://docs.docker.com/compose/compose-file/#/envfile|Déclare des variables d'environnement dans un fichier]] :
 <xtermrtf> <xtermrtf>
 env_file: .env env_file: .env
Ligne 948: Ligne 1148:
 </code> </code>
  
 +<note info>
 +Si vous spécifier l'option [[#build]], les variables définies dans votre fichier d'environnement ne seront pas prises en compte. Dans ce cas, utilisez l'option [[#args]] à la place dans les sous-options de [[#build]].
 +</note>
 +
 +=== environment ===
 +[[https://docs.docker.com/compose/compose-file/#/environment|Déclare des variables d'environnement]] :
 +<xtermrtf>
 +environment:
 +  RACK_ENV: development
 +  SHOW: 'true'
 +  SESSION_SECRET:
 +
 +environment:
 +  - RACK_ENV=development
 +  - SHOW=true
 +  - SESSION_SECRE
 +</xtermrtf>
 +
 +<note info>
 +Si vous spécifier l'option [[#build]], les variables d'environnement définies ne seront pas prises en compte. Dans ce cas, utilisez l'option [[#args]] à la place dans les sous-options de [[#build]].
 +</note>
 +
 +=== expose ===
 +[[https://docs.docker.com/compose/compose-file/#/expose|Expose un port vers l’extérieur]] :
 +<xtermrtf>
 +expose:
 + - "3000"
 + - "8000"
 +</xtermrtf>
 +
 +<note info>
 +Voir également [[#ports]].
 +</note>
 +
 +=== extends ===
 +[[https://docs.docker.com/compose/compose-file/#/extends|Permet de faire appel à un autre fichier yml pour déclarer un service]] :
 +<xtermrtf>
 +extends:
 +  file: common.yml
 +  service: webapp
 +</xtermrtf>
 +
 +<note info>
 +''file'' peut être défini par un chemin relatif ou absolu.
 +</note>
 +
 +=== external_links ===
 +[[https://docs.docker.com/compose/compose-file/#/externallinks|Lie au niveau réseau 2 conteneurs qui n'ont pas été déclarés dans le même fichier docker-compose.yml]] :
 +<xtermrtf>
 +external_links:
 + - redis_1
 + - project_db_1:mysql
 + - project_db_1:postgresql
 +</xtermrtf>
 +
 +<note info>
 +Voir aussi [[#links]]
 +</note>
 +
 +=== extra_hosts ===
 +[[https://docs.docker.com/compose/compose-file/#/extrahosts|Ajoute une entrée dans le fichier /etc/hosts]] :
 +<xtermrtf>
 +extra_hosts:
 + - "somehost:162.242.195.82"
 + - "otherhost:50.31.209.229"
 +</xtermrtf>
 +
 +=== image ===
 +[[https://docs.docker.com/compose/compose-file/#/image|Spécifie l'image du conteneur]] :
 +<xtermrtf>
 +image: ubuntu:14.04
 +</xtermrtf>
 +
 +=== labels ===
 +[[https://docs.docker.com/compose/compose-file/#/labels|Ajoute un label dans les metadata]] :
 +<xtermrtf>
 +labels:
 +  com.example.description: "Accounting webapp"
 +  com.example.department: "Finance"
 +  com.example.label-with-empty-value: ""
 +
 +labels:
 +  - "com.example.description=Accounting webapp"
 +  - "com.example.department=Finance"
 +  - "com.example.label-with-empty-value"
 +</xtermrtf>
 +
 +=== links ===
 +[[https://docs.docker.com/compose/compose-file/#/links|Lie au niveau réseau 2 conteneurs qui sont déclarés dans le même fichier docker-compose.yml]] :
 +<xtermrtf>
 +web:
 +  links:
 +   - db
 +   - db:database
 +   - redis
 +</xtermrtf>
 +
 +<note info>
 +Voir aussi [[#external_links]]. Les conteneurs liés doivent posséder au moins un réseau en commun pour communiquer.
 +</note>
 +
 +=== logging ===
 +[[https://docs.docker.com/compose/compose-file/#/logging|Définit de quelle façon le conteneur doit envoyer ses logs]] :
 +<xtermrtf>
 +logging:
 +  driver: syslog
 +  options:
 +    syslog-address: "tcp://192.168.0.42:123"
 +</xtermrtf>
 +
 +<note info>
 +[[https://docs.docker.com/engine/admin/logging/overview/|Liste des drivers disponibles]].
 +</note>
 +
 +=== network_mode ===
 +[[https://docs.docker.com/compose/compose-file/#/networkmode|Définit le mode pour le réseau réseau]] :
 +<xtermrtf>
 +network_mode: "bridge"
 +network_mode: "host"
 +network_mode: "none"
 +network_mode: "service:[service name]"
 +network_mode: "container:[container name/id]"
 +</xtermrtf>
 +
 +=== networks ===
 +[[https://docs.docker.com/compose/compose-file/#/networks|Définit les réseaux]] :
 +<xtermrtf>
 +services:
 +  some-service:
 +    networks:
 +     - some-network
 +     - other-network
 +</xtermrtf>
 +
 +=== aliases ===
 +[[https://docs.docker.com/compose/compose-file/#/aliases|Définit les alias]] :
 +<xtermrtf>
 +services:
 +  some-service:
 +    networks:
 +     - some-network
 +     - other-network
 +</xtermrtf>
 +
 +=== ipv4_address, ipv6_address ===
 +[[https://docs.docker.com/compose/compose-file/#/ipv4address-ipv6address|Spécifie une adresse ipv4 et/ou ipv6 pour un conteneur]] :
 +<xtermrtf>
 +services:
 +  app:
 +    image: busybox
 +    command: ifconfig
 +    networks:
 +      app_net:
 +        ipv4_address: 172.16.238.10
 +        ipv6_address: 2001:3984:3989::10
 +</xtermrtf>
 +
 +=== pid ===
 +[[https://docs.docker.com/compose/compose-file/#/pid|Définit le pid mode]] :
 +<xtermrtf>
 +pid: "host"
 +</xtermrtf>
 +
 +<note info>
 +[[https://docs.docker.com/engine/reference/run/#pid-settings---pid|Voir les pid mode]].
 +</note>
 +
 +=== ports ===
 +[[https://docs.docker.com/compose/compose-file/#/ports|Définit les ports du conteneur]] :
 +<xtermrtf>
 +ports:
 + - "3000"
 + - "3000-3005"
 + - "8000:8000"
 + - "9090-9091:8080-8081"
 + - "49100:22"
 + - "127.0.0.1:8001:8001"
 + - "127.0.0.1:5000-5010:5000-5010"
 +</xtermrtf>
 +
 +<note info>
 +Voir également [[#expose]].
 +</note>
 +
 +=== security_opt ===
 +[[https://docs.docker.com/compose/compose-file/#/securityopt|Sécurité SeLinux]] :
 +<xtermrtf>
 +security_opt:
 +  - label:user:USER
 +  - label:role:ROLE
 +</xtermrtf>
 +
 +=== stop_signal ===
 +[[https://docs.docker.com/compose/compose-file/#/stopsignal|Signal envoyé au conteneur pour son arrêt]] :
 +<xtermrtf>
 +stop_signal: SIGUSR1
 +</xtermrtf>
 +
 +=== ulimits ===
 +[[https://docs.docker.com/compose/compose-file/#/ulimits|Paramètres ulimits]] :
 +<xtermrtf>
 +ulimits:
 +  nproc: 65535
 +  nofile:
 +    soft: 20000
 +    hard: 40000
 +</xtermrtf>
 +
 +=== volumes, volume_driver ===
 +[[https://docs.docker.com/compose/compose-file/#/volumes-volumedriver|Mapping des volulmes]] :
 +<xtermrtf>
 +volumes:
 +  # Just specify a path and let the Engine create a volume
 +  - /var/lib/mysql
 +
 +  # Specify an absolute path mapping
 +  - /opt/data:/var/lib/mysql
 +
 +  # Path on the host, relative to the Compose file
 +  - ./cache:/tmp/cache
 +
 +  # User-relative path
 +  - ~/configs:/etc/configs/:ro
 +
 +  # Named volume
 +  - datavolume:/var/lib/mysql
 +</xtermrtf>
 +
 +=== volumes_from ===
 +[[https://docs.docker.com/compose/compose-file/#/volumesfrom|Monte les volumes définit dans un autre conteneur]] :
 +<xtermrtf>
 +volumes_from:
 + - service_name
 + - service_name:ro
 + - container:container_name
 + - container:container_name:rw
 +</xtermrtf>
 +
 +=== cpu_shares, cpu_quota, cpuset, domainname, hostname, ipc, mac_address, mem_limit, memswap_limit, privileged, read_only, restart, shm_size, stdin_open, tty, user, working_dir ===
 +[[https://docs.docker.com/compose/compose-file/#/cpushares-cpuquota-cpuset-domainname-hostname-ipc-macaddress-memlimit-memswaplimit-privileged-readonly-restart-shmsize-stdinopen-tty-user-workingdir|Définit différent paramètres]] :
 +<xtermrtf>
 +cpu_shares: 73
 +cpu_quota: 50000
 +cpuset: 0,1
 +
 +user: postgresql
 +working_dir: /code
 +
 +domainname: foo.com
 +hostname: foo
 +ipc: host
 +mac_address: 02:42:ac:11:65:43
 +
 +mem_limit: 1000000000
 +memswap_limit: 2000000000
 +privileged: true
 +
 +restart: always
 +
 +read_only: true
 +shm_size: 64M
 +stdin_open: true
 +tty: true
 +</xtermrtf>
  
systeme/docker.1477924347.txt.gz · Dernière modification : 2016/10/31 14:32 de root