DOCKER - Department of Computer ScienceคําสัAง cd .. คือ...

Preview:

Citation preview

DOCKER

จดทาโดย

นางสาวกชามาศ ชอบเสยง 583020373-3

นายจรวฒน คาศร 583020384-8

นายณฐพล ภฐาน 583020392-9

นางสาวธาราทพย สมศร 583021136-2

นายภวศ ชนะพาล 583021143-5

นางสาวอดมพร สรนนทเกต 583021157-4

Group 15 Sec.1

เสนอ รศ.ดร จกรชย โสอนทร

รายวชา 322222 Network I สาขาเทคโนโลยสารสนเทศและการสAอสาร ภาควชาวทยาการคอมพวเตอร

คณะวทยาศาสตร มหาวทยาลยขอนแกน

คานา

รายงานเลมนD เปนสวนหนAงของรายวชา Network I ของนกศกษาสาขาเทคโนโลย

สารสนเทศและการสAอสารชDนปทA 2 จดทาขDนเพAอศกษาการทางาน และคณสมบตตางๆของ

Docker และเปนการแนะนา Tool ทAชวยในการทางานใหสะดวกและงายขDน แกผทAศกษาและ

หวงวาจะเปนประโยชนแกผทAศกษา และถาหากมขอผดพลาด ณ โอกาสนDดวย

คณะผจดทา วนทA 1 พฤษภาคม 2560

สารบญ

เร�อง หนา

หลกการและเหตผล �

วตถประสงค �

ทฤษฏท�เก�ยวของ �

ความสามารถของโปรแกรมท�ทาได /

ขอดของโปรแกรม /

ขอเสยของโปรแกรม /

ความแตกตางระหวาง Virtual Machine กบ Container >

วธการตดตAง B - D

ขAนตอนการใชงาน G – �I

สราง apache sql และ php 17

สรป 22

ภาคผนวก 23

อางอง 25

1

หลกการและเหตผล ในการจาลองสภาพแวดลอมขDนมาในเครAองสาหรบรน Service เพAอทAจะศกษาและทาการวเคราะหหาแนวทางการแกไขและพฒนาระบบตางๆ หรอจะเปนการปรบปรงระยะเวลาในการดาเนนงาน แนวทางในการจดสรรทรพยากรเพAอใหเกดประโยชนสงสด Docker เปน Tool ตวหนAงทAทาใหเราสามารถหอระบบของเราแลวเอาไปรนทAไหนกได ทAม Docker ตดตDงไว โดยเปนการสราง Container เพAอจาลองสภาพแวดลอมการทางานสาหรบ Service 1 ตว Docker ไมตองงอ OS ใหม ดงนDนจงไมตองเสยเวลาตดตDง ไมตองเสยเวลา config ทAสาคญใชพDนทAในการจดเกบขอมลนอยกวามาก เพราะไมตองสDนเปลองทรพยากรในการรน OS ใหมขDนมาทDงตว วตถประสงค

\. เพAอศกษาการทางาน และคณสมบตตางๆของ Docker 2. เพAอเปนการแนะนา Tool ทAชวยในการทางานใหสะดวกและงายขDน

ทฤษฎท�เก�ยวของ

Virtual Machine คอซอฟตแวรทAใชทรพยากรของเครAองคอมพวเตอรไมวาจะเปน RAM, Hard disk, CPU ในการจาลองเครAองคอมพวเตอรเสมอน ซA งจะเรยกเครAองทAถกใชทรพยากรวา Host และเรยกเครAองเสมอนวา Guest โดยในเครAอง Guest สามารถตดตDงและใชงานระบบปฏบตการไดเสมอนกบเปนซอฟตแวรหนAงของเครAองคอมพวเตอร และยงสามารถสราง Guest ไดมากกวา \ Guest ในเครAอง Host เดยวกน

2

ความสามารถของโปรแกรมท�ทาได • การสราง Container เพAอจาลองสภาพแวดลอมการทางานสาหรบ Service 1 ตว • สามารถตดตDงแอปไดหลายเวอรชนในเครAองเดยว • สามารถในการควบคมใหเครAอง Development และ Production ม Environment เหมอนกนทก

ประการ

ขอดของโปรแกรม 1. เรว – ถาใครทAใช VM มากอน จะพบวามนเปนอะไรทA ชาและเสยเวลามาก ๆ กวาจะโหลดขDน แต

Docker นAนเรวมาก ๆ เพราะวา มนใช OS, CPU และ Memory รวมกนกบ Host OS ทาใหมนเบาหววเลย ตางกบ VM ทAใชทกอยางแยกกนหมด และการจาลองทDง OS กทาใหมบางอยางทAเราไมไดใช แตกตองรน ทาใหเราเสยทรพยากรไปฟร ๆ

p.มระบบ Registry – ระบบนDจะชวยใหเราสามารถตดตDงโปรแกรมหรอ Environment ทAเราตองการไดเรวขDน เพราะวามนมคนทาไวใหเราแลว โดยเราแคเพยงโหลด Image ตวนDนมา และตดตDง กสามารถใช Environment นDนไดเลย ซA งทาง Docker กจะมสAงทAเรยกวา Docker Hub อย โดยเราสามารถ Push ตว Image ทAเราสรางไวขDนไป หรอเราจะไป Pull Image ทAคนอAนสรางไวมาใชกได และตอนนDใน Docker Hub กม Image มากมายทDง Official และทAทาเองใหเราเลอกใชไดมากมาย

r.สะดวก – บางคนอาจจะจาเปนตองใช Environment ทAมโปรแกรมเยอะมาก ๆ หรอตดตDงโปรแกรมทAทายาก ๆ เชน อยากได Elasticsearch เปนคน เมAอกอน เรากตองสราง VM ขDนมาและคอยตดตDง Elasticsearch ซA งกนเวลามาก แตดวย Image สาเรจรปทาใหเราสามารถตดตDง โปรแกรม หรอตDงคา Environment ทAเราตองการไดภายในเวลาไมกAวนาท และเพยงแคไมกAคาสAงเทานDน

ขอเสยของโปรแกรม

\.Docker ถกสรางมาโดยองกบ Kernel ของ Linux ทาใหมนไมสามารถทางานบน Windows และ Mac OS X หากใชงานบนอะไรทAไมใช Linux จะตองสราง Docker Machine กอน และถาอยบน Windows การทางานจะมประสทธภาพจะไมเทากบบน Linux

3

ความแตกตางระหวาง Virtual Machine กบ Container

• Container จะเปนการเพAอจาลองและควบคมสภาพแวดลอมสาหรบการรนเฉพาะบาง Service และรน service เทาทAจาเปนตองใชเทานDน ทาใหใชทรพยากรนอยกวา Virtual Machine

• Virtual Machine จะเปนการจาลอง Environment มาทDง OS รนขDนมาเปนเครAอง Server 1 เครAอง และมการรน service หลายๆ service ใน VM เดยวกน ทาใหแตละ VM ตองใชทรพยากรจานวนมาก

4

วธการตดตA ง (Windows Server 2016)

• ทาการตดตD ง OneGet PowerShell Module (ใหรนบน PowerShell ทA Run As Administrator)

• เมAอขD นถามวาจะตดตD งหรอไม .ใหกด Y ตามดวย Enter

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

• จากนDนใช OneGet ในการตดตDง Docker Version ลาสด • เมAอขDนถามวาจะตดตDงหรอไม กด A ตามดวย Enter

Install-Package -Name docker -ProviderName DockerMsftProvider

• จากนDนทาการ Restart เครAอง

• หลงจาก Restart มาจะเหนวาสามารถใชคาสAง Docker บน Powershell ไดแลวดงนD

5

หมายเหต : ในกรณทAรนแลว error เกAยวกบ open //./pipe/docker_engine ใหเปด firewall port 2375 ผาน powershell ทAรนดวย administrator ดงนD

# Open firewall port 2375 netsh advfirewall firewall add rule name="docker engine" dir=in action=allow protocol=TCP localport=2375 # Configure Docker daemon to listen on both pipe and TCP (replaces docker --register-service invocation above) Stop-Service docker dockerd --unregister-service dockerd -H npipe:// -H 0.0.0.0:2375 --register-service Start-Service docker

6

ขAนตอนการใชงาน DOCKER

คาสAง docker run ubuntu คอ run images ubuntu จาก docker hub

คาสAง docker images เพAอแสดงขอมล images ขDนมาด

คาสAง docker ps –a คอ แสดง process ทAทางานอยท Dงหมด

7

docker run –it ubuntu bash คอ run เขาไปใน Ubuntu

คาสAง ls คอ คาสAงแสดงไฟลทDงหมดทAอยใน root@7ea9e169eada

8

คาสAง cd คอเขาไปในทางไฟลนDน ๆ >> cd bin คอ เขาไปในไฟล bin และคาสAง ls แสดงไฟลทDงหมดใน bin

คาสAง cd .. คอ ออกจากไฟลนDนๆ

9

คาสAง cd usr/ คอ เขาไปในไฟลงานชAอ usr

คาสAง mkdir คอสรางไฟลงานขDนมา >> mkdir test สรางไฟลงานชAอ test

10

คาสAง cd test เขาไปในไฟล test และ คาสAง date คอแสดงวนทA เวลา ณ ตอนนD

คาสAง exit คอ ออกจากไฟลงานตางๆ

11

คาสAง docker logs และตอดวยชAอ container id คอ จะแสดงการทางานเมAอกD ทAเราทาไวในไฟลงาน test

12

เขา Kitematic และมนจะแสดง containers ทAเราสรางใน docker CLI และแสดงผลการทางานเมAอคร

ถาเราจะรนอะไรขDนเวบ แคเรานาไฟลไปใสใน /website_files รปตวอยางเคยใช 2048 กเลยขDนมาดงภาพ แต

ในเวบจะไมขDนเพราะไมพบไฟลนDนๆ

13

ขAนตอนการใชงาน wordpress ตวอยาง จะทาให wordpress ลDงคกบ mysql ทาเวบตวเองขDนมา

ใชคาสAง docker pull mysql จาก docker hub เพAอดง mysql มาทางาน

ใชคาสAง docker run --name wwsql -e MYSQL_ROOT_PASSWORD=1234 -d mysql:latest เพAอรน sql

และกาหนดชAอ sql และ รหสผาน mysql:latest คอการกาหนดเวอรชDน แตคาวา latest คอเวอรชAนลาสด

14

ใชคาสAง docker pull wordpress คอดง images wordpress จาก docker hub มาเพAอใชงาน

15

คาสAง docker run --name wlocal --link wwsql:mysql -p 8080:80 -d wordpress คอรน wordpress ใน mysql

ทAเราสรางเมAอกD ทA port 8080:80

16

คาสAง docker port 786d294d3520 เพAอตรวจด port ของ local

และลองทดสอบในการรนบน browser >> IP docker 192.168.99.100:8080 จะขDนหนา wordpress แลวสราง

เวบไดแลว

17

แกไขเพ�มเตม

สราง apache sql และ php

สรางไฟลชAอ Dockerfile apache-config.conf

Dockerfile

18

apache-config.conf

index.php

19

สราง container โดยใชคาสAง docker build -t mysite .

20

รอสกพกจนเสรจ จนได mysite:latest

จง running ใชคาสAง docker run -p 8080:80 -d mysite เพAอสAงรนทA port 8080:80

ทดสอบเขา IP Docker 192.168.99.100 ตามดวย port ทAกาหนด

21

22

คอ เครAองเราทAอยขางนอกสด และดานในจะมเครAองทAเปน Linux เพAอไวใชรน Docker (เนAองจาก

เครAองทAใชเปน Windows เลยตองม VM ทAเปน Linux ครอบอกรอบ หรอใช DockerToolbox) และใน VM

เรารนอย 2 Container นAนคอ PHP+Apache และ MySQL โดยเราใหทDง 2 Container นD เชAอมตอกนเอง โดยทA

ไมผานเครAองเรา และทาการ Map Port ระหวางเครAองเรากบ VM ขางในดวยเชนกน นAนคอขางนอกเรยกเขา

ไปเปน 3000 แตพอเขามาขางใน ตว Linux มนจะแปลงเปน Port 80 เพAอไปเรยก Web Server ใหเราโดย

อตโนมต

สรป Docker เปน Tool ทAทาใหเราทางานไดงายขDนมาก ๆ มนชวยเราตดปญหาหลาย ๆ อยางออกไปเยอะ

มาก ๆ เชน Environment ของเครAอง Dev กบเครAอง Production ทAไมตรงกน หรอแมกระทAง เครAองทAใช Dev ดวยกนเองทAไมตรงกน และมนยงชวยใหเราจดการ Environment ทAเราใชทางานไดงายขDนดวยนะ เชน การทาเวบอย 2 ตว ตวนงตองใช php 5 รน สวนอกงานตองใช php 7 กแคสราง Container ขDนมา 2 ตว แลวพอจะใชเวอรชAนไหนกรนเวอรชAนนDนขDนมาใชได หรอจะเปนในเรAองของการ Test กได เราถาสามารถเอาเวบทAรน php 7 มาเชคกบ php5 กไดวา ถาเราเอามารนแลวจะมปญหาอะไรไหม? อะไรแบบนDกไดเชนกน นอกจากนDมนยงชวยใหเราตดตDงโปรแกรมบางอยางไดงายขDนมาก เพราะมนทาตดตDงอะไรใหเราครบ สาเรจเลย และตอนนD Docker คงเปน Tool ทAควรจะตองรจกทกคนแลว เพราะวามนเปนอะไรทAมาแรงมาก ๆ ทAชวยอานวยความสะดวกสบาย

192.168.99.100:808

23

ภาคผนวก

24

โปรแกรมท�ใชศกษา

25

อางอง

https://www.jaynarol.com/understand-docker/

https://www.arnondora.in.th/docker-tip-lamp-stack-docker/

http://thaiopensource.org/มาเลน-docker-กน/

https://nasmees.wordpress.com/p�\�/��/\�/begin-docker/

https://kittinanx.blogspot.com/2015/06/dockerfile.html

https://medium.com/@meeramarygeorge/create-php-mysql-apache-development-environment-using-

docker-in-windows-�beeba����

Recommended