Lanka Developers Community

    Lanka Developers

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Shop

    Docker ගැන සිංහලෙන් - part 01

    Back-End Development
    docker backend deployment
    9
    12
    1058
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • isuru mahesh perera
      isuru mahesh perera last edited by isuru mahesh perera

      docker,
      docker කියන්නේ , ඔයාගේ entire software එක package කරලා easily deploy කරන්න පුළුවන් solution එකක්.

      අපි locally development කරද්දී හොදට වැඩ කරන app එක, server එකට දැම්මට පස්සේ ඒක වැඩ කරන්නේ නැතිව යනවා. එතොකොට එක fix කරන්න අපිට ටිකක් වෙලා යනවා. එකට ගොඩක් හේතුව වෙන්නේ, අපෙ local environment එකයි server environment එකයි වෙනස් නිසා.

      හැබැයි අපිට පුළුවන් docker use කරලා මේ problem එක solve කරන්න. එකට හේතුව locally docker ඇතුලේ app එක වැඩ කරනවනම්, docker run වෙන ඕන server එකක අපේ app එක වැඩ.

      how docker works,
      docker කියන්නේ containerization platform එකක්.
      containerization එක්ක ලගින්ම යන අනිත් එක තමා virtualization කියන්නේ. අපි බලමු මොකක්ද මේ දෙකේ වෙනස කියල.

      alt text

      virtualization (2nd image ) කියන්නේ සරලව, host os එක උඩ hypervisor software එකක් run කරලා, එක uda virutal machines හදාගන්න එක.
      එතොකොට ඒ හැම virtual machine ekak ඇතුලේම entire os එකක් run වෙනවා.
      ex - virtual box කියන්නේ open source hyperviosr එකක්. අපිට windows os එකක් උඩ linux install කරන්න පුලූවන් dual boot කරන්නේ නැතුව.

      එතකොට docker engine එක වැඩ කරන්නේ ?,
      අපේ host os එක උඩ docker engine එක run කරනවා, ඊට පස්සේ docker වලට පුළුවන් isolated process හදන්න්න. මේ අපි හදන එක process එකකට කියනවා container එකක් කියල. ඇත්තටම container එකක තියෙන්නේ මොකක් හරි එක process එකක්. ex: apache server, mysql server..
      එක lightweight, අනිත් process එක්ක isolated, ඒ වගේම host OS එකේ kernel එක තමා මෙ හැම container එකක්ම share කරගන්නේ.

      ඒ වගේම virtual machine එකකට වඩා fast. එකට හේතුව virtual machine එකක් restart කරනවා කියන්නේ entire OS එකම restart වෙනවා කියන එක. හැබැයි container එකක් restart වෙනව කියන්නේ, දැනටමත් run වෙන host OS එකේ process එකක් restart වෙනවා කියන එක විතරයි.

      basic terms of docker

      container - isolated process එකක් (මොකක් හරි එක task එකක් , etc mysql server, nginx server )

      image - container එකක් run කරන්න ඕන application library, system tools, configuration files වල එකතුවක්. ඒවගේම අපිට මේ එක image එකකින් multiple containers හදාගන්න පුළුවන්.

      dockerfile - docker image එකක් create කරන්න ඕන instructions තමා අපි මේකේ ලියන්නේ. ex - environment variables, port mapping, මොන toolsද install වෙන්න ඕන කියල මේ file එකේ ලියන්න පුළුවන්.

      docker registry - docker image එක store කරන්න පුළුවන් place එකක්.
      ex: අපි git එක්ක github වගේ remote reporsitory එකක් තියාගන්නවා වගේ වැඩක්.

      • docker hub - මේක docker ලගේ official images store කරන්න තියන registry එකක්. free වගේම paid version එකක් තියනව.
      • aws ecr - aws lage paid solution එකක් docker images store කරන්න තියෙන
        .

      හරි දැන් අපි docker වලින් container එකක් හදල බලමු,

      මුලින් ඔය docker install කරගන්න ඔයාගේ os එක අනුව.
      https://docs.docker.com/get-docker/

      check docker installed, then it will show the help menu

      docker
      

      pull mysql docker image from docker hub

      docker pull mysql:5.7
      

      view downloaded docker images

      docker images
      REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
      mysql                                                             5.7                 a4fdfd462add        5 days ago          448MB
      

      create a docker container from docker image

      docker run --name my_db -p 9000:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7
      

      --name used for container name (අපිට කැමති නමක් දෙන්න පුළුවන් )
      -e used for environment variables
      -i or -d used for running mode,
      container එකක් run වෙන විදී දෙකක් තියනව.

      • -i ඔයාට container එකේ input outputs shell එකෙන් බලාගන්න පුළුවන්. ඔය ඒ shell එක close කරෝතින් container එක stop වෙනවා
      • -d container එක run වෙන්නේ background process එකක් විදිහට.

      -p used for port mapping,
      අපි මුලින් කිවා container එකක් කියන්නේ process එකක් කියල, එකියන්නේ සරලව container එක මොකක්හරි port එකක run වෙනව කියන එකයි . mysql ගත්තොත් එයා default port number 3306 එකේ run වෙනවා.

      එකියන්නේ container eka athule අපේ mysql server එක port 3306 run wenawa. හැබැයි අපිට තාම අපේ host OS එකේ idan container එකට connect wenna බැහැ. මොකද host os එක මේ process eka ගැන දන්නේ නැති නිසා.

      එනිසා අපිට සිද්ද වෙනවා container port එක ape host OS එකේ port එකකට map කරන්න. මං මේකේ 3306 කියන container eke run වෙන port එක 9000 kiyana host OS එකේ port එකකට map karala තියෙන්නේ.

      check running containers

      docker ps
      CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
      3788c9366954        mysql:5.7           "docker-entrypoint.s…"   2 minutes ago       Up About a minute   33060/tcp, 0.0.0.0:9000->3306/tcp   my_db
      
      

      now you can connect to the running container

      mysql -h 127.0.0.1 -P 9000 -uroot -p123
      
      mysql: [Warning] Using a password on the command line interface can be insecure.
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 12
      Server version: 5.7.30 MySQL Community Server (GPL)
      
      Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
      
      Oracle is a registered trademark of Oracle Corporation and/or its
      affiliates. Other names may be trademarks of their respective
      owners.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      mysql> 
      
      

      to stop running container,

      docker ps # list running containers
      CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
      d3d87881b0ce        mysql:5.7           "docker-entrypoint.s…"   About an hour ago   Up About an hour    33060/tcp, 0.0.0.0:9000->3306/tcp   my_db
      
      docker stop d3d87881b0ce # cotaniner id
      
      

      get all containers (running or stopped)

      docker ps -a
      CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                      PORTS                                                                              NAMES
      3788c9366954        mysql:5.7                    "docker-entrypoint.s…"   5 minutes ago       Up 11 seconds               33060/tcp, 0.0.0.0:9000->3306/tcp                                                  my_db
      c9142a5d1251        char:latest                  "/bin/bash ./run.sh"     8 days ago          Exited (1) 8 days ago                                                                                          pensive_shtern
      8266e6f237e2        5c8c4e171da6                 "/bin/bash ./run.sh"     8 days ago          Exited (1) 8 days ago       
      

      මේක docker වල basic overview එකක් විතරයි. තව ගොඩක් concepts තියනවා ඉගෙන ගන්න. මං ඒවත් ඉස්සරහට දාන්නම්.

      1 Reply Last reply Reply Quote 6
      • oditha
        oditha Web Development last edited by

        Elakiri bro

        isuru mahesh perera 1 Reply Last reply Reply Quote 0
        • root
          root Linux Help last edited by

          Niyamai bro. digatama continue karamu

          isuru mahesh perera 1 Reply Last reply Reply Quote 0
          • isuru mahesh perera
            isuru mahesh perera @oditha last edited by

            @oditha thanks bro

            1 Reply Last reply Reply Quote 0
            • isuru mahesh perera
              isuru mahesh perera @root last edited by

              @root thanks bro

              1 Reply Last reply Reply Quote 0
              • imadusanka
                imadusanka last edited by

                Niyamai ❤️💪

                1 Reply Last reply Reply Quote 0
                • Nubelle
                  Nubelle Web Development last edited by

                  patta bro

                  1 Reply Last reply Reply Quote 0
                  • Thilina jayakody
                    Thilina jayakody last edited by

                    ඒක නම් ගොඩක් වැදගත්. මේක ගැන තව ලියන්න පුලුවන්නම් නියමයි.

                    isuru mahesh perera 1 Reply Last reply Reply Quote 1
                    • isuru mahesh perera
                      isuru mahesh perera @Thilina jayakody last edited by

                      @Thilina-jayakody thanx bro

                      1 Reply Last reply Reply Quote 0
                      • Danuva
                        Danuva last edited by

                        digatama damu <3

                        1 Reply Last reply Reply Quote 0
                        • ciaompe
                          ciaompe last edited by

                          part 2 ekath ikmanata danna bro.

                          1 Reply Last reply Reply Quote 0
                          • rashmiee
                            rashmiee last edited by

                            Thank you.. superb! so much helpful <3

                            1 Reply Last reply Reply Quote 0
                            • 1 / 1
                            • First post
                              Last post

                            1
                            Online

                            3.7k
                            Users

                            1.3k
                            Topics

                            5.3k
                            Posts

                            • Privacy
                            • Terms & Conditions
                            • Donate

                            © Copyrights and All right reserved Lanka Developers Community

                            Powered by Axis Technologies (PVT) Ltd

                            Made with in Sri Lanka

                            | |