ડોકર અને વર્ચ્યુઅલ મશીનો વચ્ચેના તફાવતોને સમજવું

ડોકર અને વર્ચ્યુઅલ મશીનો વચ્ચેના તફાવતોને સમજવું
ડોકર અને વર્ચ્યુઅલ મશીનો વચ્ચેના તફાવતોને સમજવું

ડોકર અને વર્ચ્યુઅલ મશીનોનો પરિચય

ડોકર અને વર્ચ્યુઅલ મશીનો (VMs) બંને એપ્લીકેશન જમાવવા માટેના લોકપ્રિય સાધનો છે, પરંતુ તેઓ મૂળભૂત રીતે અલગ અલગ રીતે કાર્ય કરે છે. ઘણા વિકાસકર્તાઓ પોતાની જાતને મૂંઝવણમાં મૂકે છે કે કેવી રીતે ડોકર સંપૂર્ણ ફાઇલસિસ્ટમ, આઇસોલેટેડ નેટવર્કિંગ અને અન્ય સુવિધાઓ પૂરી પાડી શકે છે જે સામાન્ય રીતે VMs સાથે સંકળાયેલા હોય છે.

આ લેખનો ઉદ્દેશ ડોકર અને પરંપરાગત વર્ચ્યુઅલ મશીનો વચ્ચેના તફાવતોને સ્પષ્ટ કરવાનો છે, તે સમજાવે છે કે શા માટે ડોકરને ઘણીવાર સોફ્ટવેર જમાવટ કરવા માટે વધુ હલકો અને સરળ માનવામાં આવે છે. અમે ઉત્પાદન વાતાવરણમાં ડોકરનો ઉપયોગ કરવાના વ્યવહારિક લાભો અને અંતર્ગત તકનીકીઓનો અભ્યાસ કરીશું.

આદેશ વર્ણન
FROM ડોકર કન્ટેનર બનાવવા માટે ઉપયોગમાં લેવાતી બેઝ ઈમેજનો ઉલ્લેખ કરે છે.
WORKDIR ડોકર કન્ટેનરની અંદર કાર્યકારી નિર્દેશિકા સેટ કરે છે.
COPY હોસ્ટ મશીનમાંથી ડોકર કન્ટેનરમાં ફાઇલો અથવા ડિરેક્ટરીઓની નકલ કરે છે.
RUN બિલ્ડ પ્રક્રિયા દરમિયાન ડોકર કન્ટેનરમાં આદેશ ચલાવે છે.
EXPOSE ડોકરને જાણ કરે છે કે કન્ટેનર રનટાઇમ સમયે ઉલ્લેખિત નેટવર્ક પોર્ટ્સ પર સાંભળે છે.
CMD જ્યારે તે શરૂ થાય ત્યારે ડોકર કન્ટેનરની અંદર ચલાવવા માટેનો આદેશ સ્પષ્ટ કરે છે.
config.vm.box વેગ્રન્ટ વર્ચ્યુઅલ મશીન માટે ઉપયોગ કરવા માટેના બેઝ બોક્સને વ્યાખ્યાયિત કરે છે.
config.vm.network નેટવર્ક સેટિંગ્સને ગોઠવે છે, જેમ કે હોસ્ટથી VM પર પોર્ટ ફોરવર્ડ કરવા.
config.vm.provision વર્ચ્યુઅલ મશીનની જોગવાઈ કેવી રીતે કરવી તે સ્પષ્ટ કરે છે, જેમ કે સેટઅપ દરમિયાન શેલ સ્ક્રિપ્ટો ચલાવવી.

ડોકરફાઇલ અને વેગ્રાન્ટફાઇલની શોધખોળ

આપેલા ઉદાહરણોમાં, અમે સૌપ્રથમ દર્શાવ્યું કે Node.js એપ્લીકેશન જમાવવા માટે Dockerfile કેવી રીતે બનાવવી. ડોકરફાઇલ આની સાથે બેઝ ઈમેજનો ઉલ્લેખ કરીને શરૂ થાય છે FROM આદેશ, આ કિસ્સામાં, સત્તાવાર Node.js રનટાઇમનો ઉપયોગ કરીને. કન્ટેનરની અંદર વર્કિંગ ડાયરેક્ટરી સેટ કરવાનું આ સાથે પ્રાપ્ત થાય છે WORKDIR આદેશ, જે ખાતરી કરે છે કે અનુગામી આદેશો ઉલ્લેખિત ડિરેક્ટરીમાં ચલાવવામાં આવે છે. આ COPY કમાન્ડનો ઉપયોગ package.json ફાઇલો અને એપ્લિકેશન કોડને કન્ટેનરમાં ટ્રાન્સફર કરવા માટે થાય છે. આ RUN આદેશ પછી કન્ટેનરની અંદર જરૂરી નિર્ભરતા સ્થાપિત કરે છે. એપ્લિકેશનનો ઉપયોગ કરીને જે પોર્ટ ચાલે છે તેને અમે એક્સપોઝ કરીએ છીએ EXPOSE આદેશ, અને અંતે, ધ CMD જ્યારે કન્ટેનર શરૂ થાય ત્યારે કમાન્ડ એપ્લીકેશન ચલાવવા માટેના આદેશને વ્યાખ્યાયિત કરે છે.

Vagrantfile ઉદાહરણ માટે, રૂપરેખાંકન આધાર બોક્સને સાથે સ્પષ્ટ કરીને શરૂ થાય છે config.vm.box આદેશ, અહીં ઉબુન્ટુ 20.04 નો ઉપયોગ કરીને. નેટવર્ક સેટિંગ્સનો ઉપયોગ કરીને ગોઠવેલ છે config.vm.network આદેશ, જે હોસ્ટ પર પોર્ટ 8080 ને ગેસ્ટ VM પર પોર્ટ 80 પર ફોરવર્ડ કરે છે, VM પર ચાલતી સેવાઓ માટે બાહ્ય ઍક્સેસની મંજૂરી આપે છે. આ config.vm.provision આદેશનો ઉપયોગ શેલ સ્ક્રિપ્ટ ચલાવવા માટે થાય છે જે પેકેજ સૂચિને અપડેટ કરે છે અને Apache2 ને ઇન્સ્ટોલ કરે છે, VM ને જરૂરી સોફ્ટવેર સાથે જોગવાઈ કરે છે. આ આદેશો ડોકર દ્વારા પૂરા પાડવામાં આવેલ કન્ટેનરાઇઝ્ડ એન્વાયર્નમેન્ટની તુલનામાં વધુ પરંપરાગત અભિગમ પ્રદાન કરીને, VM પર્યાવરણને સેટ કરવા માટેના મૂળભૂત પગલાંઓ દર્શાવે છે.

Node.js એપ્લિકેશન ડિપ્લોયમેન્ટ માટે ડોકરફાઈલ બનાવવી

આ ઉદાહરણ દર્શાવે છે કે Node.js એપ્લીકેશન માટે ડોકરફાઈલ કેવી રીતે બનાવવી, ડોકર કન્ટેનરની અંદર એપને બિલ્ડ કરવા અને ચલાવવા માટેનાં પગલાંઓ દર્શાવે છે.

# Use an official Node.js runtime as a parent image
FROM node:14

# Set the working directory inside the container
WORKDIR /usr/src/app

# Copy package.json and package-lock.json to the container
COPY package*.json ./

# Install the application dependencies inside the container
RUN npm install

# Copy the rest of the application code to the container
COPY . .

# Expose the port the app runs on
EXPOSE 8080

# Define the command to run the app
CMD ["node", "app.js"]

વેગ્રાન્ટનો ઉપયોગ કરીને વર્ચ્યુઅલ મશીન સેટ કરવું

આ ઉદાહરણ બતાવે છે કે VM પર્યાવરણને વ્યાખ્યાયિત અને રૂપરેખાંકિત કરવાની પ્રક્રિયાને દર્શાવીને, સરળ Vagrantfile સાથે Vagrant નો ઉપયોગ કરીને વર્ચ્યુઅલ મશીન કેવી રીતે સેટ કરવું.

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  # Use Ubuntu 20.04 as the base box
  config.vm.box = "ubuntu/focal64"

  # Forward port 8080 on the host to port 80 on the guest
  config.vm.network "forwarded_port", guest: 80, host: 8080

  # Provision the VM with a shell script
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get update
    sudo apt-get install -y apache2
  SHELL
end

ડોકર અને વર્ચ્યુઅલ મશીનોને સમજવું

ડોકર અને વર્ચ્યુઅલ મશીનો (VMs) વચ્ચેનો એક મુખ્ય તફાવત એ છે કે તેઓ કેવી રીતે સિસ્ટમ સંસાધનોનો ઉપયોગ કરે છે. VMs હાઇપરવાઇઝર પર ચાલે છે, જે હાર્ડવેરનું અનુકરણ કરે છે અને હોસ્ટ મશીન પર બહુવિધ ઓપરેટિંગ સિસ્ટમને એકસાથે ચલાવવા માટે પરવાનગી આપે છે. આ માટે દરેક VM ને સંપૂર્ણ ગેસ્ટ ઓપરેટિંગ સિસ્ટમ, તેની પોતાની લાઈબ્રેરીઓનો સમૂહ અને દ્વિસંગીનો સમાવેશ કરવાની જરૂર છે. આ માત્ર નોંધપાત્ર સિસ્ટમ સંસાધનોનો ઉપયોગ કરતું નથી પરંતુ જમાવટ અને જાળવણીના એકંદર કદ અને જટિલતામાં પણ વધારો કરે છે.

તેનાથી વિપરીત, ડોકર કન્ટેનરાઇઝેશન ટેકનોલોજીનો લાભ લે છે, જે બહુવિધ કન્ટેનરને સમાન ઓપરેટિંગ સિસ્ટમ કર્નલ શેર કરવાની મંજૂરી આપે છે. દરેક કન્ટેનર વપરાશકર્તા જગ્યામાં એક અલગ પ્રક્રિયા તરીકે ચાલે છે. આનો અર્થ એ છે કે કન્ટેનર VM ની તુલનામાં શરૂ કરવા માટે ખૂબ હળવા અને ઝડપી છે, કારણ કે તેમને સંપૂર્ણ OS બુટ કરવાની જરૂર નથી. ડોકર સ્તરવાળી ફાઇલસિસ્ટમ દ્વારા ફાઇલસિસ્ટમ આઇસોલેશન હાંસલ કરે છે, જ્યાં દરેક કન્ટેનર બેઝ ઇમેજની ટોચ પર તેનું પોતાનું ફાઇલસિસ્ટમ સ્તર ધરાવે છે. નેટવર્ક આઇસોલેશન નેમસ્પેસનો ઉપયોગ કરીને હેન્ડલ કરવામાં આવે છે, ડોકરને VM સાથે સંકળાયેલ ઓવરહેડ વિના દરેક કન્ટેનર માટે અલગ નેટવર્કિંગ વાતાવરણ પ્રદાન કરવાની મંજૂરી આપે છે.

ડોકર અને વર્ચ્યુઅલ મશીનો વિશે વારંવાર પૂછાતા પ્રશ્નો

  1. ડોકર અને વીએમ વચ્ચે પ્રાથમિક તફાવત શું છે?
  2. ડોકર હોસ્ટ OS કર્નલને શેર કરવા માટે કન્ટેનરાઇઝેશનનો ઉપયોગ કરે છે, તેને હળવા અને ઝડપી બનાવે છે, જ્યારે VM ને સંપૂર્ણ ગેસ્ટ OS અને હાઇપરવાઇઝરની જરૂર પડે છે.
  3. શા માટે ડોકર કન્ટેનર વધુ કાર્યક્ષમ માનવામાં આવે છે?
  4. કન્ટેનર હોસ્ટ OS કર્નલને શેર કરે છે અને ન્યૂનતમ ઓવરહેડ ધરાવે છે, જે ઝડપી સ્ટાર્ટઅપ સમય અને કાર્યક્ષમ સંસાધન ઉપયોગ માટે પરવાનગી આપે છે.
  5. ડોકર ફાઇલસિસ્ટમ આઇસોલેશન કેવી રીતે પ્રાપ્ત કરે છે?
  6. ડોકર એક સ્તરવાળી ફાઇલસિસ્ટમનો ઉપયોગ કરે છે, જ્યાં દરેક કન્ટેનરની બેઝ ઇમેજની ટોચ પર તેની પોતાની ફાઇલસિસ્ટમ સ્તર હોય છે.
  7. VM ના સંદર્ભમાં હાઇપરવાઇઝર શું છે?
  8. હાઇપરવાઇઝર એ સોફ્ટવેર છે જે હાર્ડવેરનું અનુકરણ કરે છે, જે એક જ હોસ્ટ મશીન પર બહુવિધ ઓપરેટિંગ સિસ્ટમ્સને એકસાથે ચલાવવાની મંજૂરી આપે છે.
  9. ડોકર નેટવર્કિંગ આઇસોલેશનને કેવી રીતે હેન્ડલ કરે છે?
  10. ડોકર દરેક કન્ટેનર માટે અલગ નેટવર્કિંગ વાતાવરણ પ્રદાન કરવા માટે નેમસ્પેસનો ઉપયોગ કરે છે.
  11. VM કરતાં ડોકર ઈમેજ પર સોફ્ટવેર જમાવવું શા માટે સરળ છે?
  12. ડોકર ઇમેજ વિવિધ વાતાવરણમાં સુસંગતતા સુનિશ્ચિત કરીને તમામ નિર્ભરતા અને ગોઠવણીઓને સમાવે છે.
  13. ડોકરના કેટલાક સામાન્ય ઉપયોગના કિસ્સાઓ શું છે?
  14. ડોકરનો ઉપયોગ સામાન્ય રીતે માઇક્રોસર્વિસીસ આર્કિટેક્ચર, સતત એકીકરણ/સતત જમાવટ (CI/CD) અને અલગ વિકાસ વાતાવરણ માટે થાય છે.
  15. શું ડોકર કન્ટેનર કોઈપણ OS પર ચાલી શકે છે?
  16. ડોકર કન્ટેનર કોઈપણ ઓએસ પર ચાલી શકે છે જે ડોકરને સપોર્ટ કરે છે, પરંતુ તેઓ હોસ્ટ ઓએસ કર્નલને શેર કરે છે.
  17. ડોકરમાં બેઝ ઈમેજ શું છે?
  18. બેઝ ઈમેજ એ ડોકર કન્ટેનર બનાવવાનું પ્રારંભિક બિંદુ છે, જેમાં ઘણી વખત OS અને મૂળભૂત અવલંબનનો સમાવેશ થાય છે.

ડોકર વિ વર્ચ્યુઅલ મશીનોનો સારાંશ

ડોકર અને વર્ચ્યુઅલ મશીનોની સરખામણીમાં, પ્રાથમિક તફાવત તેમના સંસાધનના ઉપયોગ અને જમાવટ કાર્યક્ષમતામાં રહેલો છે. વર્ચ્યુઅલ મશીનો સંપૂર્ણ ગેસ્ટ ઓપરેટિંગ સિસ્ટમ અને હાઇપરવાઇઝર સાથે કામ કરે છે, જે ઉચ્ચ સંસાધન વપરાશ તરફ દોરી જાય છે. તેનાથી વિપરિત, ડોકર કન્ટેનર હોસ્ટ OS કર્નલને શેર કરે છે, પરિણામે વધુ હલકો અને ચપળ ઉકેલ મળે છે. ડોકર સ્તરવાળી ફાઇલસિસ્ટમ અને નેટવર્કિંગ નેમસ્પેસ દ્વારા અલગ વાતાવરણ પ્રાપ્ત કરે છે, જે તેને સંકળાયેલ ઓવરહેડ વિના VM ને સમાન કાર્યક્ષમતા પ્રદાન કરવાની મંજૂરી આપે છે. આ ડોકર ઈમેજીસ પર સોફ્ટવેર જમાવવાનું વધુ કાર્યક્ષમ, સુસંગત અને વિવિધ ઉત્પાદન વાતાવરણમાં મેનેજ કરવા માટે સરળ બનાવે છે.

ડોકર અને વર્ચ્યુઅલ મશીનો પર અંતિમ વિચારો

નિષ્કર્ષમાં, ડોકરનો કન્ટેનરાઇઝેશનનો ઉપયોગ પરંપરાગત વર્ચ્યુઅલ મશીનો પર સંસાધનનો ઉપયોગ ઘટાડીને અને જમાવટ પ્રક્રિયાઓને સરળ બનાવીને નોંધપાત્ર ફાયદો આપે છે. હોસ્ટ OS કર્નલને શેર કરીને અને અલગ ફાઇલ સિસ્ટમ્સ અને નેટવર્કિંગનો ઉપયોગ કરીને, ડોકર આધુનિક એપ્લિકેશન જમાવટ માટે એક મજબૂત છતાં હલકો ઉકેલ પૂરો પાડે છે. આ તફાવતોને સમજવાથી વિકાસકર્તાઓને તેમની જરૂરિયાતો માટે યોગ્ય સાધન પસંદ કરવામાં મદદ મળી શકે છે, કાર્યક્ષમ અને સ્કેલેબલ એપ્લિકેશન મેનેજમેન્ટને સુનિશ્ચિત કરવામાં આવે છે.