Listing de la commande
# busybox --list | sort
Résultat
- acpid
- add-shell
- addgroup
- adduser
- adjtimex
- arch
- arp
- arping
- ash
- awk
- base64
- basename
- bbconfig
- bc
- beep
- blkdiscard
- blkid
- blockdev
- brctl
- bunzip2
- bzcat
- bzip2
- cal
- cat
- chattr
- chgrp
- chmod
- chown
- chpasswd
- chroot
- chvt
- cksum
- clear
- cmp
- comm
- cp
- cpio
- crond
- crontab
- cryptpw
- cut
- date
- dc
- dd
- deallocvt
- delgroup
- deluser
- depmod
- df
- diff
- dirname
- dmesg
- dnsdomainname
- dos2unix
- du
- dumpkmap
- echo
- egrep
- eject
- env
- ether-wake
- expand
- expr
- factor
- fallocate
- false
- fatattr
- fbset
- fbsplash
- fdflush
- fdisk
- fgrep
- find
- findfs
- flock
- fold
- free
- fsck
- fstrim
- fsync
- fuser
- getopt
- getty
- grep
- groups
- gunzip
- gzip
- halt
- hd
- head
- hexdump
- hostid
- hostname
- hwclock
- id
- ifconfig
- ifdown
- ifenslave
- ifup
- init
- inotifyd
- insmod
- install
- ionice
- iostat
- ip
- ipaddr
- ipcalc
- ipcrm
- ipcs
- iplink
- ipneigh
- iproute
- iprule
- iptunnel
- kbd_mode
- kill
- killall
- killall5
- klogd
- last
- less
- link
- linux32
- linux64
- ln
- loadfont
- loadkmap
- logger
- login
- logread
- losetup
- ls
- lsattr
- lsmod
- lsof
- lsusb
- lzcat
- lzma
- lzop
- lzopcat
- makemime
- md5sum
- mdev
- mesg
- microcom
- mkdir
- mkdosfs
- mkfifo
- mkfs.vfat
- mknod
- mkpasswd
- mkswap
- mktemp
- modinfo
- modprobe
- more
- mount
- mountpoint
- mpstat
- mv
- nameif
- nanddump
- nandwrite
- nbd-client
- nc
- netstat
- nice
- nl
- nmeter
- nohup
- nologin
- nproc
- nsenter
- nslookup
- ntpd
- od
- openvt
- partprobe
- passwd
- paste
- pgrep
- pidof
- ping
- ping6
- pipe_progress
- pivot_root
- pkill
- pmap
- poweroff
- printenv
- printf
- ps
- pscan
- pstree
- pwd
- pwdx
- raidautorun
- rdate
- rdev
- readahead
- readlink
- realpath
- reboot
- reformime
- remove-shell
- renice
- reset
- resize
- rev
- rfkill
- rm
- rmdir
- rmmod
- route
- run-parts
- sed
- sendmail
- seq
- setconsole
- setfont
- setkeycodes
- setlogcons
- setpriv
- setserial
- setsid
- sh
- sha1sum
- sha256sum
- sha3sum
- sha512sum
- showkey
- shred
- shuf
- slattach
- sleep
- sort
- split
- stat
- strings
- stty
- su
- sum
- swapoff
- swapon
- switch_root
- sync
- sysctl
- syslogd
- tac
- tail
- tar
- tee
- test
- time
- timeout
- top
- touch
- tr
- traceroute
- traceroute6
- tree
- true
- truncate
- tty
- ttysize
- tunctl
- udhcpc
- udhcpc6
- umount
- uname
- unexpand
- uniq
- unix2dos
- unlink
- unlzma
- unlzop
- unshare
- unxz
- unzip
- uptime
- usleep
- uudecode
- uuencode
- vconfig
- vi
- vlock
- volname
- watch
- watchdog
- wc
- wget
- which
- who
- whoami
- whois
- xargs
- xxd
- xzcat
- yes
- zcat
- zcip
Mon /
est blindé il faut donc que je fasse de la place ailleurs, par exemple sur ma partition /home
. Puisque j'ai récupéré tout un tas d'images depuis des mois, j'ai mis au point une solution abrupte mais qui fonctionne :P
Comment ai-je fait ?
- Arrêter le démon Docker.
- Déplacer le contenu du dossier
/var/lib/docker
dans/home/docker
. - Supprimer
/var/lib/docker
. - Créer à la place un lien symbolique qui pointe vers
/home/docker
. - Redémarrer le démon Docker.
Problème
HSQLDB ou H2DB sont deux super beaux projets ! En substance, ils permettent, durant les phases de tests, de charger des BDD en mémoire et d'utiliser le dialecte de la base que l'on aura en production (eg. PostgreSQL, Oracle, etc).
Sauf que les dialectes des BDD changent et que toutes les syntaxes ne sont pas complétement implémentées...
Solution
Les TestContainers ! C'est-à-dire que pour charger votre BDD durant vos tests, vous aller écrire ceci :
public class MyTest {
private static DataSource dataSource;
private static MySQLContainer mysql;
@BeforeClass
public static void init() throws InterruptedException{
//You can also use the GenericContainer for arbitrary containers
//But there are convenient classes for common databases.
mysql = new MySQLContainer("mysql:5.5.53");
mysql.start();
dataSource = DataSourceBuilder.create()
.url(mysql.getJdbcUrl())
.username(mysql.getUsername())
.password(mysql.getPassword())
.driverClassName("com.mysql.cj.jdbc.Driver")
.build();
}
@AfterClass
public static void destroy(){
mysql.close();
}
@Test
public void foo(){
//use the database
}
}
Le seul prérequis, avoir podman (oui car Docker c'est has been).
Enjoy :D
Mon retour d'expérience sur Podman : ça marche très bien sous Red Hat. Il faudra encore quelques temps pour que tout soit correctement backporté sous Debian & Co AMHA.
Le fait que ça soit moins compatible avec Windows => #MenFiche
Quand on est un minimum professionnel, on code pas et on ne gère pas une production avec du Windows dans un conteneur ou derrière un conteneur. Du reste, Linux est un OS beaucoup plus productif pour les Dev et DevOps (certains prétendent le contraire certes, mais je pense qu'ils n'ont pas suffisamment pexé sous Linux pour le réaliser. Aprèsje sais que je suis partiale sur la question).
Tout un tas de recommandations pour optimiser Docker. Cela va des temps de construction des conteneurs en passant par leur taille et allant jusqu'au runtime. Des choses sûrement déjà dites mais ce type de synthèse sert toujours.
Via Memiks.
Un article en trois parties vraiment très bon et qui tombe pile poil au moment où je suis en train de regarder pour réduire la taille des images Dockers de plusieurs projets.
Je sens que ça va intéresser @Philou :
- Lien vers la partie 1.
- Lien vers la partie 2.
- Lien vers la partie 3.
Via Liandri.
Utiliser le layering Docker via un plugin Maven. Pour @Philou de la part de @Ercou.
Merci à @CCous pour l'info (et que j'oublie tout le temps).
La commande à taper c'est :
docker run --entrypoint "id" <mon-image-docker>
Une réponse de @Philou sur ce post où je parle des fatjar, de Docker et de leur inefficacité.
Très intéressant.
Pourquoi les FatJar avec Docker sont un antipattern, sachant qu'ils sont un anti-pattern quoi qu'il arrive ! #CoucouSpringBoot
Les mécanismes de versioning des applications ne sont pas forcément les mêmes en fonction des contextes.
Typiquement si un Product-Team n'est pas impactée par les problématiques de modification de version de Maven, des Project-Team qui modifient chacune des composants d'un gigantesque monolithe, quant à elles le sont.
Merci à Philou pour son lien ainsi que les deux suivants :
Un peu de Docker pour mettre en place un Nginx servant du HTTP sur SSL. Très bon article.
Ce post a deux ans, les choses se sont améliorées mais pas toutes.
Tiens, une nouvelle faille de sécurité dans Docker... Le plus drôle c'est que la solution recommandée est de setuper un conteneur dans une machine virtuelle dédiée... Comment vous dire ? Quel est l'intérêt de se servir des conteneurs alors ???
=> Dans mon entreprise, nous sommes restés sur du bar-métal (linux physique) ou de la VM en flat. Merci à Ansible qui fait le taf sans sourciller !
@Doudou : tu en parles à tes clients, ils vont apprécier je dirai :D
Un tuto pour installer Docker sur une Linux Mint
Papoter sur les logiciels libres, les serveurs, mon Fairphone et ma Aquaris M10
Ce que l'on sait depuis un moment déjà sur l'immaturité des conteneurs.
Je me mets sérieusement à Kubernetes
Un rex sur Docker
Pour Doudou :
Découvrez comment prendre le contrôle d'un serveur Docker avec un simple conteneur ! Vous aurez accès avec l'utilisateur root à l'ensemble des fichiers/dossiers du serveur ! La seule condition, avoir accès à un utilisateur membre du groupe Docker !
Parce que je sais que les gens chez toi ont remplacé leur PIC Ansible par une PIC Docker parce que le problème du super conteneur n'existait plus hein... Bah non en fait.