Docker
https://medium.com/botfuel/how-to-expose-a-local-development-server-to-the-internet-c31532d741cc
Install docker on Linux according to the instructions. You can download docker images from the docker hub.
Basic commands
docker --version # Check docker version
docker info # Check docker system information
docker pull nginx # Pull nginx image from docker hub
docker image ls # Show docker images
docker run container -d nginx # Run docker container
docker container ps # Show running containers
docker inspect container_name # Inspect docker container
curl 172.17.0.2 # Check if nginx is working
docker docker container stop container_name # Stop container
docker container ps -s # Show all containers
docker start container_name # Start container again
docker restart container_name # Restart running container
docker container run --help # Show help about container run
docker container rm container_name # Remove container (stop it first)
# Run a container based on nginx image in detached, terminal, interactive mode
docker container run -d -t -i --name nginx-demo --hostname nginxwebserver nginx
docker container exec -t -i nginx-demo bash # Open interactive terminal in container
docker container exec -t -i nginx-demo ip a # Run a command in container
docker container rm -f container_name # Force remove container
docker container run -d -t -i --name mysql-server --hostname mysqldbserver \
-e MYSQL_ROOT_PASSWORD=test1234 -e MYSQL_ROOT_HOST='%' mysql
mysql -h 172.17.0.2 -u root -p # Log into MySQL server from host machine
show databases;
create database visualpath;
\q
Set up cloudflare zero trust
docker run ... --network host ... --name mysql-server
cloudflared access rdp --hostname rdp.domain.com --url rdp://localhost:3389
cloudflared access tcp --hostname mysql.domain.com --url localhost:3366
mysql -h localhost -P3366 --protocol=tcp -u root -p
docker container run -d --name nginx-demo -p 8090:80 nginx # Port forwarding
docker container run -d --name apache-demo -p 8080:80 httpd # Apache container
Container restart policy
docker container update --restart always nginx-demo # Update container restart policy to always
docker container run -d --name mysql-db \
-e MYSQL_ROOT_PASSWORD=pass \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_ROOT_HOST='%' \
mysql # First deploy mysql database for wordpress
docker run -d --name wp-dev -p 8090:80 \
-e WORDPRESS_DB_HOST=172.17.0.2 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=pass \
-e WORDPRESS_DB_NAME=wordpress \
wordpress # Deploy wordpress website
docker container run -d --name jenkins-cicd -p8090:8080 jenkins/jenkins:lts-jdk17 # Deploy Jenkins
docker logs jenkins-cicd # Display logs
docker logs -f jenkins-cicd # Display live logs
docker container run --rm -t -i --name ubuntu-demo ubuntu:24.04 bash # Remove container automatically
docker container exec -t -i nginx-demo bash # Log into container and open bash
docker container exec -t -i nginx-demo cat /etc/hosts # Execute a command in the container but not log in
docker container create --name nginx-demo nginx # Create a container but not start it
docker container start nginx-demo # Start it manually
Docker images
docker image ls # List images
docker image history nginx:latest # Show image layers
docker image pull nginx # Download docker image from docker hub registry
docker info # Show information about docker
docker container ps -s # Show container size on disk
watch docker container ps -s # Watch change live
docker image rm nginx:latest # Remove image
docker image # Show command options
docker login # Log in to docker account
docker logout # Log out from docker account
docker image tag nginx:latest romanak/nginx:latest # Tag image
docker push romanak/nginx:latest # Push image to registry