- Check you have installed docker or podman:
podman run hello-worlddocker run hello-world- Run a container:
podman run -d --name mynginx nginxdocker run -d --name mynginx nginx- List the containers running:
podman psdocker ps- Enter a running container:
podman exec -ti mynginx bashdocker exec -ti mynginx bash- Check a container's logs:
podman logs mynginxdocker logs mynginx- Inspect a container's data:
podman inspect mynginxdocker inspect mynginx- Check a container's running processes:
podman top mynginxdocker top mynginx- Check container's resources consumption:
podman stats mynginxdocker stats mynginx- Pause a running container:
podman pause mynginxdocker pause mynginx- Unpause a container:
podman unpause mynginxdocker unpause mynginx- Stop a container:
podman stop mynginxdocker stop mynginx- Start a container:
podman start mynginxdocker start mynginx- kill a container:
podman kill mynginxdocker kill mynginx- delete a container:
podman delete mynginxdocker delete mynginx- Remove all containers:
podman rm -f $(podman ps -aq)docker rm -f $(docker ps -aq)- Get a alpine image:
podman pull alpinedocker pull alpine- Check layers of a image:
podman history alpinedocker history alpine- Lunch a alpine and attach to it:
podman run --name mytest --ti alpine bashdocker run --name mytest --ti alpine bashInside the container (mytest):
echo "Hi" > myfile
rm /etc/localtimeCheck the diff
podman diff mytestdocker diff mytestCreate a new image with the changes:
podman commit mytest academy/mytest:r0docker commit mytest academy/mytest:r0Check the history of the new image:
podman history academy/mytest:r0docker history academy/mytest:r0Export a image:
podman save academy/mytest:ro -o /tmp/image.tardocker save academy/mytest:ro -o /tmp/image.tarpodman search wordpressdocker search wordpresspodman search wordpress --list-tagspodman run --name mymaria -d -e MARIADB_ROOT_PASSWORD="pa$$w0rd" -e MARIADB_USER="foo" -e MARIADB_PASSWORD="bar1234" -e MARIADB_DATABASE="academy" docker.io/library/mariadbdocker run --name mymaria -d -e MARIADB_ROOT_PASSWORD="pa$$w0rd" -e MARIADB_USER="foo" -e MARIADB_PASSWORD="bar1234" -e MARIADB_DATABASE="academy" mariadbpodman run --name client --rm -ti docker.io/library/mysql:latest bashdocker run --name client --rm -ti mysql bashIn the console of the container:
mysql -h "mymaria" -u"foo" -p"bar1234" "academy"You can't access so let's use a networks:
podman network create testnetwork
podman network inspect testnetworkdocker network create testnetwork
docker network inspect testnetworkNow try to access again:
podman run --name mymaria --hostname mymaria --network testnetwork -d -e MARIADB_ROOT_PASSWORD="pa$$w0rd" -e MARIADB_USER="foo" -e MARIADB_PASSWORD="bar1234" -e MARIADB_DATABASE="academy" mariadb
podman run --name client --network testnetwork -ti --rm docker.io/library/mysql:latest bashdocker run --name mymaria --hostname mymaria --network testnetwork -d -e MARIADB_ROOT_PASSWORD="pa$$w0rd" -e MARIADB_USER="foo" -e MARIADB_PASSWORD="bar1234" -e MARIADB_DATABASE="academy" mariadb
docker run --name client --network testnetwork --rm -ti mysql bashmysql -h "mymaria" -u"foo" -p"bar1234" "academy"podman ps -a
podman stop mymaria && docker rm mymariapodman run --name mymaria -p 3306:3306 --hostname mymaria --network testnetwork -d -e MARIADB_ROOT_PASSWORD="pa$$w0rd" -e MARIADB_USER="foo" -e MARIADB_PASSWORD="bar1234" -e MARIADB_DATABASE="academy" mariadbdocker ps -a
docker stop mymaria && docker rm mymariadocker run --name mymaria -p 3306:3306 --hostname mymaria --network testnetwork -d -e MARIADB_ROOT_PASSWORD="pa$$w0rd" -e MARIADB_USER="foo" -e MARIADB_PASSWORD="bar1234" -e MARIADB_DATABASE="academy" mariadbpodman volume create myvol
podman volume inspect myvolpodman run --name cont1 -v myvol:/mnt/volume -ti alpine
podman run --name cont2 -v myvol:/mnt/volume -ti alpinedocker volume create myvol
docker volume inspect myvoldocker run --name cont1 -v myvol:/mnt/volume -ti alpine
docker run --name cont2 -v myvol:/mnt/volume -ti alpinepodman stop $(podman ps -aq) && podman rm $(podman ps -aq)docker stop $(docker ps -aq) && docker rm $(docker ps -aq)Create a new volume
podman volume create mariadb-datadocker volume create mariadb-dataDeploy a new container with the volume
podman run -d -p 3306:3306 --name mymaria \
--hostname mymaria \
--network testnetwork \
-e MARIADB_ROOT_PASSWORD="pa$$w0rd" \
-e MARIADB_USER="foo" \
-e MARIADB_PASSWORD="bar123" \
-e MARIADB_DATABASE="academy" \
-v mariadb_data:/var/lib/mysql mariadbdocker run -d -p 3306:3306 --name mymaria \
--hostname mymaria \
--network testnetwork \
-e MARIADB_ROOT_PASSWORD="pa$$w0rd" \
-e MARIADB_USER="foo" \
-e MARIADB_PASSWORD="bar123" \
-e MARIADB_DATABASE="academy" \
-v mariadb_data:/var/lib/mysql mariadbYou can specify a path in your host:
podman run -d -p 3306:3306 --name maria2 \
--hostname mymaria \
--network testnetwork \
-e MARIADB_ROOT_PASSWORD="pa$$w0rd" \
-e MARIADB_USER="foo" \
-e MARIADB_PASSWORD="bar1234" \
-e MARIADB_DATABASE="academy" \
-v /tmp/mypath:/var/lib/mysql mariadbdocker run -d -p 3306:3306 --name maria2 \
--hostname mymaria \
--network testnetwork \
-e MARIADB_ROOT_PASSWORD="pa$$w0rd" \
-e MARIADB_USER="foo" \
-e MARIADB_PASSWORD="bar1234" \
-e MARIADB_DATABASE="academy" \
-v /tmp/mypath:/var/lib/mysql mariadbpodman build -t academy/test:latest .
podman run -d --name test -p 8080:80 academy/test:latestdocker build -t academy/test:latest .
docker run -d --name test -p 8080:80 academy/test:latestpodman container prune
podman image prune
podman volume prune
podman system prunedocker container prune
docker image prune
docker volume prune
docker system prunedocker run -d --name mymongo mongoversion: '3'
services:
mongodb:
image: mongo
container_name: mymongodocker compose up -ddocker compose downdocker compose -f docker-compose-mariadb.yaml up -dTesting docker-compose:
mariadb -h "mariadb" -u"foo" -p"bar1234" "academy"docker compose ps
docker compose stop client
docker compose run client bash
docker compose run --no-deps client bash
docker compose logs
docker compose down --volumes