Train and Deploy Machine Learning Model inside Docker Container
Salary Prediction
Machine Learning

Machine learning is an application of artificial intelligence (AI) that provides systems the ability to automatically learn and improve from experience without being explicitly programmed. Machine learning focuses on the development of computer programs that can access data and use it to learn for themselves.
Know more…
Docker

Docker is lightweight containerization that allows us to set up an infrastructure within one second with the help of images stored in Docker. Know more here about docker.
In this article, we are going to create a simple machine learning model on top of a container our model will predict a salary based on employee experiences.
Prerequisite:
1. Linux OS
Install Python on the local system
yum install python36 -y
Configure the repository for docker:
Create a file “/etc/yum.repos.d/docker.repo”
[dockerrepo]
name=docker repo baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/
gpgcheck=0
Installing Docker :
yum install docker-ce --nobest -y
Now, let’s start creating a machine learning model on top docker container
Pull Image and run a docker container
Make sure docker is installed in your system using docker — version then start docker and check the status of docker.
Find Docker present or not
docker --version
Start Docker services
systemctl start docker
Check the status of docker services
systemctl status docker

Now, that we have docker service running on our RedHat 8 system. Now, we need to pull the centos image from dockerHub.
To pull any image use syntax
>> docker pull imageName:Tag
Here we are going to use centos latest version
>> docker pull centos:latest

So, now our centos latest version is downloaded using this we can run the container.
To Create a container needs to use the below format
docker run -it --name Cont_Name Image_Name:Tag

Install commands in the container which is required
yum install clear net-tools python36 -y

We need to install some python libraries which we are going to use in the Machine learning code.
- sklearn
- pandas
pip3 install pandas scikit-learn

Now, our base environment is ready. Now, we need to get the dataset inside the docker container. The“SalaryData.csv” file to the centos container in the root directory.
Copy local system to the container
docker cp <SOURCEFILE_PATH> <CONTAINER_NAME>:<DESTINATION_PATH>SOURCEFILE_PATH: Path to the file inside your baseOS i.e here
RHEL8CONTAINER_NAME: Path of the container name in which you want to transfer file.
Note: Container should be running.
DESTINATION_PATH: Path inside docker container where you wanted to copy the file from baseOS.
From local Linux run below command
docker cp SalaryData.csv 406102f68806:/

Here, we can see dataset is copied to the container directory

The SalaryData.csv is successfully copied.
Salary prediction model
main.py file for creating a model
vi main.py

Creating a Prediction model using the below code
Now, let us check whether it is working well or not. Run the file using the command python3 main.py
python3 main.py

Successfully model is created and saved to salary_model.pkl
Create a code for the prediction of salary
vi predictSal.py

Now, we have a model created. Now, if we want to predict the salary for the experience. Create a file predictSal.py and add below code
Now, we can run this script. It will first load the model and predict the salary based on the years of experience we provided.
python3 predictSal.py

Now, we have successfully created a Model and done prediction inside a docker container.