Upload
others
View
3
Download
0
Embed Size (px)
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����