Dockerfile ഉപയോഗിച്ച് ഇഷ്uടാനുസൃത ഡോക്കർ ഇമേജുകൾ എങ്ങനെ യാന്ത്രികമായി നിർമ്മിക്കുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്യാം - ഭാഗം 3


അപ്പാച്ചെ സേവനം ഇൻസ്റ്റാൾ ചെയ്ത ഉബുണ്ടു അടിസ്ഥാനമാക്കി ഒരു ഇഷ്uടാനുസൃത ഡോക്കർ ഇമേജ് എങ്ങനെ നിർമ്മിക്കാമെന്ന് ഈ ട്യൂട്ടോറിയൽ കേന്ദ്രീകരിക്കും. ഒരു ഡോക്കർഫയൽ ഉപയോഗിച്ച് മുഴുവൻ പ്രക്രിയയും ഓട്ടോമേറ്റ് ചെയ്യപ്പെടും.

ഡോക്കർഫയലുകൾ എന്ന് പേരിട്ടിരിക്കുന്ന ടെക്സ്റ്റ് ഫയലുകളിൽ നിന്ന് ഡോക്കർ ഇമേജുകൾ സ്വയമേവ നിർമ്മിക്കാനാകും. ഒരു ഡോക്കർ ഫയലിൽ ഒരു ഡോക്കർ ഇമേജ് സൃഷ്ടിക്കുന്നതിനും കോൺഫിഗർ ചെയ്യുന്നതിനും ഉപയോഗിക്കുന്ന ഘട്ടം ഘട്ടമായുള്ള നിർദ്ദേശങ്ങളോ കമാൻഡുകളോ അടങ്ങിയിരിക്കുന്നു.

  • ഡോക്കർ ഇൻസ്റ്റാൾ ചെയ്യുക, ഡോക്കർ കണ്ടെയ്നർ മാനിപുലേഷൻ പഠിക്കുക - ഭാഗം 1
  • ഡോക്കർ കണ്ടെയ്uനറുകൾക്ക് കീഴിൽ ആപ്ലിക്കേഷനുകൾ വിന്യസിക്കുകയും പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുക - ഭാഗം 2

അടിസ്ഥാനപരമായി, ഒരു ഡോക്കർ ഫയലിൽ നിങ്ങളുടെ ആവശ്യകതകളെ അടിസ്ഥാനമാക്കി ഒരു നിർദ്ദിഷ്ട കണ്ടെയ്uനർ നിർമ്മിക്കുന്നതിനും കോൺഫിഗർ ചെയ്യുന്നതിനുമുള്ള വിവിധ നിർദ്ദേശങ്ങൾ അടങ്ങിയിരിക്കുന്നു. ഇനിപ്പറയുന്ന നിർദ്ദേശങ്ങളാണ് ഏറ്റവും കൂടുതൽ ഉപയോഗിക്കുന്നത്, അവയിൽ ചിലത് നിർബന്ധമാണ്:

  1. FROM = ഒരു ഡോക്കർ ഫയലിലെ ആദ്യ നിർദ്ദേശമെന്ന നിലയിൽ നിർബന്ധമാണ്. നിങ്ങൾ പുതിയ ഇമേജ് നിർമ്മിക്കുന്ന അടിസ്ഥാന ചിത്രം പിൻവലിക്കാൻ ഡോക്കറിനോട് നിർദ്ദേശിക്കുന്നു. നിങ്ങൾ നിർമ്മിക്കുന്ന കൃത്യമായ ചിത്രം വ്യക്തമാക്കാൻ ഒരു ടാഗ് ഉപയോഗിക്കുക:

Ex: FROM ubuntu:20.04

  1. MEINTAINER = ബിൽഡ് ഇമേജിന്റെ രചയിതാവ്
  2. RUN = ഈ നിർദ്ദേശം ഒന്നിലധികം ലൈനുകളിൽ ഉപയോഗിക്കാനും ഒരു ഡോക്കർ ഇമേജ് സൃഷ്uടിച്ചതിന് ശേഷം ഏത് കമാൻഡും പ്രവർത്തിപ്പിക്കാനും കഴിയും.
  3. CMD = ഡോക്കർ ഇമേജ് ആരംഭിക്കുമ്പോൾ ഏതെങ്കിലും കമാൻഡ് പ്രവർത്തിപ്പിക്കുക. ഒരു ഡോക്കർഫയലിൽ ഒരു CMD നിർദ്ദേശം മാത്രം ഉപയോഗിക്കുക.
  4. ENTRYPOINT = CMDക്ക് സമാനമാണ് എന്നാൽ ചിത്രത്തിനുള്ള പ്രധാന കമാൻഡായി ഉപയോഗിക്കുന്നു.
  5. EXPOSE = പ്രവർത്തിക്കുമ്പോൾ നെറ്റ്uവർക്ക് പോർട്ടുകളിൽ കേൾക്കാൻ കണ്ടെയ്uനറിന് നിർദ്ദേശം നൽകുന്നു. കണ്ടെയ്നർ പോർട്ടുകൾ സ്ഥിരസ്ഥിതിയായി ഹോസ്റ്റിൽ നിന്ന് എത്തിച്ചേരാനാകില്ല.
  6. ENV = കണ്ടെയ്നർ എൻവയോൺമെന്റ് വേരിയബിളുകൾ സജ്ജമാക്കുക.
  7. ചേർക്കുക = ഉറവിടങ്ങൾ പകർത്തുക (ഫയലുകൾ, ഡയറക്ടറികൾ, അല്ലെങ്കിൽ URL-കളിൽ നിന്നുള്ള ഫയലുകൾ).

ഘട്ടം 1: ഡോക്കർഫയൽ ശേഖരം സൃഷ്ടിക്കുകയോ എഴുതുകയോ ചെയ്യുക

1. ആദ്യം, ഭാവിയിൽ മറ്റ് ഇമേജുകൾ സൃഷ്uടിക്കുന്നതിന് ഫയലുകൾ വീണ്ടും ഉപയോഗിക്കുന്നതിന് ചില തരത്തിലുള്ള ഡോക്കർഫയൽ ശേഖരണങ്ങൾ സൃഷ്uടിക്കാം. /var പാർട്ടീഷനിൽ എവിടെയെങ്കിലും ഒരു ശൂന്യമായ ഡയറക്uടറി ഉണ്ടാക്കുക, അവിടെ പുതുതായി ഡോക്കർ ഇമേജ് നിർമ്മിക്കാൻ ഉപയോഗിക്കുന്ന നിർദ്ദേശങ്ങൾ അടങ്ങിയ ഫയൽ ഞങ്ങൾ സൃഷ്ടിക്കും.

# mkdir -p /var/docker/ubuntu/apache
# touch /var/docker/ubuntu/apache/Dockerfile

2. അടുത്തതായി, ഇനിപ്പറയുന്ന നിർദ്ദേശങ്ങൾ ഉപയോഗിച്ച് ഫയൽ എഡിറ്റുചെയ്യാൻ ആരംഭിക്കുക:

# vi /var/docker/ubuntu/apache/Dockerfile

ഡോക്കർഫിൽ ഉദ്ധരണി:

FROM ubuntu
MAINTAINER  your_name  <[email >
RUN apt-get -y install apache2
RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND

ഇപ്പോൾ, നമുക്ക് ഫയൽ നിർദ്ദേശങ്ങളിലൂടെ പോകാം:

ഞങ്ങൾ ഒരു ഉബുണ്ടു ഇമേജിൽ നിന്നാണ് നിർമ്മിക്കുന്നതെന്ന് ആദ്യ വരി നമ്മോട് പറയുന്നു. ടാഗൊന്നും സമർപ്പിച്ചിട്ടില്ലെങ്കിൽ, ഉദാഹരണത്തിന് 14:10 എന്ന് പറയുക, ഡോക്കർ ഹബിൽ നിന്നുള്ള ഏറ്റവും പുതിയ ചിത്രം ഉപയോഗിക്കുന്നു.

രണ്ടാമത്തെ വരിയിൽ, ഞങ്ങൾ ഇമേജ് സ്രഷ്ടാവിന്റെ പേരും ഇമെയിലും ചേർത്തിട്ടുണ്ട്. ഇമേജ് നിർമ്മിക്കുമ്പോൾ അടുത്ത രണ്ട് RUN ലൈനുകൾ കണ്ടെയ്uനറിൽ എക്uസിക്യൂട്ട് ചെയ്യുകയും അപ്പാച്ചെ ഡെമൺ ഇൻസ്റ്റാൾ ചെയ്യുകയും ഡിഫോൾട്ട് അപ്പാച്ചെ വെബ് പേജിലേക്ക് കുറച്ച് ടെക്uസ്uറ്റ് പ്രതിധ്വനിക്കുകയും ചെയ്യും.

പോർട്ട് 80-ൽ കേൾക്കാൻ EXPOSE ലൈൻ ഡോക്കർ കണ്ടെയ്uനറോട് നിർദ്ദേശിക്കും, എന്നാൽ പോർട്ട് പുറത്ത് ലഭ്യമല്ല. കണ്ടെയ്uനർ ആരംഭിച്ചതിന് ശേഷം മുൻവശത്ത് അപ്പാച്ചെ സേവനം പ്രവർത്തിപ്പിക്കാൻ അവസാന വരി കണ്ടെയ്uനറിനോട് നിർദ്ദേശിക്കുന്നു.

3. ചുവടെയുള്ള കമാൻഡ് നൽകി ഇമേജ് സൃഷ്uടിക്കാൻ ആരംഭിക്കുക എന്നതാണ് നമ്മൾ അവസാനമായി ചെയ്യേണ്ടത്, ഇത് മുമ്പ് സൃഷ്uടിച്ച ഡോക്കർ ഫയലിനെ അടിസ്ഥാനമാക്കി പ്രാദേശികമായി ubuntu-apache എന്ന പേരിൽ ഒരു പുതിയ ഡോക്കർ ഇമേജ് സൃഷ്ടിക്കും. ഈ ഉദാഹരണം:

# docker build -t ubuntu-apache /var/docker/ubuntu/apache/

4. ഡോക്കർ ചിത്രം സൃഷ്ടിച്ച ശേഷം, നിങ്ങൾക്ക് ലഭ്യമായ എല്ലാ ചിത്രങ്ങളും ലിസ്റ്റുചെയ്യാനും ഇനിപ്പറയുന്ന കമാൻഡ് നൽകിക്കൊണ്ട് നിങ്ങളുടെ ചിത്രം തിരിച്ചറിയാനും കഴിയും:

# docker images

സ്റ്റെപ്പ് 2: കണ്ടെയ്നർ പ്രവർത്തിപ്പിച്ച് LAN-ൽ നിന്ന് Apache ആക്സസ് ചെയ്യുക

5. കണ്ടെയ്നർ തുടർച്ചയായി (പശ്ചാത്തലത്തിൽ) പ്രവർത്തിപ്പിക്കുന്നതിനും നിങ്ങളുടെ LAN-ലെ ഹോസ്റ്റിൽ നിന്നോ മറ്റ് റിമോട്ട് മെഷീനിൽ നിന്നോ കണ്ടെയ്നർ എക്സ്പോസ്ഡ് സേവനങ്ങൾ (പോർട്ടുകൾ) ആക്സസ് ചെയ്യുന്നതിനായി, നിങ്ങളുടെ ഹോസ്റ്റ് ടെർമിനൽ പ്രോംപ്റ്റിൽ താഴെയുള്ള കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

# docker run -d -p 81:80 ubuntu-apache

ഇവിടെ, -d ഓപ്ഷൻ ubuntu-apache കണ്ടെയ്uനർ പശ്ചാത്തലത്തിൽ പ്രവർത്തിപ്പിക്കുന്നു (ഒരു ഡെമൺ ആയി) കൂടാതെ -p ഓപ്ഷൻ കണ്ടെയ്uനർ പോർട്ട് 80 മാപ്പ് ചെയ്യുന്നു നിങ്ങളുടെ ലോക്കൽ ഹോസ്റ്റ് പോർട്ടിലേക്ക് 81. അപ്പാച്ചെ സേവനത്തിലേക്കുള്ള LAN-ന് പുറത്തുള്ള ആക്സസ് പോർട്ട് 81 വഴി മാത്രമേ എത്തിച്ചേരാനാകൂ.

ഹോസ്റ്റ് ഏതൊക്കെ പോർട്ടുകളാണ് കേൾക്കുന്നത് എന്നതിനെക്കുറിച്ച് നെറ്റ്സ്റ്റാറ്റ് കമാൻഡ് നിങ്ങൾക്ക് ഒരു ആശയം നൽകും.

കണ്ടെയ്uനർ ആരംഭിച്ചതിന് ശേഷം, പ്രവർത്തിക്കുന്ന കണ്ടെയ്uനറിന്റെ നില കാണുന്നതിന് നിങ്ങൾക്ക് docker ps കമാൻഡ് പ്രവർത്തിപ്പിക്കാനും കഴിയും.

6. നിങ്ങളുടെ മെഷീൻ IP വിലാസം, ലോക്കൽ ഹോസ്uറ്റ് അല്ലെങ്കിൽ പോർട്ട് 81-ലെ ഡോക്കർ നെറ്റ് ഇന്റർഫേസ് എന്നിവയ്uക്കെതിരായ curl യൂട്ടിലിറ്റി ഉപയോഗിച്ച് കമാൻഡ് ലൈനിൽ നിന്ന് നിങ്ങളുടെ ഹോസ്റ്റിൽ വെബ്uപേജ് പ്രദർശിപ്പിക്കാൻ കഴിയും. നെറ്റ്uവർക്ക് ഇന്റർഫേസ് IP വിലാസങ്ങൾ കാണിക്കാൻ IP കമാൻഡ് ലൈൻ ഉപയോഗിക്കുക.

# ip addr               [List nework interfaces]
# curl ip-address:81    [System Docker IP Address]
# curl localhost:81     [Localhost]

7. നിങ്ങളുടെ നെറ്റ്uവർക്കിൽ നിന്ന് കണ്ടെയ്uനർ വെബ്uപേജ് സന്ദർശിക്കാൻ, വിദൂര ലൊക്കേഷനിൽ ഒരു ബ്രൗസർ തുറന്ന് HTTP പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുക, കണ്ടെയ്uനർ പ്രവർത്തിക്കുന്ന മെഷീന്റെ IP വിലാസം, തുടർന്ന് ചുവടെയുള്ള ചിത്രത്തിൽ ചിത്രീകരിച്ചിരിക്കുന്നതുപോലെ പോർട്ട് 81 ഉപയോഗിക്കുക.

http://ip-address:81

8. കണ്ടെയ്uനറിനുള്ളിൽ ഏതൊക്കെ പ്രക്രിയകളാണ് പ്രവർത്തിക്കുന്നത് എന്നതിന്റെ ഉൾവശം ലഭിക്കുന്നതിന് ഇനിപ്പറയുന്ന കമാൻഡ് നൽകുക:

# docker ps
# docker top <name or ID of the container>

9. കണ്ടെയ്uനർ പ്രശ്uനം നിർത്തുന്നതിന് docker stop കമാൻഡ് തുടർന്ന് കണ്ടെയ്uനർ ഐഡി അല്ലെങ്കിൽ പേര്.

# docker stop <name or ID of the container>
# docker ps

10. കണ്ടെയ്uനറിന് ഒരു വിവരണാത്മക നാമം നൽകണമെങ്കിൽ, ചുവടെയുള്ള ഉദാഹരണത്തിൽ കാണിച്ചിരിക്കുന്നതുപോലെ --name ഓപ്ഷൻ ഉപയോഗിക്കുക:

# docker run --name my-www -d -p 81:80 ubuntu-apache
# docker ps

നിയുക്ത നാമം ഉപയോഗിച്ച് മാത്രമേ നിങ്ങൾക്ക് ഇപ്പോൾ കൃത്രിമത്വത്തിനായി കണ്ടെയ്uനറിനെ പരാമർശിക്കാൻ കഴിയൂ (ആരംഭിക്കുക, നിർത്തുക, മുകളിൽ, സ്ഥിതിവിവരക്കണക്കുകൾ മുതലായവ).

# docker stats my-www

ഘട്ടം 3: ഡോക്കർ കണ്ടെയ്uനറിനായി ഒരു സിസ്റ്റം-വൈഡ് കോൺഫിഗറേഷൻ ഫയൽ സൃഷ്uടിക്കുക

11. CentOS/RHEL-ൽ നിങ്ങൾക്ക് ഒരു systemd കോൺഫിഗറേഷൻ ഫയൽ സൃഷ്ടിക്കാനും മറ്റേതെങ്കിലും പ്രാദേശിക സേവനങ്ങൾക്കായി നിങ്ങൾ സാധാരണ ചെയ്യുന്നതുപോലെ കണ്ടെയ്uനർ നിയന്ത്രിക്കാനും കഴിയും.

ഉദാഹരണത്തിന്, ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിച്ച് apache-docker.service എന്ന പേരിൽ ഒരു പുതിയ systemd ഫയൽ സൃഷ്ടിക്കുക:

# vi /etc/systemd/system/apache-docker.service

apache-docker.service ഫയൽ ഉദ്ധരണി:

[Unit]
Description=apache container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-www
ExecStop=/usr/bin/docker stop -t 2 my-www

[Install]
WantedBy=local.target

12. നിങ്ങൾ ഫയൽ എഡിറ്റുചെയ്യുന്നത് പൂർത്തിയാക്കിയ ശേഷം, അത് അടച്ച്, മാറ്റങ്ങൾ പ്രതിഫലിപ്പിക്കുന്നതിനായി systemd ഡെമൺ വീണ്ടും ലോഡുചെയ്യുക, ഇനിപ്പറയുന്ന കമാൻഡുകൾ നൽകി കണ്ടെയ്നർ ആരംഭിക്കുക:

# systemctl daemon-reload
# systemctl start apache-docker.service
# systemctl status apache-docker.service

ഒരു ലളിതമായ ഡോക്കർഫിൽ ഉപയോഗിച്ച് നിങ്ങൾക്ക് എന്തുചെയ്യാനാകുമെന്നതിന്റെ ഒരു ലളിതമായ ഉദാഹരണം മാത്രമായിരുന്നു ഇത്, എന്നാൽ ചുരുങ്ങിയ വിഭവങ്ങളും പ്രയത്നവും ഉപയോഗിച്ച് നിമിഷങ്ങൾക്കുള്ളിൽ നിങ്ങൾക്ക് തീപിടിക്കാൻ കഴിയുന്ന ചില സങ്കീർണ്ണമായ ആപ്ലിക്കേഷനുകൾ നിങ്ങൾക്ക് മുൻകൂട്ടി നിർമ്മിക്കാൻ കഴിയും.

കൂടുതൽ വായനയ്ക്ക്: