Archives pour la catégorie ‘Docker’

CoreOS : cloud config pour instance EC2 avec stockage local Docker + swap

Le fichier cloud-config ci-dessous initialise une instance EC2 CoreOS avec les options suivantes :

  • paramétrage des timeout fleet et etcd
  • swap d’1 Go sur le disque local (/dev/xvdb1)
  • partition BRTFS pour les containers Docker sur disque local (/dev/xvdb2)
  • désactivation du reboot automatique par sécurité (locksmithd)
#cloud-config

coreos:
  update:
    reboot-strategy: off
  etcd:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new
    discovery: https://discovery.etcd.io/7c024472504cf1cef428ccc8af8e63f0
    # multi-region and multi-cloud deployments need to use $public_ipv4
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
    peer-election-timeout: 6000
    peer-heartbeat-interval: 1500
    snapshot: true
    snapshot-count: 100
  fleet:
    public-ip: $public_ipv4
    metadata: region=eu-west
    etcd-request-timeout: 1500
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
    - name: format-ephemeral.service
      command: start
      content: |
        [Unit]
        Description=Formats the ephemeral drive
        [Service]
        Type=oneshot
        RemainAfterExit=yes
        ExecStartPre=/usr/sbin/wipefs -f /dev/xvdb
        ExecStartPre=/usr/bin/sh -c "(/usr/bin/echo ',1024,S' && /usr/bin/echo ';')|/usr/sbin/sfdisk /dev/xvdb -uM"
        ExecStartPre=/usr/sbin/mkswap -f /dev/xvdb1
        ExecStartPre=/usr/sbin/swapon /dev/xvdb1
        ExecStart=/usr/sbin/mkfs.btrfs -f /dev/xvdb2
    - name: var-lib-docker.mount
      command: start
      content: |
        [Unit]
        Description=Mount ephemeral to /var/lib/docker
        Requires=format-ephemeral.service
        After=format-ephemeral.service
        Before=docker.service
        [Mount]
        What=/dev/xvdb2
        Where=/var/lib/docker
        Type=btrfs

Fleet : afficher un fichier service

# fleetctl cat monitoring.1.service
[Unit]
Description=monitoring
Requires=docker.service
Requires=logging.1.service
After=docker.service
After=logging.1.service

[Service]
ExecStartPre=-/usr/bin/docker kill monitoring
ExecStartPre=-/usr/bin/docker rm monitoring
ExecStartPre=/usr/bin/docker pull 1.2.3.4:5000/monitoring:latest
ExecStart=/usr/bin/docker run --name monitoring -p 10050:10050 -v /var/run/docker.sock:/coreos/var/run/docker.sock -v /proc:/coreos/proc:ro -v /sys:/coreos/sys:ro -v /dev:/coreos/dev:ro -v /tmp/logging/dev/log:/dev/log --restart=always 1.2.3.4:5000/monitoring:latest coreos1 80.81.82.83
ExecStop=/usr/bin/docker stop monitoring
TimeoutStartSec=900

[X-Fleet]
MachineID=b39596623f0000568ea3ea25a4fa0000

Docker : forcer le rédémarrage d’un container

# docker run --restart=always logging
# docker run --restart=on-failure:5 monitoring

Docker : supprimer les images non tagguées

# docker rmi $(docker images|grep "^<none>"|awk "{print \$3}")

Docker : accèder aux volumes partagés d’un container en exécution

# docker run --rm --volumes-from <container_name> -t -i busybox sh

Docker : s’attacher à un container en exécution

# PID=$(docker inspect --format {{.State.Pid}} <container_name_or_id>)
# nsenter --target $PID --mount --uts --ipc --net --pid
Haut de page