openssl req -new -newkey rsa:2048 -keyout XXX.key -out XXX.csr
openssl rsa -in XXX.key -out XXX.unsecure.key
openssl rsa -in maCle.pem -des3 -out maCle.pem
openssl pkcs12 -inkey privkey.pem -in chaine.pem -export -out fichier.pfx
openssl s_client -connect address.of.my.isp.com:587 -starttls smtp
ssh -i clef.txt root@host
ssh-keygen -y -f ~/.ssh/clef-privée > ~/.ssh/id_rsa.pub
# output d'une clef privée
ssh-keygen -l -f ~/.ssh/id_rsa
openssl x509 -in <fichier.pem> -noout -text | grep DNS
# CREATION DE LA CA ET SON CERTIF ASSOCIE :
openssl genrsa -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
# dans les réponse de la commande :common name : test-server.home.naoned.net
# CREATION DU CERTIFICAT SERVEUR :
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=test-server.home.naoned.net" -sha256 -new -key server-key.pem -out server.csr
# créer un request CERTIF pour le nom du serveur ainsi que les fonctions d'auth étendue
echo "subjectAltName = DNS:test-server.home.naoned.net,IP:172.16.16.x;IP:127.0.0.1" >>extFile.cnf
echo "extendedKeyUsage = serverAuth" >>extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
# ok le certificat du serveur est créé et validé via la CA ainsi qu'avec l'extension "serverAuth"
# on fait la même chose pour le client qui se connectera
openssl genrsa -out key.pem 4096
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
echo "extendedKeyUsage = clientAuth" >>extfile-client.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf
# install de sudo
apt install sudo
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker ps -a
docker ps -aq (juste l id de chaque conteneur)
docker images list
docker exec -it container-id command (-tty -interactive)
docker run -d -p 80:80 --name apache-php -v /docker:/var/www/html php:7.4-apache
docker kill apache-php
docker rm apache-php
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariad -> recup ip.
docker run --name myadmin -d --link mariadb:db -p 9080:80 phpmyadmin
docker exec -it mariadb bash
docker commit -p db012f940cd7 container1
docker save -o ~/container1.tar container1
docker load -i /root/container1.tar
docker run --name webserver -d -p 80:80 -p 443:443 -it debian:latest /bin/bash -l
docker exec -it /bin/bash
docker commit container image-custom:version
docker save -o archive.tar
apt install wget lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update
docker run -di --name toto alpine:latest
docker exec -ti toto sh
docker run -tid -p 8080:80 --name web nginx:latest
docker inspect toto
docker start toto
docker stop toto
docker run -tid -p 8080:80 -v /srv/data/toto:/usr/share/nginx/html --name web nginx:latest
docker volume create totovol
docker volume ls
docker volume inspect totovol
docker run -tid -p 8080:80 --mount source=totovol,target=/usr/share/nginx/html --name web nginx:latest
docker run -tid --name toto --env MYVAR="toto" ubuntu:latest
docker run -tid --name toto --env-file vars.txt ubuntu:latest
docker run -tid --name toto --hostname toto.io ubuntu:latest
docker commit -m "nouvelle image custom" <id_image_source> toto:custom-1.0
docker image ls
docker run -tid --name imagecustom toto-custom-1.0
docker history <id_image_source>
dockerfile c'est quoi : fichier text avec séquence de tâches -> RUN / ENV (variables d'env) / EXPOSE (port mapping) / VOLUME / COPY (entre host et conteneur) / ENTRYPOINT (processus maitre du conteneur)
exemple de dockerfile :
FROM ubuntu:latest
MAINTAINER hello c'est moi
ENV mavariable valeur
RUN apt-get update
RUN apt-get install vim
RUN apt-get install nmap \
&& apt-get clean \
&& rm -rf /tmp/*
(...)
VOLUME /var/www/html
COPY source /toto/destination
docker network create -d macvlan \
--subnet=192.168.2.0/24 \
--ip-range=192.168.2.128/25 \
--gateway=192.168.2.254 \
--aux-address="my-router=192.168.2.129" \
-o parent=eth0 wireguard_interne ?
docker built -t monimage:version . <point=dockerfile (Dockerfile en maj dans le rep courant, quoi)
docker image ls
docker history monimage:version
docker rmi monimage:version < suppression de l image custom
option "--volumes-from", pour importer les volumes d un autre conteneur
docker run -it --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /var/lib:/var/lib \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib/systemd:/usr/lib/systemd \
-v /etc:/etc --label docker_bench_security \
docker/docker-bench-security
docker tag image_source:version image_dest:version
rajouter un "tag image_dest:version" à l'image source d'un conteneur
idem pour la registry , il faut tagger l'image à push par son nomd'image complet (voir la doc gitlab par ex)
docker save -o dir/fichier conteneur:version
docker load -i dir/fichier
le Bridge docker0 (en général 172.17.0.0/16)
creer un autre réseau "bridge"
docker network create -d bridge --subnet 172.30.0.0/16 mynetwork
... et l'utiliser
docker run -tid --name conteneur1 --network mynetwork alpine
options de lancement réseau sur les conteneurs :
--net : none
--net : host
--net container:nom-du-conteneur
--link nom-du-conteneur > comme --net container mais ajout dans etc/host du conteneur lui-même
options --dns dans le resolv.conf ou --add-host toto:ip pour rajouter dans le etc/hosts directement
...à partir d'un rep contenant le docker-compose.yml
docker-compose build
docker-compose up
docker-compose up -d
docker-compose ps
docker-compose start
docker-compose stop
docker-compose rm
docker-compose down (stop + rm en même temps)
docker-compose scale SERVICE=3
docker-compose pull (maj des images)
# Obtenir une version spécifique
apt-cache madison docker-ce | awk '{ print $3 }'
# L'installer
apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
sudo rm -rf /var/lib/containerd
sudo rm -r ~/.docker