Docker clean inodes

Sur certaines VM, Docker prend 100% des inodes. Ce qui génère des messages d’erreur « No space left on device »

Un « df -i » affichera un « Used 100% » sur le volume qui pose problème

Affichage du nombre d’inodes

Voici différents scripts qui permettent de retrouver les répertoires qui prennent le plus d’inodes

for i in /var/lib/docker/*; do echo $i; find $i |wc -l; done
for ii in $(find . -maxdepth 1 -type d); do
    echo -e "${ii}\t$(find "${ii}" -type l -o -type d -o -type f | wc -l)"
done | sort -n -k 2 | column -t
for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

Dans mon cas, j’avais deux répertoires avec beaucoup de inodes:

  • /proc/p_id/    p_id correspondait à un container docker Selenium
  • /var/lib/docker

J’ai donc commencé par arrêter le container docker (« docker  stop container_id »), mais cela n’a pas libéré beaucoup d’inodes.

Clean Docker

Supprimer les images qui ne sont plus utilisées :

docker images
#puis 
docker rmi -f image_id

Supprimer les images que l’on ne voit pas:

docker ps -a
#puis, sur les images Exited (0)
docker rm -v container_id

Cela a suffit dans mon cas.

http://blog.yohanliyanage.com/2015/05/docker-clean-up-after-yourself/

 

Publié dans Docker Tagués avec :

Installation de Squid

Installation

En mode sudo :

#!/bin/sh
apt-get -y install squid
apt-get -y install calamaris
apt-get -y install sarg
mkdir webmin
cd webmin
curl -O  http://jaist.dl.sourceforge.net/project/webadmin/webmin/1.801/webmin-1.801.tar.gz
tar -xvf webmin-1.801.tar.gz
rm webmin-1.801.tar.gz
cd webmin-1.801/
./setup.sh /usr/local/webmin

Configuration de squid

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.origin
#pour retirer les commentaires
sudo cat /etc/squid/squid.conf.origin | egrep -v -e '^[[:blank:]]*#|^$' > /etc/squid/squid.conf

Editer le fichier /etc/squid/squid.conf

#mettre son réseau local :
acl LocalNet src 192.168.10.0/24
#mettre en commentaires les autres réseaux locaux :
#acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
#mode transparent
http_port 3128 transparent
#autoriser acces local
http_access allow localhost
http_access allow LocalNet
http_access deny al

Configuration de webmin

Squid

Par défaut webmin est configuré avec /etc/squid3. Il faut remplacer « squid3 » par « squid »

http://serveur:10000

cap 2016-07-02 à 11.26.51

sarg

Il faut également modifier la configuration de sarg :

webmin sarg configuration

Configuration de sarg

sudo sarg-reports daily

Si une erreur se produit la corriger dans le fichier de configuration /etc/sarg/sarg.conf.

sudo sarg-reports daily
SARG: Unknown option resolve_ip
# TAG:  resolve_ip yes/no
#       Convert ip address to dns name
#       sarg -n
#resolve_ip
sudo nano /etc/sarg/sarg.cong

Mettre en place le cron

sudo crontab -e 
00 01 * * * sarg-reports daily

TomatoUSB

Administration/Scripts/Firewall

#!/bin/sh
PROXY_IP=192.168.10.nnn ip du serveur qui héberge squid
PROXY_PORT=3128
LAN_IP=`nvram get lan_ipaddr`
LAN_NET=$LAN_IP/`nvram get lan_netmask`

iptables -t nat -A PREROUTING -i br0 -s $LAN_NET -d $LAN_NET -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i br0 -s ! $PROXY_IP -p tcp --dport 80 -j DNAT --to $PROXY_IP:$PROXY_PORT
iptables -t nat -I POSTROUTING -o br0 -s $LAN_NET -d $PROXY_IP -p tcp -j SNAT --to $LAN_IP
iptables -I FORWARD -i br0 -o br0 -s $LAN_NET -d $PROXY_IP -p tcp --dport $PROXY_PORT -j ACCEPT

 

Publié dans Debian Tagués avec : , , ,

RPi 3, benchmark carte SD

Lors de mes différentes installations, j’avais trouvé que ca allait plus vite avec la Transcend de 2013, que la Lexar de 2016. Les deux sont des « class 10 ».

Tests réalisés avec le RPi3

https://romanrm.net/dd-benchmark

268435456 bytes (268 MB) copied Transcend TS32GUSDHC10E achetée en 2013 Lexar Standard SDHC 32 Go achetée en 2016
dd bs=1M count=256 if=/dev/zero of=test 14.7936 s, 18.1 MB/s 23.1976 s, 11.6 MB/s
15.2863 s, 17.6 MB/s 20.1082 s, 13.3 MB/s
14.9669 s, 17.9 MB/s 19.6598 s, 13.7 MB/s
15.6472 s, 17.2 MB/s 24.8685 s, 10.8 MB/s
-30,23%
dd bs=1M count=256 if=/dev/zero of=test; sync 17.8146 s, 15.1 MB/s 22.1492 s, 12.1 MB/s
14.4949 s, 18.5 MB/s 22.8832 s, 11.7 MB/s
14.4321 s, 18.6 MB/s 24.8886 s, 10.8 MB/s
14.4883 s, 18.5 MB/s 24.1708 s, 11.1 MB/s
-35,36%
dd bs=1M count=256 if=/dev/zero of=test conv=fdatasync 16.8417 s, 15.9 MB/s 26.4335 s, 10.2 MB/s
16.3056 s, 16.5 MB/s 26.5373 s, 10.1 MB/s
17.2411 s, 15.6 MB/s 27.4224 s, 9.8 MB/s
16.9019 s, 15.9 MB/s 26.7111 s, 10.0 MB/s
 -37,25%
dd bs=1M count=256 if=/dev/zero of=test oflag=dsync 23.0445 s, 11.6 MB/s 30.4203 s, 8.8 MB/s
23.0676 s, 11.6 MB/s 34.0592 s, 7.9 MB/s
22.9218 s, 11.7 MB/s 31.489 s, 8.5 MB/s
22.726 s, 11.8 MB/s 29.863 s, 9.0 MB/s
 -26,77%
Publié dans Raspberry, Raspbian Tagués avec :

Raspberry Pi 3, problème de wifi

Le RPi3 a tendance à perdre le wifi.

Il faut désactiver le power management

sudo nano /etc/network/interfaces
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wireless-power off
iface default inet dhcp
sudo iwconfig
wlan0 IEEE 802.11bgn ESSID:"XXXXXX"
Mode:Managed Frequency:2.447 GHz Access Point: XX:XX:XX:XX:XX:XX
Bit Rate=57.7 Mb/s Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=60/70 Signal level=-50 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:33 Invalid misc:0 Missed beacon:0

 

Publié dans Raspberry, Raspbian Tagués avec : ,

Personnaliser une image Docker

J’ai eu besoin d’ajouter des extensions php à l’image wordpress utilisée précédemment sur mon RaspberryPi 3.

Pour cela il faut créer un fichier Dockerfile :

FROM zack/php-armhf:5.6-apache

RUN a2enmod rewrite

# install the PHP extensions we need
RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
    && docker-php-ext-install gd
RUN docker-php-ext-install mysqli mbstring exif pdo pdo_mysql zip

VOLUME /var/www/html

ENV WORDPRESS_VERSION 4.4.2
ENV WORDPRESS_SHA1 7444099fec298b599eb026e83227462bcdf312a6

# upstream tarballs include ./wordpress/ so this gives us /usr/src/wordpress
RUN curl -o wordpress.tar.gz -SL https://wordpress.org/wordpress-${WORDPRESS_VERSION}.tar.gz \
    && echo "$WORDPRESS_SHA1 *wordpress.tar.gz" | sha1sum -c - \
    && tar -xzf wordpress.tar.gz -C /usr/src/ \
    && rm wordpress.tar.gz \
    && chown -R www-data:www-data /usr/src/wordpress

COPY docker-entrypoint.sh /entrypoint.sh

COPY fix-permissions.sh /fix-permissions.sh

ENTRYPOINT ["/entrypoint.sh"]

CMD ["apache2-foreground"]


Ce fichier modifie l’image « zack/php-armhf » et ajoute les extensions php mysqli, mbstring, exif, pdo, pdo_mysql et zip.

docker build .

Cela va générer une image (compter 10/15 minutes avec le RPi3). Il faut ensuite modifier le fichier docker-compose.yml et mettre l’id de l’image générée (docker images) à la place de « image zack/wordpress-armhf:4.3.1-apache »

Publié dans Docker Tagués avec :

RaspberryPi dyndns OVH

Configuration du dyndns avec OVH.

Cela va permettre d’avoir une adresse ip dynamique.

Il faut ensuite installer ddclient

sudo apt-get install ddclient

  • Dynamic DNS service provider:other
  • Dynamic DNS server : www.ovh.com
  • Dynamic DNS update protocol : dyndns2
  • Username for dynamic DNS service: saisir l’identifiant dyndns saisi dans l’interface OVH
  • Password for dynamic DNS service: mot de passe associé
  • Re-enter password to verify:
  • Network interface used for dynamic DNS service:wlan0, sera changé par la suite.
  • DynDNS fully qualified domain names: url définie dans l’interface OVH.
  • Run ddclient on PPP connect? Non
  • Run ddclient as daemon? Yes
  • Interval between ddclient runs: 60s
  • sudo nano /etc/ddclient.conf, remplacer la ligne « use=if… » par « use=web », car sinon récupère l’adresse locale

Si besoin de reconfigurer le service :

sudo dpkg-reconfigure ddclient
Publié dans Raspberry, Raspbian Tagués avec : ,

Raspberry pi 3 + docker + wordpress

Installation de Docker sur Raspberry Pi 3.

Téléchargement de l’image hypriot

Installation via l’utilitaire piwriter sur une carte micro sd.

Connexion via ssh, et configuration du wifi :

Fichier /boot/device-init.yaml :

wifi:
interfaces:
wlan0:
ssid: "XXXX"
password: "xxxxxxxxx"

Reboot

Ajout docker wordpress et mysql

Création du répertoire « ~/monserveur.com ».

Edition du fichier « ~/monserveur.com/docker-compose.yml » :

wordpress:
  image: zack/wordpress-armhf:4.3.1-apache
  restart: always
  links:
    - mysql
  environment:
    WORDPRESS_DB_USER: user1
    WORDPRESS_DB_PASSWORD: pass1
    WORDPRESS_DB_NAME: user1
  ports:
     - "8080:80"
  volumes:
     - ./www-data:/var/www/html

mysql:
  image: hypriot/rpi-mysql
  restart: always
  volumes:
    - ./var/mysql:/var/lib/mysql
  environment:
    MYSQL_DATABASE: user1
    MYSQL_USER: user1
    MYSQL_PASSWORD: pass1
    MYSQL_ROOT_PASSWORD: pass1

Exécution de la commande : « docker-compose up -d » dans le répertoire « ~/monserveur.com »

Cela va générer les containers et les lier entre eux.

Installation d’Apache2

Le site est accessible sur le port 8080. Le serveur apache sur le RaspberryPI va permettre de rediriger vers le container via le proxypass.

sudo apt-get install apache2

Configuration

sudo a2enmod proxy

fichier /etc/apache2/site-available/monserveur.com.conf

<VirtualHost *:80>
	ServerName www.monserveur.com

	ServerAdmin webmaster@localhost
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/monserveur_access.log combined

	LogLevel debug

	ProxyRequests On
	ProxyVia On
	ProxyPreserveHost On
	ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080

</VirtualHost>
sudo a2ensite monserveur.com.conf

Multisite

Avec cette configuration il est possible d’avoir plusieurs sites wordpress hébergés sur le RaspberryPI.

  • création d’un nouveau fichier « ~/monserveur_2.com/docker-compose.yml »
    • modifier le port 8080 par 8081
  • docker-compose up -d
  • création du fichier « /etc/apache2/site-available/monserveur_2.com.conf
    • ServerName www.monserveur_2.com
    • configurer le proxy sur le port 8081
  • sudo a2ensite monserveur_2.com.conf

 

Publié dans Raspberry, Wordpress Tagués avec : , ,

Raspberry Pi2 docker

Installation d’un docker avec Raspberry PI2

http://blog.xebia.com/2014/08/25/docker-on-a-raspberry-pi/
https://www.homegear.eu/index.php/Downloads
http://blog.hypriot.com/downloads/

ArchLinux

Mise à jour

pacman -Syu

Infos Système

pacman -Qi systemd

Installation

Impossible de lancer docker, avec différentes image de ArchLinux. Erreurs diverses suivant les images

Error response from daemon: Cannot start container 9cd8e5685ac3fdc8ea30082d12ca5590c55aabe82c488e731835c7516c810bcc: [8] System error: open /sys/fs/cgroup/cpu,cpuacct/init.scope/system.slice/docker-9cd8e5685ac3fdc8ea30082d

Voir https://github.com/docker/docker/issues/16256

docker -d --exec-opt native.cgroupdriver=cgroupfs
docker run -it -p=4444:4444  selenium/standalone-firefox
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
INFO[0000] [graphdriver] using prior storage driver "aufs"
WARN[0000] Your kernel does not support cgroup memory limit: mountpoint for memory not found
INFO[0000] Loading containers: start.
......
INFO[0000] Loading containers: done.
INFO[0000] Daemon has completed initialization
INFO[0000] Docker daemon commit=786b29d execdriver=native-0.2 graphdriver=aufs version=1.7.1
INFO[0042] POST /v1.19/containers/create
ERRO[0042] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH
ERRO[0042] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH
ERRO[0042] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH
INFO[0043] POST /v1.19/containers/55bcd07dedc263cb7cbfb4616279424df023a9959ba12f664c01d4c16b756e51/attach?stderr=1&stdin=1&stdout=1&stream=1
INFO[0043] POST /v1.19/containers/55bcd07dedc263cb7cbfb4616279424df023a9959ba12f664c01d4c16b756e51/start
WARN[0043] exit status 1
ERRO[0044] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH
ERRO[0044] Handler for POST /containers/{name:.*}/start returned error: Cannot start container 55bcd07dedc263cb7cbfb4616279424df023a9959ba12f664c01d4c16b756e51: [8] System error: exec format error
ERRO[0044] HTTP Error err=Cannot start container 55bcd07dedc263cb7cbfb4616279424df023a9959ba12f664c01d4c16b756e51: [8] System error: exec format error statusCode=500

En fait, il faut trouver des iages Docker qui sont compatibles avec ARM. Ce qui n’est pas le cas de Selenium.

 

Publié dans Docker, Raspberry Tagués avec : , ,

WordPress – Modality – Rendre cliquable les menus parents

Avec le thème Modality, le menus parents ne sont pas cliquables. Seuls les osus-menus le sont.

Pour rendre les parents cliquables, il faut modifier le thème, et notamment le fichier « wp_bootstrap_navwalker.php »

// If item has_children add atts to a.
if ( $args->has_children && $depth === 0 ) {
	$atts['href']   		= '#';
	$atts['data-toggle']	= 'dropdown';
	$atts['class']			= 'dropdown-toggle';
	$atts['aria-haspopup']	= 'true';
} else {
	$atts['href'] = ! empty( $item->url ) ? $item->url : '';
}

par

// If item has_children add atts to a.
if ( $args->has_children && $depth === 0 ) {
	$atts['href'] = ! empty( $item->url ) ? $item->url : '';
	$atts['class']			= 'dropdown-toggle';
	$atts['aria-haspopup']	= 'true';
} else {
	$atts['href'] = ! empty( $item->url ) ? $item->url : '';
}
Publié dans Responsive, Wordpress Tagués avec : ,

Docker – commandes

Duplication d’un conteneur

docker commit debian my_debianlamp

Démarrage du conteneur

docker run -it -p=8090:80  my_debianlamp
docker run -p=3306:3306 -e MYSQL_ROOT_PASSWORD=pwd -it mysql_test

cap_ 8

 

Il faut installer lamp dans le conteneur que l’on vient de démarrer.

apt-get update
apt-get install apache2 php5 mysql-server php5-mysql libapache2-mod-php5
service apache2 restart

cap_ 8 cap_ 9

 

Postgres

docker run --name my-postgres -p=5433:5432 -e POSTGRES_PASSWORD=cyril -d postgres

Commandes

https://docs.docker.com/reference/commandline/cli/

Liste des docks

docker ps

Shell

docker exec -ti docker_name bash

Publié dans Docker, OSX Tagués avec : ,