Docker Hub vs Docker Desktop Vs Docker Enterprise

Objective of this article is to explain about Docker Desktop which is also known as Docker for Windows or Mac, Docker Enterprise and Docker Hub.

What is Docker Desktop?

Docker Desktop is also known as Docker for Windows/Mac. Docker desktop is the Community Edition(CE) of Docker and it’s designed to run on Windows 10 & Mac OS. Docker desktop provides an Easy-to-use development environment for building, shipping and running Docker containers. For more information about how to setup Docker Desktop, Click Here

Note: Docker desktop or Docker for windows will not compatible on below Windows-10 version. It may cause problems while installing or running containers in prior windows-10 version. So, make sure you are using Windows-10 version.

What is Docker Enterprise?

Docker Enterprise is the Enterprise Edition(EE) of Docker and it’s designed to run on Windows & Linux OS. Docker Enterprise Edition is paid and good to use when we are using multi-OS, multi-Linux or multi-cloud environments.

As per official Docker blog, Docker Enterprise Edition (EE) is the only platform that manages and secures applications on Kubernetes(K8s) in multi-Linux, multi-OS and multi-cloud customer environments. As a complete platform that integrates and scales with your organization, Docker Enterprise Edition gives you the most flexibility and choice over the types of applications supported, general used, and where it’s deployed.

What is Docker hub?

Docker hub is nothing like a app store/market place of docker container images. Docker hub is also known as Cloud-based application registry and development team collaboration services. We can access docker hub by using the below URL.

https://hub.docker.com/

Docker ToolBox for Windows

Docker Toolbox is for older Mac and Windows systems that do not meet the requirements of Docker Desktop for Mac and Docker Desktop for Windows. Mostly windows Home edition doesn’t support Docker Desktop.

Please follow below link to install docker tool box in windows :

https://docs.docker.com/toolbox/toolbox_install_windows/

After the installation ,following issue might occur in windows .

Issues :

  1. When we run Docker QuickStart terminal after the installation, following error pops up in command
  2. Unable to start the VM: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe startvm default –type headless failed:
  3. VBoxManage.exe: error: Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT)
  4. VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
  5. Details: 00:00:01.943299 Power up failed (vrc=VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT, rc=E_FAIL (0X80004005))
  6. Looks like something went wrong in step ´Checking status on default´… Press any key to continue…

Resolution :

The above error is because of Hyper Vision . We need to enable HyperVision in windows with the below steps:

->Run a command prompt as administrator and execute:

dism /Online /Disable-Feature:Microsoft-Hyper-V

Note : For some cases ,you will get Feature name Microsoft-Hyper-V is unknown. when you trying to disable Hyper-V from Powershell. Please run below command

DISM /Online /Disable-Feature:HypervisorPlatform

->Reboot windows and type below in command prompt /powershell as admin.

bcdedit /set hypervisorlaunchtype off

If the above issue is not resolved after enabling hypervision then please follow below steps

-> Open C:\Program Files\Docker Toolbox

when docker toolbox was installed it should be as “${DOCKER_MACHINE}” create -d virtualbox $PROXY_ENV “${VM}”

Please edit start file as “${DOCKER_MACHINE}” create -d virtualbox -virtualbox-no-vtx-check $PROXY_ENV “${VM}”

-> Run bcdedit in powershell as admin mode,If hyper vision launcher type status OFF then its fine. If it is AUTO then run bcdedit /set hypervisorlaunchtype off to change status to OFF.

-> Reboot the system and start docker quick start

Steps to Build and Run a project in Docker

The objective of this article to explain how to clone a project from Github, how to build and run a project using docker. To execute the following commands in this article we are using Windows Power Shell app. Copy the below link to clone doodle project as sown in the below snapshot.

 git clone https://github.com/docker/doodle.git

Open the Power shell app in windows, paste the above link and enter to clone the doodle project into your local from Github. Look at the below screenshot, click on Next Step button to proceed further.

Use the below command to build the doodle project which you cloned. Look at the below snapshot to get the command.

cd doodle\cheers2019 ; docker build -t subbareddyroyal/cheers2019 .

If you have selected the checkbox to use Windows containers instead of Linux containers, you may end up with these build problems with windows containers in Docker.

Look at the complete build log in below,

PS C:\Users\USER\doodle\cheers2019> docker build -t subbareddyroyal/cheers2019 .
Sending build context to Docker daemon  13.31kB
Step 1/9 : FROM golang:1.11-alpine AS builder
1.11-alpine: Pulling from library/golang
9d48c3bd43c5: Pull complete
7f94eaf8af20: Pull complete
9fe9984849c1: Pull complete
ec448270508e: Pull complete
65ba82af53f7: Pull complete
Digest: sha256:09e47edb668c2cac8c0bbce113f2f72c97b1555d70546dff569c8b9b27fcebd3
Status: Downloaded newer image for golang:1.11-alpine
 ---> e116d2efa2ab
Step 2/9 : RUN apk add --no-cache git
 ---> Running in 12294dfcd16f
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
(1/5) Installing nghttp2-libs (1.39.2-r0)
(2/5) Installing libcurl (7.66.0-r0)
(3/5) Installing expat (2.2.8-r0)
(4/5) Installing pcre2 (10.33-r0)
(5/5) Installing git (2.22.0-r0)
Executing busybox-1.30.1-r2.trigger
OK: 21 MiB in 20 packages
Removing intermediate container 12294dfcd16f
 ---> ad60dc062125
Step 3/9 : RUN go get github.com/pdevine/go-asciisprite
 ---> Running in 1aac9775b8fc
Removing intermediate container 1aac9775b8fc
 ---> 36bc85ba1d54
Step 4/9 : WORKDIR /project
 ---> Running in b6b7fb080c76
Removing intermediate container b6b7fb080c76
 ---> 869c1330f798
Step 5/9 : COPY cheers.go .
 ---> 14ad50d63b75
Step 6/9 : RUN CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' 
-o cheers cheers.go
 ---> Running in f7ec6a7e31a5
Removing intermediate container f7ec6a7e31a5
 ---> 1860a3c041b4
Step 7/9 : FROM scratch
 --->
Step 8/9 : COPY --from=builder /project/cheers /cheers
 ---> 57ba1a37badc
Step 9/9 : ENTRYPOINT ["/cheers"]
 ---> Running in 4121ff99ce65
Removing intermediate container 4121ff99ce65
 ---> e51c83d4c18f
Successfully built e51c83d4c18f
Successfully tagged subbareddyroyal/cheers2019:latest
SECURITY WARNING: You are building a Docker image from Windows against
a non-Windows Docker host.
All files and directories added to build context will have '-rwxr-xr-x' permissions.
It is recommended to double check and reset permissions for sensitive files
and directories.

Now project build is successfully completed. Then you go to the next step to get the command to run. Look at the below snapshot.

docker run -it –rm subbareddyroyal/cheers2019

When you run the above command, you can see the screen like below and moving the docker symbol.

Now issue the below command to ship this into docker.

docker login ; docker push subbareddyroyal/cheers2019

Look at the below image to see the Pushing progress into Docker. Docker will expect you to provide the authentication details to complete the login process. Once you authenticated successfully, Docker starts the actual Push process.

I hope this is helped you to understand the basics of the Docker. Thanks for visiting my website.