What is the Recommended Way to Learn that is Free of Cost?

I am using Wnidows 11. I have just begun to learn Dockers and I have a lot of questions.

I have watched some youtube tutorials and I have been looking on Linkedin. I very much have found that it is now time to start asking questions for the purpose of clarity. I think I will start this in another discussion thread.

What I would very much like to do is follow some sort of step by step guide.

I am a software engineer and I do not like mysteries. I want to understand what everything means. For example, the first think I learned was that the command, docker ps was very powerful to enter at the command line and gave vital information on the state of Docker. Its results are what one would expect for a windows 11 computer with miniKube. But I would very much like to know what EVERYTHING means.

running docker ps on bash without being inside minikube produces this:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e44f97236926 Google Cloud console /usr/local/bin/entr… 2 days ago Up 47 hours 127.0.0.1:51402->22/tcp, minikube
127.0.0.1:51403->2376/tcp,
127.0.0.1:51405->5000/tcp
127.0.0.1:51406->8443/tcp,
127.0.0.1:51404->32443/tcp

What does it all mean?
Does this result mean that minkube is in fact a container, a running image, as the definition of a container states? Please excuse the simplicity and elementary nature of this question. I think it might be useful for newbs to have a discussion thread that starts at the very absolute beginning. Sometimes things seme obvious to people and forget that it was once acquired knowledge.

EDIT: In the process of making this post, I discovered something interesting. Obviously “gcr.io
means “Google Cloud console” and this is a discovery that is an indication that our minKube installed on our computer is linked to the Google cloud somehow. Can someone elaborate on this.

This was not what I literally posed in this OP. I actually pasted the URL to Googles “k8s-minikube” and I assume that “k8s-minikube/kicbase:v0.0.40” must the the version currently in use!

What is this command and what does it mean: “/usr/local/bin/entr…”

The five entries that appear under “ports” are reminiscent of being a left-over from a tutorial I was taking. But the description was confusing. Are they Images or PODs, or Containers, or Deployments or Services?

I think they are scaled deployments. But does this mean that they are the same thing as Images or Containers?

Since I am dumping a lot of questions here, what exactly IS curl and why is it when we run this command

What is a “Service”?

Is Kurbernetes a service?

Is it ok to ask questions about Kurbenetes on a Docker forum?

Is a service the same thing as a deployment?

when I type from the command line:

kubectl get services

I get this

$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 443/TCP 2d9h
nginx-deployment ClusterIP 10.110.65.150 8080/TCP 40h

So, what is a cluster IP?

How are Ports used?

Is my dumping a ton of question lesson or improve the likelihood that they will be answered?

What is a POD?

I think I will end this OP with the information I got inside miniKube. Please enlighten me and explain what all this means. Here, I can answer some of this. MiniKube has a number of contains in the Maser Node / control_plane which are:
API SERVER
SCHEDULER
KUBE CONTROL MANAGER
CLOUD CONTROL MANAGER
etcd
Kubelet
kube-proxy
But I would like to know what each of these do. The are mentioned in the tutorial. I created the test containers. There are other containers created as part of the tutorials. And there are some system containers, it seems, that are not part of the list above that need some explanation, please.

May I suggest to look at these two free self-paced trainings:

Both should provide a solid foundation about the concepts and how things are actually done.

Once you get a better understanding, you will be able to ask more fine-grained questions, instead of asking general questions about things that should be easy to find in the documentation.

1 Like

I agree with @meyay.

Additionally, my experience is that learning is always a long process. Sometimes you can speed it up by paying for someone, but there is no free all-in-one guide that works for everyone. So we are like knowledge miners (I made it up) trying to find sources and learn step by step and practice a lot, try everything that is posisble to understand the basics. The documentation is usually the first step, but we also have to learn interpreting documentations in general. Some ae short, clear and understandable, some are more complex, full of links and some are even full of bugs (Concourse CI getting started guide). So the most important requirement is understanding the concepts. And I mean the concept on different levels. Even if you don’t know what a container is exactly at the level of the Linux kernel, you practice enough to understand even without a documentation to know it is an isolated system that you can create, start, stop, delete and you need an image for that usually. And later you learn mounting files into the container and everything.

The fact that you are using Windows makes it harder to understand and you can find more guide for Linux and also more people who use it on Linux. Searching for Docker and Windows keywords on Google eventually you learn that Linux containers on Windows require a virtual machine, but I wrote about the differences too.

Since you are using minikube, that is another software with its own documentation where you can find it supports multiple drivers and Docker is preferred on Windows.

So the answer to the question

is that minikube could run in a container which is basically a “kind” meaning “Kubernetes in Docker” although kind is another tool: https://kind.sigs.k8s.io/

Those kind of threads would become a mess very quickly. I think most of the threads here are about the absolute beginning from different angles. Since you are a software engineer, you probably know that the beginning is always hard and reading, practicing and time makes you an expert. People who get the answer for the absolute beginner questions all the time learn nothing and when there is a specific thread to discuss everything, nobody will ever find anything in it and it would be really hard to follow the discussions there. That’s why it is important to ask about a specific issue which can be answered and will be answered unless it was already answered a thousend times and it could be found by using the search page.

How is that a console? That is a good example why learning to use Google and interpreting the naswers is important too. When you search for gcr.io, you will indeed find a page from the Google Cloud Console, but the title of the page is “Google Container Registry” which suddenly makes sense :slight_smile:

We are back to the importance of learning the concepts like images and in this case a registry. minikube is not linked to Google Cloud. It uses images downloaded from the Google Container Registry. That was the old registry of Kubernetes but they use a new registry as of K8s 1.25

If you don’t know Docker and containers in general, I wouldn’t start to learn Kubernetes. Or did you just installed it to have Docker on Windows? You could use Docker Desktop for Windows which I mentioned before.

This is also something I wrote about in my tutorial linked above at tge beginning of my answer.

There is a Kubernetes forum as well, but they will tell you the same. Don’t start with Kubernetes if you don’t know anything about containers in general. Kubernetes is much more complicated and indeed has concepts like “service” which means a completely different thing in the world of Docker and Docker Compose. It was hard to understand even for me at the beginning years ago.

is there a “cheat sheet” some where of all the ways someone can use the docker command line command. I mean, we have “docker ps”. What are other ways of using the docker command and what do they all do.

for example, I just learned that docker ps -a
will show all the docker image containers on your system running or not.

So I think I messed up really badly and posed a Kubernetes question in the OP

Excuse me if I misunderstand your question, but you mean the same documentation in which you can read about docker ps and the --help flag which is supported by almost all command line software?

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Log in to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.11.2-desktop.5)
  checkpoint  Manage checkpoints
  compose*    Docker Compose (Docker Inc., v2.22.0-desktop.2)
  container   Manage containers
  context     Manage contexts
  dev*        Docker Dev Environments (Docker Inc., v0.1.0)
  extension*  Manages Docker extensions (Docker Inc., v0.2.20)
  image       Manage images
  init*       Creates Docker-related starter files for your project (Docker Inc., v0.1.0-beta.8)
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  sbom*       View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
  scan*       Docker Scan (Docker Inc., v0.26.0)
  scout*      Docker Scout (Docker Inc., v1.0.7)
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Swarm Commands:
  config      Manage Swarm configs
  node        Manage Swarm nodes
  secret      Manage Swarm secrets
  service     Manage Swarm services
  stack       Manage Swarm stacks
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default "/Users/ta/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST
                           env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default
                           "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/Users/ta/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/Users/ta/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/Users/ta/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Run 'docker COMMAND --help' for more information on a command.

For more help on how to use Docker, head to https://docs.docker.com/go/guides/

Please, take my advice and start to use the documentation, and Google and try to ask more specific questions which couldn’t be answered that way. Otherwise you will get less and less answers on any forum. We gave you some links to start and again, since you stated you are a software engineer, we trust that those can help you

Try docker --help to see the command list.

Run ‘docker COMMAND --help’ for more information on a command.