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
។
- ប្រើសម្រាប់ដំណើរការ