29 févr. 2016

Trustonme : c'est fini !

Voilà ce que je viens de lire sur le site Trustonme.net

Au revoir et peut-être à bientôt ...

Voilà plus de 13 ans que Trustonme travaille, à son niveau, à démocratiser l'usage des logiciels libres dont GNU/Linux mais aussi sous Windows. Nous nous rappelons des débuts où nous n'étions qu'une dizaine sur le site et le forum. Puis des centaines de personnes, membres ou non de l'association qui donnaient de leur temps pour aider le voisin à s'installer sur « la banquise ».

Nous nous sentons énormément redevables à la communauté des logiciels libres, aux bénévoles qui ont fait grandir ce site et son forum, aux différents donateurs sans lesquels le manque de moyen aurait été fatal, aux membres de l'association qui ont permis de donner un cadre légal à ce qui était un joyeux bordel ! Nous tenons à vous remercier tous et chacun en particulier.

Mais voilà, après de si longues années fastes, faute de bénévole pour faire vivre : l'association, le site et le forum, force est de constater que l'ensemble s'étiole un peu plus chaque jour. Et le 7 avril 2016 sera le point final de ce qui restera pour nous, une formidable aventure humaine. A partir de cette date, le site et le forum ne seront plus accessibles. Mais d'ici cette date, l'ensemble restera disponible en lecture seule.

Enfin parce que nous souhaitions viscéralement continuer à partager avec certains ce que nous avions reçu d'autres, une fois le site et le forum clos, l'actuel secrétaire général de l'association : Azollyx, se propose d'héberger sur son site, l'ensemble du contenu libre pour une durée indéterminée. Dans le détail :

    Les documentations et astuces via le TrustBook au format PDF ou sous la forme de sources LaTeX ;
    Les scripts libres ou ceux dont les auteurs nous autorisent la distribution. Pour faire rajouter (ou supprimer) votre script à cette archive, merci de contacter l'association à l'adresse contact AROBASE trustonme.net ;
    Les captures d'écrans libres ou celles dont les auteurs nous autorisent la distribution. Pour faire rajouter (ou supprimer) votre capture à cette archive, merci de contacter l'association à l'adresse contact AROBASE trustonme.net

Encore merci à tous et peut-être à bientôt via un autre média, une autre organisation ou tout simplement un autre contexte.

L'association Trustonme

C'est assez triste car je me rappelle que j'ai pas mal appris sur ce site et son forum ! 

J'ai récupéré le TrustBook, les scripts et screenshots et laisse le lien à disposition dans mon google drive en libre téléchargement.


[SHELL] Coloriser un script shell

Petite astuce pratique trouvée sur le site trustonme.net que j'ai eu l'habitude de consulter au moment où j'apprenais Linux (nostalgie !)

Cela permet de mettre un peu de couleur à ses scripts shell et donc de donner un peu de gaitée !

 
« Il est agréable de voir s’exécuter son script bash habituel avec des morceaux de lignes en couleur.
Pour cela, ajouter en déclaration (juste apres #!/bin/sh ) la couleur souhaitée:
COULEUR="\\033[x;xxm"
Puis devant le mot/partie de la ligne a colorier: echo -e "$COULEUR" "le mot/partie de la ligne" Puis exécuter le script. exemple (faire un vrai copie/colle et tester dans une console.. sinon rectifier les décalages..)
!/bin/sh
VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
echo    ""
echo -e "$VERT" "    ------------------ ""$ROUGE""Y o u  W i l l  B e  C o l o r e d ""$VERT""  ------------    " "$NORMAL"
echo            "    |                     Color bash  script                             |  "
echo -e         "    |                 written by""$VERT" "selim,b." "$CYAN""(s.bouras@free.fr)  "      "$NORMAL"       "         |  "
echo -e         "    |                    This script is""$BLEU"" free Licence""$NORMAL""                     |  "
echo -e "$VERT" "    --------------------------------------------------------------------     " "$NORMAL"
echo -e "                     $BLEU" " Ok!!..Dear ... Your bash is colored .. Have Fun!!.."
»
Source : http://tips.trustonme.net/tips-read-43.html

[DOCKER] Quoi de neuf docker: une websérie à voir

Je suis tombé récemment sur un article de developpez.com qui évoquait la série "Quoi de neuf Docker" qui a pour but d'expliquer ce qu'est Docker et exposer ses fonctionnalités et concepts.

Vidéos:






Vous pouvez aller sur sa chaine Youtube: https://www.youtube.com/channel/UCOAhkxpryr_BKybt9wIw-NQ

27 févr. 2016

[DOCKER] Subuser, une sur-couche à Docker

Subuser est une sur-couche à Docker, il permet de lancer des logiciels dans des
conteneurs, avec un système simple de gestion des permissions, et un accès au serveur X. Subuser transforme les conteneurs Docker en programmes GNU/Linux normaux.

À propos…

Subuser permet de transformer un conteneur Docker en un programme normal, mais sans lui donner tous les privilèges, ainsi par exemple il ne peut accéder qu'au répertoire d'où il est appelé, et non le /home complet de l'utilisateur.

Chaque subuser se voit attribuer un jeu de permissions, de façon similaire à Android, voici un exemple de fichier permissions.json (tiré de la documentation):
{
  "description"                : "A web browser."
  ,"maintainer"                : "Timothy Hobbs "
  ,"executable"                : "/usr/bin/firefox"
  ,"user-dirs"                 : ["Downloads"]
  ,"gui"                       : {"clipboard":true,"cursors":true}
  ,"sound-card"                : true
  ,"allow-network-access"      : true
}
On sort ainsi du schéma « toutes les permissions ou rien » qui est la règle sur Android.

Subuser utilise la même syntaxe que les Dockerfile de Docker, ainsi il n'est pas nécessaire d'en apprendre une nouvelle.

L'accès au serveur X est sécurisé grâce à l'utilisation d'un pont X11 « Xpra », cf. les explications (en anglais).

L'architecture est distribuée, il est facile à n'importe qui d'ajouter son propre dépôt, la commande « subuser pkg » permet de maintenir les dépôts.

Utilisation de Git pour l'historique (le « registre ») : il est possible de facilement revenir en arrière si une mise à jour ne vous plaît pas, ou de bloquer les mises à jour si vous voulez rester sur une version précise. La commande « subuser registry log » permet de savoir ce qui a été installé ou mis à jour.

Philosophie

N.D.R. : j'ai eu l'occasion de rencontrer et discuter avec l'auteur de Subuser, c'est une personne très intéressante et qui a une vraie réflexion éthique et politique autour de son projet

Subuser est construit autour d'une réflexion politique et technique. Pour situer un peu l'auteur, on peut lire ce texte (en anglais) qui décrit ce qu'il appelle les « logiciels égalitaires ».

Dans les réflexions autour de Subuser, outre les aspects sécuritaires évidents, il y a une volonté de pouvoir utiliser un logiciel dans une version précise indéfiniment.
En effet, qui n'a jamais pesté après avoir vu une fonctionnalité disparaître ou une interface changer suite à une mise à jour sur un logiciel auquel il était habitué et qui le satisfaisait parfaitement ? Ou encore, après avoir vu un logiciel ne plus fonctionner à cause d'une mise à jour ou d'un changement du système d'exploitation ?

Subuser en comparaison avec xdg-app

N.D.R. : Subuser peut se comparer à xdg-app, aussi j'ai posé la question à l'auteur pour savoir ce qu'il en pensait, voici sa réponse (traduction en français plus bas):
Xdg-app and subuser are very similar.

Subuser is about 9 months older than xdg-app and Alex Larson knew about
subuser when he wrote xdg-app. When I talked to him about his reason for
not just using subuser, he explained to me that he did not think that
Docker was a good candidate for packaging desktop applications. Xdg-app
has one big advantage in it's current state over subuser/Docker. It uses
OSTree, which allows for seamless data deduplication across images.
That's a really nice feature as it saves a lot of diskspace and makes
downloading images a lot faster.

N.D.R. : cette fonctionnalité est envisagée également dans Subuser, cf. le paragraphe « Futur »

There are other philosophical differences as well. Subuser images are
meant to last forever and be portable, therefore, they are monolithic.
Xdg-app doesn't have the goal of either perfect portabilty or
everlasting images. Instead, xdg-app works more like traditional linux
software distribution. You can create an image for xdg-app and that
image relies on libraries such as the "gnome-runtime" those libraries
can be updated independently of the image. Subuser doesn't allow such a
feature because there is no way of guaranteeing that a new library will
be compatible with an old image.

The next difference is that of portability. Xdg-app is very interested
in making sure that xdg-apps integrate well with gnome. They are
planning features to connect up dbus services which will allow xdg-apps
to, for example, access your gnome contacts list or your gnome
calendar. Subuser values portablilty and security over gnome
integration and so the subuser user experience may suffer as a result.
There is another face to this same issue. Xdg-app is trying to define
new dbus interfaces to allow xdg-apps to communicate with the outside
world. This means, that if you want your xdg-app to access the file
system, it will have to implement a new dbus file access API. Subuser
tries very hard to avoid such new interfaces and preferes to try to
emulate existing POSIX/LINUX protocols and APIs.

Yet another difference is that subuser allows you to have multiple
subusers for a single image. This is usefull for web browsing. For
example, I can have a subuser for internet banking and another subuser
for typical web browsing and a third subuser for using google services
ect. And all of these subusers can share the same firefox/iceweasel
image. This allows for finer grained security policy than is possible
with xdg-app.
traduction:
Xdg-app et Subuser sont très similaires.

Subuser est environ 9 mois plus vieux que Xdg-app et Alex Larson le connaissait quand il a écrit Xdg-app. Quand je lui ai demandé les raisons pour ne pas utiliser Subuser, il m'a expliqué qu'il ne pense pas que Docker soit un bon candidat pour empaqueter des applications de bureau.

Xdg-app a pour le moment un gros avantage par rapport à Subuser/Docker : il utilise OSTree, qui permet une dé-duplication des données homogène à travers les images. C'est une fonctionnalité vraiment chouette : ça économise beaucoup d'espace disque et permet un téléchargement des images beaucoup plus rapide.

N.D.R. : cette fonctionnalité est envisagée également dans Subuser, cf. le paragraphe « Futur »

Il y a d'autres différences philosophiques. Les images Subuser sont pensées pour fonctionner éternellement et être portables, et par conséquence, sont monolithiques.
Xdg-app n'a pour but ni une portabilité parfaite ni des images éternelles. Au contraire, Xdg-app fonctionne plus comme un système de distribution de logiciels Linux traditionnel. Vous pouvez créer une image pour Xdg-app, et cette image va se baser sur des bibliothèques comme le « gnome-runtime », bibliothèques qui peuvent être mises à jour indépendamment de l'image. Subuser ne permet pas ce type de fonctionnalité parce qu'il n'y a aucun moyen de garantir qu'une nouvelle bibliothèque sera compatible avec une ancienne image.

Le point de divergence suivant est la portabilité. Xdg-app cherche vraiment à être sûr que les applications Xdg-app s'intègrent bien avec Gnome. Ils prévoient des fonctionnalités pour connecter un service D-Bus qui va permettre aux applications Xdg-app de, par exemple, accéder à la liste de contacts de Gnome ou à votre calendrier Gnome. Subuser préfère la portabilité et la sécurité à l'intégration à Gnome, aussi l'« expérience utilisateur » des utilisateurs de Subuser peut être moins bonne à cause de cela.
Il y a une autre facette à ce problème : Xdg-app veut définir de nouvelles interfaces D-Bus pour permettre aux applications Xdg-app de communiquer avec le monde extérieur. Ceci signifie, que si vous voulez que votre application Xdg-app accède au système de fichiers, elle devra implémenter une nouvelle API pour accéder aux fichiers via D-Bus. Subuser essaye autant que possible d'éviter ce type de nouvelle interface, et préfère émuler le protocole et les API POSIX/Linux existantes.

Un autre point de divergence est que Subuser permet d'avoir plusieurs « subusers » (N.D.T. : sous-utilisateurs) pour une même image. C'est pratique pour naviguer sur le web. Par exemple, j'ai un subuser pour mes comptes sur Internet, un autre pour la navigation web traditionnelle, et un troisième pour utiliser les services de Google, etc. Et tous ces « subusers » peuvent partager la même image Firefox/Iceweasel (N.D.T. : et bientôt Firefox/Iceweasel). Ceci permet une politique de sécurité plus fine qu'il n'est possible avec Xdg-app.

Il faut bien noter une conséquence majeure de ce que l'auteur explique avec D-Bus : xdg-app demande une modification des logiciels qui doivent appeler des fonctions spécifiques, tandis que Subuser permet d'utiliser un logiciel sans modification.

Futur

Le projet est déjà fonctionnel et tout à fait utilisable. L'auteur aimerait utiliser OSTree ou un mécanisme de dé-duplication similaire dans les prochaines versions.

Il est également envisagé de remplacer Docker par une autre solution, ainsi que l'indique l'auteur suite à une question sur les permissions dynamiques (qui permettraient par exemple l'accès à un répertoire en fonction d'un argument du logiciel et non uniquement au répertoire courant ou spécifié dans la configuration) :
The plan is to move away from Docker and use runC directly. That will fix that problem, and then we will be able to have things like file dialogs which automatically grant permission to access a file…
traduction:
L'idée est de quitter Docker et utiliser runC directement. Cela règlera le problème, et alors il sera possible d'avoir des choses comme une boite de dialogue qui accorde automatiquement des autorisations d'accès à un fichier…
Comment aider ?

L'auteur aimerait beaucoup voir Subuser être empaqueté dans les distributions GNU/Linux, aussi si un développeur Debian, par exemple, lit cette dépêche et souhaite aider le projet, ce serait une contribution précieuse (c'est valable également pour les autres distributions bien entendu).

Source : http://linuxfr.org/news/subuser-une-sur-couche-a-docker

25 févr. 2016

[SysAdmin] 10 logiciels windows très pratiques

Voici une liste de logiciels gratuits pratiques sous Windows, qui peuvent être pratique à l'sysadmin ou autre admin réseau, developpeur ou bidouilleur!

1. MobaXterm (émulateur Linux)

MobaXterm est un émulateur de terminal Linux pour Windows. Celui-ci vous offre la possibilité de vous connecter à distance au serveur du Département par la commande ssh. Un serveur X est intégré au logiciel, donc vous pouvez l'utiliser pour démarrer des logiciels employant l'interface graphique.
Comme pour le logiciel PuTTY, vous devrez, une fois connecté au réseau, entrer des commandes UNIX dans un terminal pendant votre session de travail. Si vous ne croyez pas être suffisamment habile avec ce mode de fonctionnement, consultez la page Commandes élémentaires pour apprendre quelques commandes utiles. 
Source : https://dms.umontreal.ca/wiki/index.php/MobaXterm
URL de téléchargement : http://mobaxterm.mobatek.net/download-home-edition.html

C'est une bonne alternative à PuTTY car nous pouvons nous connecter à plusieurs hôtes distant et passer de l'un à l'autre grace à un systeme d'ongle. Cela évite aussi d'avoir des logiciels annexes commes Xming, l'échange de clé, etc. c'est un logiciel tout en un.
Une version payante existe avec plus de fonctionnalité mais je me sert bien de la version de base.

2. WinSCP (transfert de fichier entre linux et windows)

WinSCP est un client SFTP graphique pour Windows. Il utilise SSH et est open source. Le protocole SCP est également supporté. Le but de ce programme est de permettre la copie sécurisée de fichiers entre un ordinateur local et un ordinateur distant.

Voici l’introduction pour les utilisateurs Français. La quasi-totalité de la documentation de WinSCP est en Anglais et les liens présents sur cette page mènent à cette documentation anglaise.
Source: https://winscp.net/eng/docs/lang:fr
URL de téléchargement : https://winscp.net/eng/download.php

3. Notepad++ (éditeur de texte)

Editeur de texte pra
Notepad++ est un éditeur de texte générique codé en C++, qui intègre la coloration syntaxique de code source pour les langages et fichiers C, C++, Java, C#, XML, HTML, PHP, JavaScript, makefile, art ASCII, doxygen, .bat, MS fichier ini, ASP, Visual Basic/VBScript, SQL, Objective-C, CSS, Pascal, Perl, Python, R, MATLAB, Lua, TCL, Assembleur, Ruby, Lisp, Scheme, Properties, Diff, Smalltalk, PostScript et VHDL ainsi que pour tout autre langage informatique, car ce logiciel propose la possibilité de créer ses propres colorations syntaxiques pour un langage quelconque.

Ce logiciel, basé sur la composante Scintilla, a pour but de fournir un éditeur léger (aussi bien au niveau de la taille du code compilé que des ressources occupées durant l’exécution) et efficace. Il est également une alternative au bloc-notes de Windows (d’où le nom). Le projet est sous licence GPL.

Il ne bloque pas le fichier en cours d'édition et détecte toute modification apportée à celui-ci par un autre programme (il propose de le recharger).

Source : https://fr.wikipedia.org/wiki/Notepad%2B%2B
URL de téléchargement : https://notepad-plus-plus.org/download/all-versions.html


4. Google Chrome (navigateur)


Chrome est un navigateur web propriétaire développé par Google basé sur le projet libre Chromium fonctionnant sous Windows, Mac, Linux, Android et iOS. Google Chrome est identique à Chromium hormis un logo différent et quelques fonctionnalités en moins ou en développement3.

Il est annoncé le 1er septembre 2008 dans une bande dessinée de Scott McCloud4, la veille de la sortie de la première version beta. La première version stable est quant à elle dévoilée le 11 décembre 2008. Selon l'institut StatCounter, Google Chrome devient en juin 2012 le navigateur le plus utilisé dans le monde, avec environ un tiers des utilisateurs.
Source: https://fr.wikipedia.org/wiki/Google_Chrome

Pourquoi je le conseille? bien pour analyser du code et faire des tests de requête, tapez sur !

5. KeePass (gestionnaire de mot de passe)

KeePass est un gestionnaire de mots de passe publié sous GPL v2 ou ultérieure, qui sauvegarde les mots de passe dans un fichier chiffré appelé « base de données ». Cette base est accessible avec le mot de passe principal. Il peut être accompagné d'une clé sous la forme d'un fichier (dont le suffixe est .key) pour renforcer la sécurité d'accès au fichier chiffré.

KeePass existe sous deux versions différentes. La première utilise deux algorithmes de chiffrement : AES (avec des blocs de 128 bits et une clé de 256 bits) et Twofish (avec des blocs de 128 bits et une clé de 256 bits). La deuxième n'utilise qu'AES (avec des blocs de 128 bits et une clé de 256 bits).

KeePass s'installe sous Windows, et avec mono sous Mac OS, Linux, FreeBSD et autres systèmes d'exploitation. La deuxième version du logiciel ajoute premièrement la possibilité de lier un utilisateur Windows à une base de données (avec toujours la saisie du mot de passe principal et éventuellement l'ajout d'une clé sous forme de fichier) et deuxièmement d'incorporer des pièces jointes dans les entrées.
Source : https://fr.wikipedia.org/wiki/KeePass
URL de téléchargement : http://keepass.info/download.html

6. WireShark (ex-Ethereal : analyseur réseau)

Wireshark est un analyseur de paquets libre utilisé dans le dépannage et l'analyse de réseaux informatiques, le développement de protocoles, l'éducation et la rétro-ingénierie. Son appellation d'origine (Ethereal) est modifiée en mai 2006 pour des questions relatives au droit des marques.

Wireshark utilise la bibliothèque logicielle GTK+ pour l'implémentation de son interface utilisateur et pcap pour la capture des paquets ; il fonctionne sur de nombreux environnements compatibles UNIX comme GNU/Linux, FreeBSD, NetBSD, OpenBSD ou Mac OSX, mais également sur Microsoft Windows.
Source: https://fr.wikipedia.org/wiki/Wireshark
URL de téléchargement : https://www.wireshark.org/download.html

7. 7-zip (archiveur)

7-Zip est un logiciel de compression de données et d’archivage de fichiers fonctionnant sous Windows développé par le Russe Igor Pavlov. Il peut également être utilisé avec d’autres systèmes d’exploitation (GNU/Linux…) grâce, par exemple, au projet Wine ou au portage de sa version console sous GNU/Linux, nommé p7zip.

C’est un logiciel libre distribué sous licence LGPL, le code LZMA est dans le domaine public, le code AES est sous licence BSD et le code unRAR est sous licence mixte (LGPL + des restrictions unRAR).
Source: https://fr.wikipedia.org/wiki/7-Zip
URL de téléchargement : http://www.7-zip.org/

8. PSPad (éditeur de texte)

Autre éditeur de texte pour ouvrir des gros fichiers
PSPad editor est un freeware permettant d'éditer du texte et du code sous Windows.
La première version date de 2001, ce logiciel est produit par un seul développeur tchèque Jan Fiala.
PSPad a été conçu pour être une interface graphique permettant d'éditer plusieurs langages dont PHP, Perl, HTML, et Java. Il intègre l'usage de projets pour traiter et sauver de multiples fichiers. Les autres fonctionnalités sont le complètement, l'interface à onglets, le client FTP et la recherche/remplacement avec des expressions rationnelles.
L'interface de PSPad est basée sur le MDI avec onglets pour éditer plusieurs fichiers et une meilleure manipulation des documents ouverts.
Ce logiciel peut être rendu intégralement portable après installation sur un ordinateur.
Source: https://fr.wikipedia.org/wiki/PSPad
URL de téléchargement: http://www.pspad.com/fr/download.php

9. Dropbox (Cloud)

Dropbox est un service de stockage et de partage de copies de fichiers locaux en ligne proposé par Dropbox, Inc., entreprise localisée à San Francisco, en Californie.

Dropbox fournit des logiciels client pour Microsoft Windows, Mac OS X, GNU/Linux, Android, iOS, BlackBerry OS,Windows Phone ainsi qu'une interface web. Il existe des portages non officiels pour Symbian et MeeGo.
Source: https://fr.wikipedia.org/wiki/Dropbox
URL de téléchargement: https://www.dropbox.com/downloading?src=index

10. PDFCreator (Imprimer dans un Pdf)

PDFCreator est un logiciel libre allemand, sous licence GNU GPL (mais contient un publiciel sous licence propriétaire de Spigot, Inc.) permettant de convertir des fichiers imprimables en fichiers PDF pour les applications Windows utilisant une imprimante virtuelle.
Source: https://fr.wikipedia.org/wiki/PDFCreator
URL de téléchargement: http://www.pdfforge.org/


24 févr. 2016

[AI] Atlas, l'étonnant robot humanoïde

Atlas continue de profiter des améliorations de la société Boston Dynamics, désormais propriété de Google. Le robot humanoïde, en plus de soulever des paquets, peut désormais se relever seul en cas de chute. Deviendra-t-il portier ou manutentionnaire ? Boston Dynamics a publié cette semaine une vidéo présentant les avancées obtenues dans le cadre du développement d'Atlas, son robot bipède. On le voit soulever des paquets et les ranger sur les étagères d'un entrepôt, marcher seul dans la neige sur un terrain accidenté, mais aussi se relever avec une étonnante vivacité lorsqu'on l'a fait tomber au sol.

La démarche est un peu sautillante et le pas paraît parfois mal assuré. Pour autant, le robot parvient à évoluer sans encombre de façon autonome. Boston Dynamics précise qu'à ce stade, Atlas est alimenté par des batteries électriques et mû par un système hydraulique. Bien que les proportions ne soient pas exactement celles d'un être humain, le gabarit est proche de celui d'un adulte : environ 1,80 mètre pour quelque 82 kilos. Son autonomie en déplacement n'est cependant pas précisée. Rachetée par Google fin 2013, Boston Dynamics se spécialise dans la conception de robots capables de se déplacer en environnement difficile. Certains sont déjà utilisés sur le terrain, comme le robot LS3 qui sert de mule à l'armée américaine pour transporter jusqu'à 200 Kg de charge utile en opération sur des terrains accidentés.



Source : http://www.clubic.com/robotique/actualite-796962-atlas-robot-bipede-boston-dynamics-relever.html

[UNIX/LINUX] Encoder un fichier en UTF-8

J'ai eu récemment le cas d'un document récupéré sur une machine windows dont certains caractères n'étaient pas visibles: notamment les s'affichaient <80> dans vim.

Déjà, pour connaitre l'encodage d'un fichier:
Sous Ubuntu
$ uchardet fichier.txt
windows-1252
Sous CentOS (et aussi Ubuntu)
$ file -i fichier.txt
fichier.txt: text/html; charset=unknown-8bit
Je n'ai pas trouvé d'équivalence de uchardet dans CentOS...

Maintenant, comment encoder le fameux fichier windows-1252 en UTF-8 (avec iconv disponible sur CentOS et Ubuntu):
$ iconv -f windows-1252 -t UTF-8 fichier.txt -o fichier-utf8.txt
et voilà :
$ file -i fichier-utf8.txt
fichier-utf8.txt: application/xml; charset=utf-8
Il va de soi que l'on peut utiliser iconv pour convertir dans les deux sens, ou depuis un autre format
exemple:
$ iconv -f UTF-8 -t ISO-8859-1 fichier.txt -o fichier-utf8.txt

[NodeJS] Comment déployer node.js (en)

Quelques vidéos en anglais sur le déploiement de node.js

SpinUp a machine



Deploy the app


22 févr. 2016

[Sécurité] Guide des bonnes pratiques de l’informatique

L’ANSSI et la CGPME présentent douze règles essentielles pour la sécurité des systèmes d’information des petites et moyennes entreprises.
cgpme_bonnes_pratiques_couv
Les problématiques rencontrées par les petites et moyennes entreprises pour la sécurité de leurs systèmes d’information sont nombreuses : protection des fichiers clientèle, des données personnelles et du savoir-faire technologique, sécurité des systèmes de production… Or, les TPE/PME sont confrontées, chaque jour, à de nouveaux risques menaçant leur intégrité, leur image et leur compétitivité : vol de données, escroqueries financières, sabotage de sites d’e-commerce.
Pour mieux appréhender les problématiques des petites structures, l’Agence travaille en partenariat avec la CGPME* qui apporte son expertise de terrain : ce Guide est le fruit d’une réflexion et d’échanges menés en commun.

La prévention des incidents et attaques informatiques relève souvent de réflexes simples, qui concourent à une protection globale de l’entreprise. Le « Guide des bonnes pratiques de l’informatique » présente douze recommandations à destination des non-spécialistes, issues de l’analyse d’attaques réussies et de leurs causes.

* Confédération générale des petites et moyennes entreprises


[WEB] CMS réseau social

Quel sont les CMS de réseaux sociaux Open Source présents sur le marché?

Voici une sélection de 12 11 CMS (source : http://doublemesh.com/open-source-for-social-networking-website/)

  1. BuddyPress : http://buddypress.org
  2. Dolphon : http://www.boonex.com/dolphin
  3. ELGG : http://www.elgg.org
  4. Jcow : http://www.jcow.net
  5. PeoplePods : http://peoplepods.net
  6. Pligg CMS : http://pligg.com
  7. Oxwall : http://www.oxwall.org
  8. Mono X : http://www.mono-software.com/MonoX-ASP-NET-CMS-Social-Networking-Platform/
  9. Etano : http://www.datemill.com
  10. Hotaru : http://hotarucms.org
  11. Live Street CMS : http://livestreetcms.com

19 févr. 2016

[RHEL/CENTOS 7] Installer NGINX avec PHP et MySQL

Nginx [engine x] est un logiciel libre de serveur Web (ou HTTP) ainsi qu'un proxy inverse écrit par Igor Sysoev, dont le développement a débuté en 2002 pour les besoins d'un site russe à très fort trafic (Rambler). Une partie de la documentation a été traduite du russe vers l'anglais.

Ses sources sont disponibles sous une licence de type BSD.
Source : https://fr.wikipedia.org/wiki/Nginx

Nous allons ici installer NGINX avec PHP et MySQL (mariadb) sur une CentOS 7.

J'ai suivi la procédure suivante :  https://www.howtoforge.com/how-to-install-nginx-with-php-and-mysql-lemp-stack-on-centos-7
Cet article est une traduction partielle, où certains détails tel que mon environnement et mes besoins diffère de l'originale.

1 - Note préliminaires 

J'utilise une machine de test avec le hostname lemp et l'adresse IP 10.250.0.134 qui différera surement par rapport à chez vous.
Remplacez-les donc par vos paramètres propres quand cela sera nécessaire.

2 - Ajouter un dépôt additionnel

Nginx n'est pas disponible dans les dépôts de CentOS, éditez donc le fichier /etc/yum.repos.d/nginx.repo

[root@lemp ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name = nginx repo
baseurl = http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck = 0
enabled = 1
3 - Installer MySQL (ou plutôt MariaDB)

Nous allons installer MariaDB un fork de MySQL avec la commande suivante:
[root@lemp ~]# yum install mariadb mariadb-server net-tools
On active ensuite le service "mariadb.service" et on le démarre:
[root@lemp ~]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@lemp ~]# systemctl start mariadb.service
[root@lemp ~]#
Nous pouvons maintenant vérifier si le port 10623 (mysqld) est en écoute:
[root@lemp ~]# netstat -tap | grep mysql
tcp        0      0 0.0.0.0:mysql           0.0.0.0:*               LISTEN      11051/mysqld
Dans l'exemple ci-dessus c'est bien le cas.

Ensuite il nous faut sécuriser l'accès à mariadb en indiquant un mot de passe avec la commande suivante:
[root@lemp ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: ligne379: find_mysql_client : commande introuvable

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] <= ENTRER
New password:<= nouveaumotdepasse
Re-enter new password:<= nouveaumotdepasse
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] <= ENTRER
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] <= ENTRER
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] <= ENTRER
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] <= ENTRER
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
[root@lemp ~]#





4 - Installer Nginx

Après l'étape 2 et donc l'ajout d'un dépôt additionnel pour nginx, il est possible d'installer nginx via yum:
[root@lemp ~]# yum install nginx
Activer et démarrer le service:
[root@lemp ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@lemp ~]# systemctl start nginx.service
En cas de pépin ...
 
Il y a des chances que vous ayez une erreur par rapport au port 80 qui serait déjà utilisé.
# service nginx start
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
Cela peut indiquer qu'un autre service HTTP est lancé (par exemple apache). Dans ce cas : stopper ce service (et supprimez-le) :
systemctl stop httpd.service
yum remove httpd
systemctl disable httpd.service
et réessayez de lancer NGINX:
systemctl enable nginx.service
systemctl start nginx.service
Continuons :
Ouvrir maintenant les ports HTTP et HTTPS sur le firewall, si vous avez le firewall activer:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
Dans certains cas, on peut aussi désactiver Firewalld et SELINUX (voir mon article correspondant : http://astunix.blogspot.fr/2016/01/rhelcentos-7-desactiver-selinux-et.html)

Tester l'accès grandeur nature


On peut maintenant tester l'accès au serveur depuis une autre machine du réseau en tapant dans le navigateur : http://10.250.0.134

5 - Installer PHP5 et APC

Installons PHP avec php-fpm (PHP-FASTCGI Process Manager) et php-cli:
[root@lemp ~]# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-mbstring php-xml php-xmlrpc php-mbstring php-snmp php-soap
Qu'est-ce qu'APC ?
APC is a free and open PHP opcode cacher for caching and optimizing PHP intermediate code. It's similar to other PHP opcode cachers, such as eAccelerator and Xcache. It is strongly recommended to have one of these installed to speed up your PHP page.

Installons d'abord les "Devlopment Tools":
yum install php-devel
yum groupinstall 'Development Tools'
Puis APC:
# pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
Enable internal debugging in APC [no] : <= ENTRER
Enable per request file info about files used from the APC cache [no] : <= ENTRER
Enable spin locks (EXPERIMENTAL) [no] : <= ENTRER
Enable memory protection (EXPERIMENTAL) [no] : <= ENTRER
Enable pthread mutexes (default) [no] : <= ENTRER
Enable pthread read/write locks (EXPERIMENTAL) [yes] : <= ENTRER
building in /var/tmp/pear-build-rootVrjsuq/APC-3.1.13
......
Ensuiter, éditer /etc/php.ini
# vim /etc/php.ini
et modifier la ligne suivante
;cgi.fix_pathinfo=1
par
cgi.fix_pathinfo=0
et ajouter la ligne suivant à la fin du fichier :
extension=apc.so
De plus, pour parer à des messages d'erreurs concernant la timezone tel que :
[21-July-2014 10:07:08] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /usr/share/nginx/html/info.php on line 2
dans /var/log/php-fpm/www-error.log

Nous pouvons ajouter dans /etc/php.ini la ligne suivante :
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Paris"
Ensuite, nous allons activer php-frm et le démarrer:
[root@lemp ~]# systemctl enable php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[root@lemp ~]# systemctl start php-fpm.service
Pour info, le processus de php-frm écoute sur le port 9000.

6 - Configurer Nginx

Le fichier de configuration de nginx est situé ici : /etc/nginx/nginx.conf
Editons-le:
[root@lemp ~]# vim /etc/nginx/nginx.conf
La configuration est facile à comprendre, on peut tout de même en apprendre plus aux adresses suivantes:
  • http://wiki.codemongers.com/NginxFullExample
  • http://wiki.codemongers.com/NginxFullExample2
[Optionnel] Nous allons augmenter le nombre de "worker_processes" et indiquer keepalive_timeout à un paramètre raisonnable :

[...]
events {
    worker_connections  1024;
    worker_connections  4;
}
[...]
    keepalive_timeout  65;
    keepalive_timeout  2;
[...]
Les virtual hosts sont définis dans les containers server {} dans /etc/nginx/conf.d. Nous allons ici modifié le vhost par défaut :
# vim /etc/nginx/conf.d/default.conf

[...]
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        try_files $uri =404;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

   
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }

}
Pour décrire les modifications opérées ci-dessus:
  • server_name locahost; indique le nom du vhost par defaut, on peut aussi mettre un hostname specifique comme www.exemple.fr)
  • Dans "Location /" nous avons ajouter index.php à la ligne "index".
  • "root /usr/share/nginx/html;" est la localisation du répertoire racine
  • Le partie importante pour PHP est  "location ~ /\.ht {}" le fait que ce soit décommenté l'active.
  • PHP-FPM écoute sur le port 9000 sur 127.0.0.1 par défaut. Il est aussi possible de paramètrer PHP-FPM pour qu'il utilise un Socket Unix (partie 7)
Maintenant nous allons recharger nginx:
[root@lemp ~]# systemctl restart nginx.service
 Et crééons le fichier php à la racine du serveur (qui est /usr/share/nginx/html) :
[root@lemp ~]# vim /usr/share/nginx/html/info.php
phpinfo();
?>
Maintenant, nous pouvons appeler info.php dans le navigateur via l'adresse: http://10.250.0.134/html/info.php.


Comme on peut le voir, PHP5 est utilisé ici et il fonctionne avec FPM/FastCGI comme vu dans la ligne Server API. Si nous faisons défilé la page, on peut voirtout les modules qui sont déjà activés dans PHP5 incluant le module MySQL:


7 - Appliquer le socket Unix pour PHP-FRM

(OPTIONNEL)
Par défaut, nous avons pu voir que PHP-FRM écoute sur le port 9000 sur 127.0.0.1. Il est aussi possible de changer cela et faire en sorte que PHP-FRM utilise unix socket. Pour ce faire :
[root@lemp html]# vim /etc/php-fpm.d/www.conf
[...]
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
listen = /var/run/php-frm/php5-frm.sock
[...]
Rédémarrer ensuite php-frm.service:
[root@lemp html]# systemctl restart php-frm.service
Ensuite, changeons la configuration de Nginx:
[root@lemp html]# vim /etc/nginx/conf.d/default.conf
[...]
fastcgi_pass   127.0.0.1:9000;
fastcgi_pass   unix:/var/run/php-fpm/php5-fpm.sock;
[...]
Et redémarrer nginx:
[root@lemp html]# systemctl restart nginx.service
8 - Liens


18 févr. 2016

[JAVASCRIPT] XML <->JSON (xml2json)

L'outils XML2JSON permet de convertir des fichier XML en JSON ce qui peut être pratique dans
certains cas de figures.
English Title: "How to convert  XML to JSON and JSON to XML in CLI"

les sources de xml2json https://www.npmjs.com/package/xml2json

Installation

$ npm install xml2json
npm http GET https://registry.npmjs.org/xml2json
npm http 200 https://registry.npmjs.org/xml2json
npm http GET https://registry.npmjs.org/xml2json/-/xml2json-0.9.0.tgz
npm http 200 https://registry.npmjs.org/xml2json/-/xml2json-0.9.0.tgz
[...]

Un répertoire nommé "node_modules" se créé là où vous avez exécuter la commande

Utiliser xml2json pour transformer du xml en json

Tout d'abord localisons xml2json: Il se trouve dans node_modules/bin et taper la commande sous la forme suivante:

$ cat monfichier.xml  | /home/stan/node_modules/xml2json/bin/xml2json > monfichier.json

Le fichier JSON est alors généré

On peut alors utiliser jq (https://stedolan.github.io/jq/tutorial/) pour bien formater le JSON.

Utiliser xml2json pour transformer du json en xml

Là ça se complique ! il y a bien un json2xml, mais pas de binaire pour l’exécuter, juste des libs
Je les ai quand même installées:

Installation
# npm install xml2json
Ensuite aller dans ~/node_modules/xml2json/bin/ (oui je dis bien dans xml2json et pas json2xml)

et créer le fichier json2xml

$ vim json2xml
Contenu du fichier:
#!/usr/bin/env node

var json2xml = require('../');
var pkg = require('../package.json');

var json = '';

var args = process.argv.slice(2)
var arg = args[0]

if (arg == '--version') {
        console.log(pkg.version)
        process.exit(0)
}

process.stdin.on('data', function (data) {
        json += data;
});

process.stdin.resume();

process.stdin.on('end', function () {
        xml = json2xml.toXml(json)
        process.stdout.write(xml + '\n')
});
Enregistrer et quitter, puis rendez le exécutable:

$ chmod +x json2xml
puis l'executer:
$ cat $JSONFILE | /opt/tools/node_modules/xml2json/bin/json2xml > $XMLFILE

 Et voilà

17 févr. 2016

[JSON] Comment parser du JSON via Linux (EN)

How to parse JSON string via command line on Linux

If you often deal with JSON-formatted texts from the command line or in shell scripts, you may wonder if there is any command-line utility which can parse JSON string. A command-line JSON parser can be handy when you test or debug JSON web services. You can feed JSON-formatted responses from web services into the command-line JSON parser, thereby easily inspecting otherwise hard-to-read JSON responses or extracting individual objects from them.

In this tutorial, I will describe how to parse JSON string from the command line.

On Linux, there is a command-line JSON processor called jq which does exactly that. Using jq, you can parse, filter, map, and transform JSON-structured data effortlessly.

To install jq on Linux, simply download its binary (available for 32-bit and 64-bit system separately) as follows.
$ wget http://stedolan.github.io/jq/download/linux32/jq (32-bit system)
$ wget http://stedolan.github.io/jq/download/linux64/jq (64-bit system)
$ chmod +x ./jq
$ sudo cp jq /usr/bin
The jq binary is also available for Windows and OS X platforms, and its full source code is released under the MIT license.

The following examples illustrate how to parse JSON-structured data with jq.

An example JSON Schema:
$ cat json.txt

{
        "name": "Google",
        "location":
                {
                        "street": "1600 Amphitheatre Parkway",
                        "city": "Mountain View",
                        "state": "California",
                        "country": "US"
                },
        "employees":
                [
                        {
                                "name": "Michael",
                                "division": "Engineering"
                        },
                        {
                                "name": "Laura",
                                "division": "HR"
                        },
                        {
                                "name": "Elise",
                                "division": "Marketing"
                        }
                ]
}
To parse a JSON object:
$ cat json.txt | jq '.name'

"Google"
To parse a nested JSON object:
$ cat json.txt | jq '.location.city'

"Mountain View"
To parse a JSON array:
$ cat json.txt | jq '.employees[0].name'

"Michael"
To extract specific fields from a JSON object:
$ cat json.txt | jq '.location | {street, city}'

{
  "city": "Mountain View",
  "street": "1600 Amphitheatre Parkway"
}


10 févr. 2016

[LINUX] Substitution avec sed

Article intéressant sur la substitution avec sed, c'est assez puissant si on veut apporter des
modifications sur un fichier très volumineux.
On peut remplacer une ligne par une autre, un mot par un autre, des minuscules par des majuscules et vis versa.

Substitution basique

Simple

- 1ère occurrence (de chaque ligne) rencontrée uniquement
sed 's/la/LA/' fichier.txt

Globale

- Toutes les occurrences (de chaque ligne) rencontrées
sed 's/la/LA/g' fichier.txt

Ciblée

- Seulement la 2ème occurrence (de chaque ligne) rencontrée
sed 's/la/LA/2' fichier.txt

Substitution conditionnée

Simple

/Motif/ - Uniquement si la ligne contient "motif"
sed '/awk/ s/sed/SED/' fichier.txt
Numéro de ligne - Uniquement la ligne n° "N"
sed '18 s/sed/SED/' fichier.txt
/Regex/ - Uniquement s'il y a correspondance avec l'expression régulière
sed '/^[ ][Ss]ed/ s/ed/ED/g' fichier.txt

Avancée

0,/regex/ - Uniquement la 1ère occurrence rencontrée
sed '0,/sed/ s//SED/' fichier.txt

Bloc

/motif1/,/motif2/ - Uniquement dans l'intervalle "motif1 - motif2"
sed '/Début/,/Fin/ s/ed/ED/' fichier.txt # 1ère occurrence uniquement
sed '/Début/,/Fin/ s/ed/ED/g' fichier.txt # toutes les occurrences
8,13 - Uniquement dans l'intervalle des lignes 8 à 13
sed '8,13 s/ed/ED/g' fichier.txt
On peut aussi combiner motif et ligne
sed '8,/Fin/ s/ed/ED/g' fichier.txt
sed '/Début/,13 s/ed/ED/g' fichier.txt
Ou encore avec des "regex"
sed '/Début/,$ s/ed/ED/g' fichier.txt # jusqu'à la fin ($)
sed '/^[ ][Ss]ed/,13 s/ed/ED/' fichier.txt

Avancée

Substituer tout un texte entre 2 motifs en excluant les motifs
sed  '/Début/,/Fin/{ /Début/b;/Fin/b; s/.*/SED - The Stream ÉDitor/; }' fichier.txt

5 févr. 2016

[DOCKER] trouver et utiliser whalesay (ETAPE 3)

Traduction depuis le site https://docs.docker.com/linux/step_three/
 
Des gens tout autour du monde créés des images Docker. Vous pouvez trouver ces images en parcourant le site internet "Docker Hub". Dans cette section, c'est exactement ce que vous allez faire, c'est-à-dire, trouver l'image et l'utiliser.

Etape 1: Localiser l'image nommée "whalesay"
 

1 - Ouvrir votre navigateur et aller sur le site Docker Hub


Le site Docker Hub contient des images dont l'origine provient d'individus comme vous et moi et d'organisation telles que RedHat, IBM, Google, etc.

2 - Rechercher le mot clé "whalesay" dans le moteur de recherche


3 - Cliquer sur "docker/whalesay" dans les résultats de recherche, cela va afficher le repository pour whalesay

Chaque repository d'image contient des informations la concernant telle que le type de logiciel que contient cette image et comment l'utiliser.
Vous pouvez notez que l'image whalesay est basée sur la distribution Linux UBUNTU. La prochaine étape consiste à lancer whalesay depuis votre machine de test.

Étape 2: Lancer whalesay

1 - Retourner sur votre shell
Taper:
$ docker run docker/whalesay cowsay boo
Unable to find image 'docker/whalesay:latest' locally
latest: Pulling from docker/whalesay
2880a3395ede: Pull complete
515565c29c94: Pull complete
98b15185dba7: Pull complete
2ce633e3e9c9: Pull complete
35217eff2e30: Pull complete
326bddfde6c0: Pull complete
3a2e7fe79da7: Pull complete
517de05c9075: Verifying Checksum
8f17e9411cf6: Download complete
ded5e192a685: Download complete
Pulling repository docker.io/docker/whalesay
fb434121fc77: Download complete
e9e06b06e14c: Download complete
a82efea989f9: Download complete
37bea4ee0c81: Download complete
07f8e8c5e660: Download complete
676c4a1897e6: Download complete
5b74edbcaa5b: Download complete
1722f41ddcb5: Download complete
99da72cfe067: Download complete
5d5bd9951e26: Download complete
Status: Downloaded newer image for docker/whalesay:latest
docker.io/docker/whalesay: this image was pulled from a legacy registry.  Important: This registry version will not be supported in future versions of docker.
 _____
< boo >
 -----
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/

La première fois que vous lancer une image, la commande docker devrait ressembler à ça. Si l'image n'est pas présente, docker s'occupera de la télécharger depuis Docker Hub.

2 - La commande suivante permet de lister les images sur votre système en local. vous devrez voir docker/whalesay dans la liste
Entrer
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
hello-world         latest              0a6ba66e537a        3 months ago        960 B
docker/whalesay     latest              fb434121fc77        8 months ago        247 MB
                            3a2e7fe79da7        8 months ago        247 MB
Quand vous lancer une image dans un container, Docker télécharge l'image sur votre ordinateur. Cette copie en locale vous fait gagner du temps. Docker re-télécharge seulement l'image seulement si la source a changé sur Docker Hub. Vous pouvez bien évidement supprimer l'image par vous-même. Vous l'apprendrez plus tard, pour le moment nous pouvons laisser l'image sur la machine car nous aurons à l'utiliser plus tard.

3 - Prenons un moment pour s'amuser avec le container whalesay.

Essayez de lancer whalesay encore en remplaçant "boo" par autre chose:
Entrer:
$ docker run docker/whalesay cowsay Salut-on-s-amuse-bien-avec-Docker!
 ____________________________________
< Salut-on-s-amuse-bien-avec-Docker! >
 ------------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/

[DOCKER] Images et Containers ? (ETAPE 2)

Cet article concerne la partie 2 du tutoriel Docker pour Linux: https://docs.docker.com/linux/step_two/


En apprendre plus sur Images et Containers

Le moteur Docker (Docker Engine) fourni la technologie core Docker qui permet d'activer les images et containers.
Lors de la première partie de l'installation, la commande hello-world (docker run hello-world) a utiliser une tâche "core" via le moteur Docker.
Cette commande comporte 3 parties

  • docker: commande docker installée sur votre système d'exploitation (ici GNU/Linux)
  • run: option de la commande docker qui permet de créer et lancer un container
  • hello-world: indique à docker quelle image doit être chargée dans le container
Qu'est-ce qu'un Container ?

Un container est une version minimal de Linux.

Qu'est-ce qu'une Image ?

Une image est un logiciel que l'on charge dans le container.

Quand on lance la commande docker, le moteur logiciel (Engine software):
  • Vérifier si l'image hello-world est présente
  • Télécharge l'image depuis Docker Hub (plus à ce sujet dans le chaptire suivant)
  • Charge l'image dans le container et la lance
Dépendant du comment elle est construite, une image pourrait lancer une simple et unique commande et ensuite se finir. C'est ce que "Hello-world" fait.

Une image Docker, est néanmoins capable de beaucoup plus que ça. Une image peut démarrer un programme aussi complexe qu'une base de donnée, attendre que vous (ou un tier) ajoute des donnée, stoque les données pour les utiliser plus tard et attendre un autre utilisateur.

Qui a créer l'image "hello-world" ?

Ici, c'est Docker qui l'a développé, mais tout un chacun peut créer des images. Le moteur Docker (Docker Engine) laisse les personnes ou les entreprises créer et partager des logiciels à travers les images Docker. Concernant l'utilisation du moteur, vous n'avez pas à vous soucier à propos des capacités de votre ordinateur à lancer les images - un container peut toujours le faire.

4 févr. 2016

[DOCKER] Commencer avec Docker sous Linux (ETAPE 1)

J'ai testé le tutoriel "Get Started with Docker for Linux" (source : https://docs.docker.com/linux/)

Ce tuto est destiné à toute personne intéressée pour en apprendre plus de Docker (ce qui est mon cas!)
Il sera a moitié en Anglais et mes commentaires en Français "rouge italique citation"

Commençons ...

This getting started is for non-technical users who are interested in learning about Docker. By following this getting started, you’ll learn fundamental Docker features by performing some simple tasks. 

  You’ll learn how to:
  • install Docker
  • run a software image in a container
  • browse for an image on Docker Hub
  • create your own image and run it in a container
  • create a Docker Hub account and an image repository
  • create an image of your own
  • push your image to Docker Hub for others to use
The getting started was user tested to reduce the chance of users having problems. For the best chance of success, follow the steps as written the first time before exploring on your own. It takes approximately 45 minutes to complete.
Make sure you understand…

This getting started uses Docker commands with a terminal window. You don’t need to be experienced using a command line, but you should be familiar with how to open one and type commands.
Il faut suivre scrupuleusement les étapes pour espérer que ça fonctionne, cela devrait durer 45 minutes. Pas besoin d'être un pro de la ligne de commande mais ça peut servir...
Installer Docker
Dans mon cas, je dispose d'une machine virtuelle 1Go de RAM, le système d'exploitation est Ubuntu 14.04.3 LTS
This installation procedure is written for users who are unfamiliar with package managers. If you are comfortable with package managers, prefer not to use wget, or have problems installing and want to troubleshoot, please use our apt and yum repositories instead for your installation.

1 - Log into your Ubuntu installation as a user with sudo privileges.
2 - Verify that you have wget installed.

Taper:
root@docker:~# which wget
/usr/bin/wget
If wget isn’t installed, install it after updating your manager:
Taper:
$ sudo apt-get update
$ sudo apt-get install wget
3 - Get the latest Docker package.
Taper:
$ wget -qO- https://get.docker.com/ | sh
The system prompts you for your sudo password. Then, it downloads and installs Docker and its dependencies.

Note: If your company is behind a filtering proxy, you may find that the apt-key command fails for the Docker repo during installation. To work around this, add the key directly using the following:


Penser à faire un export https_proxy="http://proxy:8080/" si vous êtes derrière un proxy ...
$ wget -qO- https://get.docker.com/gpg | sudo apt-key add -
4 - Verify docker is installed correctly.
Taper:
$ sudo docker run hello-world
sudo: unable to resolve host docker
Unable to find image 'hello-world:latest' locally
Pulling repository docker.io/library/hello-world
Error while pulling image: Get https://index.docker.io/v1/repositories/library/hello-
world/images: dial tcp: lookup index.docker.io: no such host
Dans mon cas ça ne s'est pas passer comme prévu car j'utilise un Proxy, pour résoudre ce problème. Suivre les instructions suivantes:
Editer /etc/default/docker
Taper:
$ sudo vim /etc/default/docker
ajouter les lignes suivantes:
export http_proxy="http://10.250.0.5:8080/"
export https_proxy="http://10.250.0.5:8080/"
export HTTP_PROXY="http://10.250.0.5:8080/"
export HTTPS_PROXY="http://10.250.0.5:8080/"

(10.250.0.5 à remplacer par votre proxy...)
Redémarrer le service docker
# service docker restart
docker stop/waiting
docker start/running, process 5072
Relancer la commande docker

root@docker:~# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b901d36b6f2f: Pull complete
0a6ba66e537a: Pull complete
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/userguide/

SOURCE: https://docs.docker.com/linux/step_one/