Docker - Container and Image
Docker Container
Docker container ជាដំណើរការ instance នៃ image។ អ្នកអាចប្រើ command line interface(CLI) ដើម្បីបញ្ជាឲ្យដំណើរការ, ចាប់ផ្តើម, បញ្ឈប់, ផ្លាស់ទី, ឬលុប container។ អ្នកក៏អាចកំណត់នូវរចនាសម្ព័ន្ធសម្រាប់ network និង environment variables ផងដែរ។ Docker container មានលក្ខណៈដាច់ដោយឡែកនិងជាកម្មវិធីដែលមានសុវត្ថិភាព ប៉ុន្តែវាអាចចែករំលែកនិងអាចចូលទៅកាន់ប្រភពដែលកំពុងត្រូវបានដំណើរការនៅក្នង host ឬ container ផ្សេងគ្នា។
Docker Image
Image ជា read-only template with instructions ដែលប្រើសម្រាប់បង្កើតនូវ Docker container។ វាត្រូវបានពិពណ៌នានៅក្នុងឯកសារអត្ថបទមួយហៅថា Dockerfile ដែលមានលក្ខណៈសាមញ្ញហើយនិងបានកំណត់នូវ syntax បានយ៉ាងល្អ។
ឧទាហរណ៍
អ្នកអាចយល់ពី container និង image ដោយមានជំនួយពីពាក្យបញ្ជាខាងក្រោម៖
$ docker run hello-world
ពាក្យបញ្ជាខាងលើ docker ដំណើរការ hello-world មានបីផ្នែក៖
- docker: វាជា
docker engineហើយវាប្រើសម្រាប់ដំណើរការនូវកម្មវិធីdocker។ ហើយពេលប្រើវា វានឹងប្រាប់ទៅប្រព័ន្ធប្រតិបត្តិការថាអ្នកកំពុងតែដំណើរការកម្មវិធីdocker។ - run: ពាក្យបញ្ជារងមួយនេះប្រើសម្រាប់បង្កើតនិងដំណើរការ
docker container។ - hello-world: វាជាឈ្មោះរបស់
image។ អ្នកគួរតែបញ្ជាក់ពីឈ្មោះរបស់imageដើម្បីអាចផ្ទុកក្នុងcontainer។
ពាក្យបញ្ជាពិសេសៗដែលត្រូវប្រើជាប្រចាំថ្ងៃ
ទាញយក Image:
$ docker pull nginx- ប្រើសម្រាប់ទាញយក
imageចេញពីdocker hubហើយnginxជាឈ្មោះរបស់image។
- ប្រើសម្រាប់ទាញយក
បង្ហាញនៅ Image:
$ docker images ឬ $ docker image ls- ប្រើសម្រាប់បង្ហាញនូវ
imagesទាំងអស់ដែលមាននៅក្នុងម៉ាស៊ីន។
- ប្រើសម្រាប់បង្ហាញនូវ
ដំណើរការ Container:
$ docker run nginx:latest- ប្រើសម្រាប់ដំណើរការ
containerរបស់imageដែលnginxគឺជាឈ្មោះរបស់imageរីឯlatestដែលនៅជាប់នោះគឺversionរបស់imageហើយត្រូវភ្ជាប់វាជាមួយនឹងសញ្ញាcolon(:)នៅពីមុខversionផង។
$ docker run -d nginx:latest- ប្រើសម្រាប់ដំណើរការ
containerដូចនឹងdocker run nginx:latestដែរ តែពាក្យបញ្ជានេះគឺប្រតិបត្តិលក្ខណៈជាdetached modeពោលគឺដំណើរការcontainerហើយគឺអ្នកអាចប្រើប្រាស់consoleដែលអ្នកកំពុងដំណើរការcontainerបានធម្មតា តែបើប្រើពាក្យបញ្ជា ខាងលើដំបូងនោះវិញគឺមិនអាចប្រើប្រាស់consoleបាននោះទេ។
- ប្រើសម្រាប់ដំណើរការ
បង្ហាញនៅ Container:
$ docker container ls ឬ $ docker ps- ប្រើសម្រាប់បង្ហាញនូវ
containerទាំងអស់ដែលកំពុងត្រូវបានដំណើរការ។
$ docker ps -a- ប្រើសម្រាប់បង្ហាញនៅរាល់
containerទាំងអស់ មិនថាcontainerមួយនោះកំពុងត្រូវបានដំណើរការឬក៏បញ្ឈប់ក្តី។
$ docker ps -q- ប្រើសម្រាប់បង្ហាញតែ
IDរបស់containerដែលកំពុងត្រូវបានដំណើរការ។
$ docker ps -aq ឬ $ docker ps -a -q- ប្រើសម្រាប់បង្ហាញតែ
IDរបស់containerទាំងcontainerដែលកំពុងត្រូវបានដំណើរការនិងមិនកំពុងត្រូវបានដំណើរការ។
$ docker ps --format="ID\t{{.ID}}\nNAME\t{{.Names}}\nImage\t{{.Image}}\nPORTS\t{{.Ports}}\nCOMMAND\t{{.Command}}\nCREATED\t{{.CreatedAt}}\nSTATUS\t{{.Status}}\n"- ប្រើសម្រាប់បង្ហាញនូវ
containersទាំងអស់ដែលកំពុងត្រូវបានrunក្នុងលក្ខណៈformatងាយស្រួលក្នុងការមើល។
export FORMAT="ID\t{{.ID}}\nNAME\t{{.Names}}\nImage\t{{.Image}}\nPORTS\t{{.Ports}}\nCOMMAND\t{{.Command}}\nCREATED\t{{.CreatedAt}}\nSTATUS\t{{.Status}}\n"- ប្រើសម្រាប់
export path variableនៅក្នុងម៉ាស៊ីនដើម្បីងាយស្រួលហៅប្រើលើកក្រោយដោយមិនចាំបាច់សរសេរច្រើនបន្ថែមទៀត។
$ docker ps --format=$FORMAT- ប្រើសម្រាប់បង្ហាញ
containerដែលមានលក្ខណៈformatដោយហៅពីpath variableមក។
- ប្រើសម្រាប់បង្ហាញនូវ
បញ្ឈប់ Container:
$ docker stop 19411e21c4fa- ប្រើសម្រាប់បញ្ឈប់
containerហើយ19411e21c4faគឺជាលេខIDរបស់container។
$ docker stop boring_merkle- ប្រើសម្រាប់បញ្ឈប់
containerដូចទៅនឹងពាក្យបញ្ជាខាងលើដែរតែពាក្យបញ្ជា(docker stop 19411e21c4fa)ខាងលើគឺប្រើIDរបស់containerតែ ពាក្យបញ្ជានេះវិញគឺប្រើឈ្មោះរបស់containerវិញ តែយ៉ាងណាមិញអ្នកចង់ប្រើជម្រើសមួយណាក៏បាន។
- ប្រើសម្រាប់បញ្ឈប់
Exposing Port:
$ docker run -d -p 9000:80 nginx:latest- ប្រើសម្រាប់ដំណើរការ
containerជាលក្ខណៈdetached modeហើយមានការរួមបញ្ចូលជាមួយនឹងការបញ្ជាក់យ៉ាងច្បាស់ជាមួយនឹងexpose portដែលទុកប្រើសម្រាប់ដំណើរការកម្មវិធីnginxហើយដើម្បីបញ្ជាក់expose portបាន អ្នកត្រូវប្រើស្លាក-pហើយបន្ទាប់គឺportដែលអ្នកចង់ដាក់ ហើយបន្ទាប់គឺសញ្ញាcolon(:)ហើយបន្ទាប់គឺportរបស់containerនោះផ្ទាល់។
$ docker run -d -p 9000:80 -p 9010:80 nginx:latest- ប្រើសម្រាប់ដំណើរការ
containerដូចពាក្យបញ្ជាខាងលើដែរ តែអ្នកអាចប្រើmultiple portបាន ពោលគឺអ្នកប្រើport 9000ក៏ដំណើរការជោគជ័យ ឬក៏ប្រើport 9010ក៏ដំណើរការជោគជ័យ។
- ប្រើសម្រាប់ដំណើរការ
ការចាប់ផ្តើម Container:
$ docker start 19411e21c4fa ឬ $ docker start boring_merkle- ប្រើសម្រាប់ចាប់ផ្តើមដំណើរការ
containerដែលមានរួចជាស្រេច ហើយអ្នកចង់ប្រើជម្រើសចាប់ផ្តើមដោយIDរបស់containerក៏បាន ឬក៏ប្រើជម្រើសចាប់ផ្តើមដោយឈ្មោះរបស់containerក៏បាន។
- ប្រើសម្រាប់ចាប់ផ្តើមដំណើរការ
ការលុប Container:
$ docker rm 19411e21c4fa ឬ $ docker rm boring_merkle- ប្រើសម្រាប់លុប
containerចោលហើយការលុបមួយនេះ អ្នកអាចលុបដោយប្រើIDរបស់containerក៏បានឬក៏ឈ្មោះរបស់containerក៏បាន ហើយមួយវិញទៀត អ្នកអាចលុបcontainerចោលបាន លុះត្រាតែcontainerនោះត្រូវបានបញ្ឈប់ជាមុនសិន។
$ docker rm -f 19411e21c4fa ឬ $ docker rm -f boring_merkle- ប្រើសម្រាប់លុប
containerចោលដូចនឹងពាក្យបញ្ជាខាងលើដែរ តែការលុបនេះគឺលុបក្នុងលក្ខណៈforce modeគឺមានន័យថាលុបcontainerចោលដោយមិនចាំបាច់ត្រូវបញ្ឈប់containerនោះទេ ហើយការលុបមួយនេះ អ្នកអាចលុបដោយប្រើIDរបស់containerក៏បានឬក៏ឈ្មោះរបស់containerក៏បាន។
$ docker rm $(docker ps -aq)- ប្រើសម្រាប់លុប
containerចោលទាំងអស់ដោយប្រើIDរបស់containerសម្រាប់រាល់containersដែលត្រូវបានបញ្ឈប់។
$ docker rm -f $(docker ps -aq)- ប្រើសម្រាប់លុប
containerចោលទាំងអស់ដែរ តែអ្នកអាចលុបទាំង containers ដែលកំពុងតែត្រូវបានដំណើរការនិងមិនដំណើរការ។
- ប្រើសម្រាប់លុប
ការដាក់ឈ្មោះទៅឲ្យ Container:
$ docker run -d --name nginx-ms -p 9000:80 nginx:latest- ប្រើសម្រាប់កំណត់ឈ្មោះទៅតាមឈ្មោះអ្វីដែលអ្នកចង់ដាក់
--nameគឺជាស្លាកតំណាងឲ្យការកំណត់ឈ្មោះ ចំណែកឯnginx-msគឺជាឈ្មោះរបស់containerដែលអ្នកចង់ដាក់។
- ប្រើសម្រាប់កំណត់ឈ្មោះទៅតាមឈ្មោះអ្វីដែលអ្នកចង់ដាក់
Volumes:
$ docker run --name cambodia-website -d -p 9000:80 -v /home/mengsreang/Desktop/cambodia-website:/usr/share/nginx/html nginx:latest- ប្រើសម្រាប់ដំណើរការ
containerដោយមានកំណត់ជាលក្ខណៈvolumesដែលធ្វើការភ្ជាប់projectដែលមាននៅក្នុងកុំព្យូទ័ររបស់អ្នកទៅកាន់serverរបស់nginxក្នុងdocker។ សម្រាយបន្តិច: ស្លាក-vគឺតំណាងឲ្យvolumesរីឯ/home/mengsreang/Desktop/cambodia-websiteគឺជាទីតាំងprojectរបស់អ្នកនៅក្នុងកំព្យូទ័រ ហើយមួយទៀតគឺ/usr/share/nginx/htmlគឺជាទីតាំងprojectរបស់nginx serverហើយកុំភ្លេចដាក់សញ្ញាcolon(:)នៅពីមុខផង។
$ docker exec -it cambodia-website bash- ប្រើសម្រាប់បង្កើត
bashដើម្បីចូលទៅមើលprojectនៅក្នុងnginx server។ សម្រាយបន្តិចexecគឺតំណាងឲ្យការexecuteរីឯស្លាក-itគឺមានន័យថាexecute bashជាលក្ខណៈinterative mode។
- ប្រើសម្រាប់ដំណើរការ