ວິທີການສ້າງແລະ ກຳ ຫນົດຮູບແບບ Docker ທີ່ ກຳ ນົດເອງໂດຍອັດຕະໂນມັດດ້ວຍ Dockerfile - ພາກທີ 3


ບົດແນະ ນຳ ນີ້ຈະສຸມໃສ່ວິທີການສ້າງຮູບ Docker ທີ່ ກຳ ນົດເອງໂດຍອີງໃສ່ Ubuntu ກັບການຕິດຕັ້ງບໍລິການ Apache. ຂະບວນການທັງ ໝົດ ຈະຖືກອັດຕະໂນມັດໂດຍໃຊ້ Dockerfile.

ຮູບ Docker ສາມາດສ້າງໂດຍອັດຕະໂນມັດຈາກແຟ້ມຂໍ້ຄວາມ, ຊື່ວ່າ Dockerfiles. ເອກະສານ Docker ມີ ຄຳ ສັ່ງຫຼື ຄຳ ສັ່ງທີ່ມີ ຄຳ ສັ່ງເປັນຂັ້ນຕອນທີ່ໃຊ້ເພື່ອສ້າງແລະ ກຳ ຫນົດຮູບ Docker.

  • ຕິດຕັ້ງ Docker ແລະຮຽນຮູ້ການ ໝູນ ໃຊ້ກັບ Docker Container - ພາກທີ 1
  • ນຳ ໃຊ້ແລະ ດຳ ເນີນການສະ ໝັກ ພາຍໃຕ້ພາຊະນະ Docker - ສ່ວນທີ 2

ໂດຍພື້ນຖານແລ້ວ, ເອກະສານ Docker ມີ ຄຳ ແນະ ນຳ ຕ່າງໆເພື່ອສ້າງແລະ ກຳ ຫນົດພາຊະນະສະເພາະໂດຍອີງໃສ່ຄວາມຕ້ອງການຂອງທ່ານ. ຄຳ ແນະ ນຳ ຕໍ່ໄປນີ້ແມ່ນຖືກ ນຳ ໃຊ້ຫຼາຍທີ່ສຸດ, ບາງຂໍ້ແນະ ນຳ ທີ່ ຈຳ ເປັນ:

<

  • FROM = ບັງຄັບເປັນ ຄຳ ແນະ ນຳ ທຳ ອິດໃນເອກະສານ Docker. ແນະ ນຳ Docker ເພື່ອດຶງພາບພື້ນຖານຈາກທີ່ທ່ານ ກຳ ລັງສ້າງຮູບພາບ ໃໝ່. ໃຊ້ແທັກເພື່ອລະບຸຮູບພາບທີ່ທ່ານ ກຳ ລັງສ້າງຢູ່:
  • Ex: FROM ubuntu:20.04
    

    <

  • MAINTAINER = ຜູ້ຂຽນຮູບພາບການກໍ່ສ້າງ
  • RUN = ຄຳ ແນະ ນຳ ນີ້ສາມາດໃຊ້ໄດ້ຫຼາຍສາຍແລະແລ່ນ ຄຳ ສັ່ງໃດໆຫຼັງຈາກສ້າງຮູບ Docker.
  • CMD = ດຳ ເນີນການ ຄຳ ສັ່ງໃດໆເມື່ອຮູບ Docker ເລີ່ມຕົ້ນ. ໃຊ້ ຄຳ ແນະ ນຳ ດຽວຂອງ CMD ໃນ Dockerfile.
  • ENTRYPOINT = ຄືກັນກັບ CMD ແຕ່ໃຊ້ເປັນ ຄຳ ສັ່ງຫຼັກ ສຳ ລັບຮູບພາບ.
  • EXPOSE = ແນະ ນຳ ພາຊະນະບັນຈຸເພື່ອຟັງຢູ່ໃນພອດເຄືອຂ່າຍເມື່ອແລ່ນ. ບັນດາທ່າ ກຳ ປັ່ນບັນທຸກບໍ່ສາມາດເຂົ້າເຖິງໄດ້ຈາກເຈົ້າພາບໂດຍຄ່າເລີ່ມຕົ້ນ.
  • ENV = ກຳ ນົດຕົວປ່ຽນສະພາບແວດລ້ອມຂອງພາຊະນະ.
  • ADD = ສຳ ເນົາຊັບພະຍາກອນ (ແຟ້ມ, ລາຍການ, ຫຼືແຟ້ມຈາກ URL).
  • ຂັ້ນຕອນທີ 1: ການສ້າງຫລືຂຽນ Dockerfile Repository

    1. ທຳ ອິດ, ໃຫ້ສ້າງຫໍສະມຸດ Dockerfile ບາງປະເພດເພື່ອໃຊ້ແຟ້ມເອກະສານໃນອະນາຄົດເພື່ອສ້າງຮູບພາບອື່ນໆ. ສ້າງໄດເລກະທໍລີທີ່ຫວ່າງໄວ້ບ່ອນໃດບ່ອນ ໜຶ່ງ ໃນສ່ວນແບ່ງ /var ບ່ອນທີ່ພວກເຮົາຈະສ້າງແຟ້ມດ້ວຍ ຄຳ ແນະ ນຳ ທີ່ຈະໃຊ້ເພື່ອສ້າງຮູບ Docker ໃໝ່.

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

    2. ຕໍ່ໄປ, ເລີ່ມຕົ້ນແກ້ໄຂເອກະສານດ້ວຍ ຄຳ ແນະ ນຳ ຕໍ່ໄປນີ້:

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

    ບົດຄັດຫຍໍ້ຂອງ Dokerfile:

    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
    

    ດຽວນີ້, ໃຫ້ໄປຜ່ານ ຄຳ ແນະ ນຳ ໃນແຟ້ມ:

    ແຖວ ທຳ ອິດບອກພວກເຮົາວ່າພວກເຮົາ ກຳ ລັງສ້າງຈາກຮູບພາບຂອງ Ubuntu. ຖ້າບໍ່ມີປ້າຍຖືກສົ່ງ, ໃຫ້ເວົ້າວ່າ 14:10 ຕົວຢ່າງ, ຮູບພາບຫຼ້າສຸດຈາກ Docker Hub ຖືກ ນຳ ໃຊ້.

    ຢູ່ແຖວທີສອງ, ພວກເຮົາໄດ້ເພີ່ມຊື່ແລະອີເມວຂອງຜູ້ສ້າງຮູບພາບ. ສອງເສັ້ນ RUN ຕໍ່ໄປຈະຖືກປະຕິບັດຢູ່ໃນພາຊະນະໃນເວລາສ້າງຮູບພາບແລະຈະຕິດຕັ້ງ Apache daemon ແລະແອັກໂກ້ບາງຂໍ້ຄວາມລົງໃນ ໜ້າ ເວັບ apache ເລີ່ມຕົ້ນ.

    ສາຍ EXPOSE ຈະແນະ ນຳ ຕູ້ບັນຈຸ Docker ໃຫ້ຟັງທີ່ Port 80, ແຕ່ທ່າເຮືອຈະບໍ່ສາມາດໃຊ້ໄດ້ກັບພາຍນອກ. ສາຍສຸດທ້າຍແນະ ນຳ ໃຫ້ຕູ້ຄອນເທນເນີແລ່ນບໍລິການ Apache ຢູ່ທາງ ໜ້າ ຫລັງຈາກຖັງດັ່ງກ່າວເລີ່ມຕົ້ນ.

    3. ສິ່ງສຸດທ້າຍທີ່ພວກເຮົາຕ້ອງເຮັດຄືການເລີ່ມຕົ້ນການສ້າງຮູບພາບໂດຍການອອກ ຄຳ ສັ່ງຂ້າງລຸ່ມ, ເຊິ່ງມັນຈະສ້າງ Docker ຮູບພາບ ໃໝ່ ຢູ່ໃນທ້ອງຖິ່ນທີ່ມີຊື່ວ່າ ubuntu-apache ອີງໃສ່ Dockerfile ທີ່ສ້າງຂື້ນມາກ່ອນ, ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕົວຢ່າງນີ້:

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

    4. ຫຼັງຈາກຮູບພາບໄດ້ຖືກສ້າງຂື້ນໂດຍ Docker, ທ່ານສາມາດລາຍຊື່ຮູບພາບທີ່ມີຢູ່ທັງ ໝົດ ແລະລະບຸຮູບພາບຂອງທ່ານໂດຍການອອກ ຄຳ ສັ່ງດັ່ງຕໍ່ໄປນີ້:

    # docker images
    

    ຂັ້ນຕອນທີ 2: Run the Container ແລະ Access Apache ຈາກ LAN

    5. ໃນການແລ່ນຕູ້ຄອນເທນເນີຢ່າງຕໍ່ເນື່ອງ (ໃນເບື້ອງຫລັງ) ແລະເຂົ້າເຖິງບໍລິການທີ່ຖືກບັນຈຸ (ports) ຈາກໂຮດຫຼືເຄື່ອງຫ່າງໄກສອກຫຼີກອື່ນໆໃນ LAN ຂອງທ່ານ, ດຳ ເນີນການ ຄຳ ສັ່ງດ້ານລຸ່ມນີ້ໃນ ຄຳ ສັ່ງຂອງເຈົ້າພາບ:

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

    ໃນທີ່ນີ້, ຕົວເລືອກ -d ແມ່ນບັນຈຸຕູ້ຄອນເທນເນີ ubuntu-apache ຢູ່ໃນພື້ນຫລັງ (ເປັນ daemon) ແລະຕົວເລືອກ -p ມີແຜນທີ່ພອດ port 80 ໄປທີ່ port localhost ຂອງທ່ານ 81. ການເຂົ້າເຖິງການບໍລິການ Apache ພາຍນອກ LAN ສາມາດເຂົ້າເຖິງໄດ້ຜ່ານພອດ 81 ເທົ່ານັ້ນ.

    ຄໍາສັ່ງ Netstat ຈະໃຫ້ທ່ານມີຄວາມຄິດກ່ຽວກັບສິ່ງທີ່ພອດຕ່າງໆທີ່ເຈົ້າພາບກໍາລັງຟັງຢູ່.

    ຫຼັງຈາກຕູ້ຄອນເທນເນີໄດ້ເລີ່ມຕົ້ນແລ້ວ, ທ່ານຍັງສາມາດ ດຳ ເນີນການ ຄຳ ສັ່ງ ເພື່ອເບິ່ງສະຖານະຂອງຖັງແລ່ນ.

    6. ໜ້າ ເວບສາມາດສະແດງຢູ່ໃນໂຮດຂອງທ່ານຈາກເສັ້ນ ຄຳ ສັ່ງໂດຍໃຊ້ curl utility ຕໍ່ກັບ IP Address ຂອງເຄື່ອງຂອງທ່ານ, localhost, ຫຼື docker net ໃນ port 81. ໃຊ້ເສັ້ນ ຄຳ ສັ່ງ IP ເພື່ອສະແດງທີ່ຢູ່ IP ຂອງເຄືອຂ່າຍອິນເຕີເນັດ.

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

    7. ເພື່ອເຂົ້າເບິ່ງ ໜ້າ ເວບບັນຈຸຈາກເຄືອຂ່າຍຂອງທ່ານ, ເປີດໂປແກຼມທ່ອງເວັບຢູ່ສະຖານທີ່ຫ່າງໄກແລະໃຊ້ໂປໂຕຄອນ HTTP, ທີ່ຢູ່ IP ຂອງເຄື່ອງທີ່ຕູ້ຄອນເທັນເນີແລ່ນ, ຕິດຕາມດ້ວຍທີ່ Port 81 ດັ່ງທີ່ສະແດງຢູ່ໃນຮູບຂ້າງລຸ່ມນີ້.

    http://ip-address:81
    

    8. ເພື່ອໃຫ້ໄດ້ຮັບພາຍໃນຂອງຂະບວນການທີ່ກໍາລັງແລ່ນຢູ່ພາຍໃນບັນຫາບັນຈຸຄໍາສັ່ງດັ່ງຕໍ່ໄປນີ້:

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

    9. ເພື່ອຢຸດບັນຫາການບັນຈຸ docker stop ຄຳ ສັ່ງທີ່ຕິດຕາມມາດ້ວຍເລກປະ ຈຳ ຕົວຫລືຊື່.

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

    10. ໃນກໍລະນີທີ່ທ່ານຕ້ອງການ ກຳ ນົດຊື່ທີ່ອະທິບາຍ ສຳ ລັບພາຊະນະໃຫ້ໃຊ້ຕົວເລືອກ --name ດັ່ງທີ່ສະແດງຢູ່ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:

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

    ຕອນນີ້ທ່ານສາມາດອ້າງອີງໃສ່ພາຊະນະ ສຳ ລັບການ ໝູນ ໃຊ້ (ເລີ່ມຕົ້ນ, ຢຸດ, ຈຸດສູງສຸດ, ສະຖິຕິ, ແລະອື່ນໆ) ໂດຍໃຊ້ຊື່ທີ່ຖືກມອບ ໝາຍ ເທົ່ານັ້ນ.

    # docker stats my-www
    

    ຂັ້ນຕອນທີ 3: ສ້າງເອກະສານການຕັ້ງຄ່າທົ່ວລະບົບ ສຳ ລັບ Docker Container

    11. ໃນ CentOS/RHEL ທ່ານສາມາດສ້າງໄຟລ໌ການຕັ້ງຄ່າແບບເປັນລະບົບແລະຈັດການກັບພາຊະນະທີ່ທ່ານເຮັດ ສຳ ລັບບໍລິການທ້ອງຖິ່ນອື່ນໆ.

    ຍົກຕົວຢ່າງ, ສ້າງແຟ້ມລະບົບ ໃໝ່ ທີ່ມີຊື່ວ່າ, ໃຫ້ເວົ້າວ່າ, apache-docker.service ໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້:

    # 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. ຫຼັງຈາກທີ່ທ່ານແກ້ໄຂເອກະສານ ສຳ ເລັດແລ້ວ, ປິດມັນ, ໃຫ້ໂຫຼດ daemon systemd ເພື່ອສະທ້ອນການປ່ຽນແປງແລະເລີ່ມຕົ້ນບັນຈຸໂດຍອອກ ຄຳ ສັ່ງດັ່ງຕໍ່ໄປນີ້:

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

    ນີ້ແມ່ນພຽງຕົວຢ່າງທີ່ງ່າຍດາຍຂອງສິ່ງທີ່ທ່ານສາມາດເຮັດໄດ້ກັບ Dockerfile ງ່າຍໆແຕ່ທ່ານສາມາດສ້າງໂປແກຼມທີ່ໃຊ້ ໃໝ່ ໄດ້ດີທີ່ທ່ານສາມາດດັບໄຟໄດ້ໃນເວລາພຽງບໍ່ເທົ່າໃດວິນາທີໂດຍມີຊັບພະຍາກອນແລະຄວາມພະຍາຍາມທີ່ສຸດ.

    ອ່ານເພີ່ມເຕີມ: