for our solution we have to install several tools (e.g. SQL Server) on a Windows Server 2016/2019 System. Some of the systems do not have a unrestricted internet access. I want to do the following:
Create a Docker Image locally.
Take this Docker Image and put into our installation package.
Running the installation package (1.) checks if a Docker Engine is installed and (2.) puts the Docker Image into the Docker Engine.
Is this possible?
Or is the following approach better:
Into the installation package I put my Docker File and the required files.
Our installation package runs a script or something that invokes “Docker Run”.
The Docker Image is created the first time at the customer.
Hi paalders,
thanks for yor help.
That sounds interesting. If I understand that correctly, we should create our own local repository on each customer machine, push our docker image into that newly created local repository.
If a container has to be started, the Docker Engine is loading the Image from the local repository instead the public one.
And how can I transport the Docker Image? Or is it necessary, that the DockerFile has to be delivered to the customer?
Thanks,
Christian
Are the Windows servers all in the same network? If not, I understand that you don’t have options for unrestricted internet. But what about a VPN?
Do you only use Docker for initial installation of software modules or also for updating?
I wouldn’t deploy an image repository on each of the Windows nodes. If the servers are sharing a local network I would have 1 image repo in that internal network where you are able to push to from a location (developer’s workstation, build environment, etc.). From that same central, but local, location you’d be able to pull images from your Windows nodes.
To answer your question: Yes, you can put a Docker image on a DVD. Just docker save the image, burn it to the DVD and then docker load the image on each computer.
For example: save it with
docker save <image_name> | gzip > <image_name>.tgz
Burn the .tgz file to the DVD. Then to load it on another computer use:
docker load < <image_name>.tgz
That will load the image so that you can run it with docker run
Hi paalders,
thanks for your help.
Some of our customers are banks or from the public sector.
At the moment only one component will run in a Docker container. The primary component is running as a Windows Service.
The Docker container certainly must be updated. My idea was, if we need to give the customers a new Docker image that contains some new features or bug fixes, he will get a new *.TAR file, load this into the Docker engine, starts the system and the a new Docker container is created that is based on the new Docker image.
What do you think about that?
Thanks,
Christian