How do i create a custom docker image?

3/7/2019

I have to deploy my application software which is a linux based package (.bin) file on a VM instance. As per system requirements, it needs minimum 8vCPUs and 32GB RAM.

Now, i was wondering if it is possible to deploy this software over multiple containers that load share the CPU and RAM power in the kubernetes cluster, rather than installing the software on a single VM instance.

is it possible?

-- amey
azure
docker
kubernetes

2 Answers

3/7/2019

There are two ways to achieve what you want to do. The first one is to write a dockerfile and create the image. More information about how to write a dockerfile can be found from here. Apart for that you can create a container from a base image and install all the software and packages and export it as a image. Then you can upload to a docker image repo like Docker Registry and Amazon ECR

-- root
Source: StackOverflow

3/7/2019

Yes, it's possible to achieve that.

You can start using docker compose to build your customs docker images and then build your applications quickly.

First, I'll show you my GitHub docker-compose repo, you can inspect the folders, they are separated by applications or servers, so, one docker-compose.yml build the app, only you must run a command docker-compose up -d

if you need to create a custom image with docker you should use this docker command docker build -t <user_docker>/<image_name> <path_of_files>

<user_docker> = your docker user

<image_name> = the image name that you choose

<path_of_files> = somelocal path, if you need to build in the same folder you should use . (dot)

So, after that, you can upload this image to Dockerhub using the following commands.

You must login with your credentials

docker login

You can check your images using the following command

docker images 

Upload the image to DockerHub registry

docker push <user_docker>/<image_name>

Once the image was uploaded, you can use it in different projects, make sure to make the image lightweight and usefully

Second, I'll show a similar repo but this one has a k8s configuration into the folder called k8s. This configuration was made for Google cloud but I think you can analyze it and learn how you can start in your new project.

The Nginx service was replaced by ingress service ingress-service.yml and https certificate was added certificate.yml and issuer.yml files

If you need dockerize dbs, make sure the db is lightweight, you need to make a persistent volume using PersistentVolumeClaim (database-persistent-volume-claim.yml file) or if you use larger data onit you must use a dedicated db server or some db service in the cloud.

I hope this information will be useful to you.

-- Hugo Lesta
Source: StackOverflow