±¾ÎÄÓÃͼÎIJ¢Ã¯µÄ·½Ê½½éÉÜÁËÈÝÆ÷¡¢¾µÏñµÄÇø±ðºÍDockerÿ¸öÃüÁîºóÃæµÄ¼¼Êõϸ½Ú£¬Äܹ»ºÜºÃµÄ°ïÖú¶ÁÕßÉîÈëÀí½âDocker¡£
ÕâÆªÎÄÕÂÏ£ÍûÄܹ»°ïÖú¶ÁÕßÉîÈëÀí½âDockerµÄÃüÁ»¹ÓÐÈÝÆ÷£¨container£©ºÍ¾µÏñ£¨image£©Ö®¼äµÄÇø±ð£¬²¢ÉîÈë̽ÌÖÈÝÆ÷ºÍÔËÐÐÖеÄÈÝÆ÷Ö®¼äµÄÇø±ð¡£

µ±ÎÒ¶ÔDocker¼¼Êõ»¹ÊÇÒ»Öª°ë½âµÄʱºò£¬ÎÒ·¢ÏÖÀí½âDockerµÄÃüÁî·Ç³£À§ÄÑ¡£ÓÚÊÇ£¬ÎÒ»¨Á˼¸ÖܵÄʱ¼äÀ´Ñ§Ï°DockerµÄ¹¤×÷ÔÀí£¬¸üÈ·ÇеØËµ£¬ÊǹØÓÚDockerͳһÎļþϵͳ£¨the
union file system£©µÄ֪ʶ£¬È»ºó»Ø¹ýÍ·À´ÔÙ¿´DockerµÄÃüÁһÇбäµÃ˳Àí³ÉÕ£¬¼òµ¥¼«ÁË¡£
ÌâÍâ»°£º¾ÍÎÒ¸öÈ˶øÑÔ£¬ÕÆÎÕÒ»Ãż¼Êõ²¢ºÏÀíʹÓÃËüµÄ×îºÃ°ì·¨¾ÍÊÇÉîÈëÀí½âÕâÏî¼¼Êõ±³ºóµÄ¹¤×÷ÔÀí¡£Í¨³£Çé¿öÏ£¬Ò»Ïîм¼ÊõµÄµ®Éú³£³£»á°éËæ×ÅýÌåµÄ´óËÁÐû´«ºÍ³´×÷£¬ÕâʹµÃÓû§ºÜÄÑ¿´Çå¼¼ÊõµÄ±¾ÖÊ¡£¸üÈ·ÇеØËµ£¬Ð¼¼Êõ×ÜÊǻᷢÃ÷һЩеÄÊõÓï»òÕßÒþÓ÷´ÊÀ´°ïÖúÐû´«£¬ÕâÔÚ³õÆÚÊǷdz£ÓаïÖúµÄ£¬µ«ÊÇÕâ¸ø¼¼ÊõµÄÔÀíÃÉÉÏÁËÒ»²ãɰֽ£¬²»ÀûÓÚÓû§ÔÚºóÆÚÕÆÎÕ¼¼ÊõµÄÕæÚС£
Git¾ÍÊÇÒ»¸öºÜºÃµÄÀý×Ó¡£ÎÒ֮ǰ²»Äܹ»ºÜºÃµÄʹÓÃGit£¬ÓÚÊÇÎÒ»¨ÁËÒ»¶Îʱ¼äȥѧϰGitµÄÔÀí£¬Ö±µ½Õâʱ£¬ÎÒ²ÅÕæÕýÃ÷°×ÁËGitµÄÓ÷¨¡£ÎÒ¼áÐÅÖ»ÓÐÕæÕýÀí½âGitÄÚ²¿ÔÀíµÄÈ˲ÅÄܹ»ÕÆÎÕÕâ¸ö¹¤¾ß¡£
Image Definition
¾µÏñ£¨Image£©¾ÍÊÇÒ»¶ÑÖ»¶Á²ã£¨read-only layer£©µÄͳһÊӽǣ¬Ò²ÐíÕâ¸ö¶¨ÒåÓÐЩÄÑÒÔÀí½â£¬ÏÂÃæµÄÕâÕÅͼÄܹ»°ïÖú¶ÁÕßÀí½â¾µÏñµÄ¶¨Òå¡£

´Ó×ó±ßÎÒÃÇ¿´µ½Á˶à¸öÖ»¶Á²ã£¬ËüÃÇÖØµþÔÚÒ»Æð¡£³ýÁË×îÏÂÃæÒ»²ã£¬ÆäËü²ã¶¼»áÓÐÒ»¸öÖ¸ÕëÖ¸ÏòÏÂÒ»²ã¡£ÕâЩ²ãÊÇDockerÄÚ²¿µÄʵÏÖϸ½Ú£¬²¢ÇÒÄܹ»ÔÚÖ÷»ú£¨ÒëÕß×¢£ºÔËÐÐDockerµÄ»úÆ÷£©µÄÎļþϵͳÉÏ·ÃÎʵ½¡£Í³Ò»Îļþϵͳ£¨union
file system£©¼¼ÊõÄܹ»½«²»Í¬µÄ²ãÕûºÏ³ÉÒ»¸öÎļþϵͳ£¬ÎªÕâЩ²ãÌṩÁËÒ»¸öͳһµÄÊӽǣ¬ÕâÑù¾ÍÒþ²ØÁ˶à²ãµÄ´æÔÚ£¬ÔÚÓû§µÄ½Ç¶È¿´À´£¬Ö»´æÔÚÒ»¸öÎļþϵͳ¡£ÎÒÃÇ¿ÉÒÔÔÚͼƬµÄÓұ߿´µ½Õâ¸öÊӽǵÄÐÎʽ¡£
Äã¿ÉÒÔÔÚÄãµÄÖ÷»úÎļþϵͳÉÏÕÒµ½ÓйØÕâЩ²ãµÄÎļþ¡£ÐèҪעÒâµÄÊÇ£¬ÔÚÒ»¸öÔËÐÐÖеÄÈÝÆ÷ÄÚ²¿£¬ÕâЩ²ãÊDz»¿É¼ûµÄ¡£ÔÚÎÒµÄÖ÷»úÉÏ£¬ÎÒ·¢ÏÖËüÃÇ´æÔÚÓÚ/var/lib/docker/aufsĿ¼Ï¡£
sudo
tree -L 1 /var/lib/docker/
/var/lib/docker/
©À©¤©¤ aufs
©À©¤©¤ containers
©À©¤©¤ graph
©À©¤©¤ init
©À©¤©¤ linkgraph.db
©À©¤©¤ repositories-aufs
©À©¤©¤ tmp
©À©¤©¤ trust
©¸©¤©¤ volumes
7 directories, 2 files
Container Definition
|
ÈÝÆ÷£¨container£©µÄ¶¨ÒåºÍ¾µÏñ£¨image£©¼¸ºõһģһÑù£¬Ò²ÊÇÒ»¶Ñ²ãµÄͳһÊӽǣ¬Î¨Ò»Çø±ðÔÚÓÚÈÝÆ÷µÄ×îÉÏÃæÄÇÒ»²ãÊǿɶÁ¿ÉдµÄ¡£

ϸÐĵĶÁÕß¿ÉÄܻᷢÏÖ£¬ÈÝÆ÷µÄ¶¨Ò岢ûÓÐÌá¼°ÈÝÆ÷ÊÇ·ñÔÚÔËÐУ¬Ã»´í£¬ÕâÊǹÊÒâµÄ¡£ÕýÊÇÕâ¸ö·¢ÏÖ°ïÖúÎÒÀí½âÁ˺ܶàÀ§»ó¡£
Òªµã£ºÈÝÆ÷ = ¾µÏñ + ¿É¶Á²ã¡£²¢ÇÒÈÝÆ÷µÄ¶¨Ò岢ûÓÐÌá¼°ÊÇ·ñÒªÔËÐÐÈÝÆ÷¡£
½ÓÏÂÀ´£¬ÎÒÃǽ«»áÌÖÂÛÔËÐÐ̬ÈÝÆ÷¡£
Running Container Definition
Ò»¸öÔËÐÐ̬ÈÝÆ÷£¨running container£©±»¶¨ÒåΪһ¸ö¿É¶ÁдµÄͳһÎļþϵͳ¼ÓÉϸôÀëµÄ½ø³Ì¿Õ¼äºÍ°üº¬ÆäÖеĽø³Ì¡£ÏÂÃæÕâÕÅͼƬչʾÁËÒ»¸öÔËÐÐÖеÄÈÝÆ÷¡£

ÕýÊÇÎļþϵͳ¸ôÀë¼¼ÊõʹµÃDocker³ÉΪÁËÒ»¸öǰ;ÎÞÁ¿µÄ¼¼Êõ¡£Ò»¸öÈÝÆ÷ÖеĽø³Ì¿ÉÄÜ»á¶ÔÎļþ½øÐÐÐ޸ġ¢É¾³ý¡¢´´½¨£¬ÕâЩ¸Ä±ä¶¼½«×÷ÓÃÓڿɶÁд²ã£¨read-write
layer£©¡£ÏÂÃæÕâÕÅͼչʾÁËÕâ¸öÐÐΪ¡£

ÎÒÃÇ¿ÉÒÔͨ¹ýÔËÐÐÒÔÏÂÃüÁîÀ´ÑéÖ¤ÎÒÃÇÉÏÃæËù˵µÄ£º
docker run ubuntu touch happiness.txt |
¼´±ãÊÇÕâ¸öubuntuÈÝÆ÷²»ÔÙÔËÐУ¬ÎÒÃÇÒÀ¾ÉÄܹ»ÔÚÖ÷»úµÄÎļþϵͳÉÏÕÒµ½Õâ¸öÐÂÎļþ¡£
find
/ -name happiness.txt
/var/lib/docker/aufs/diff/860a7b...889/happiness.txt
Image Layer Definition
|
ΪÁ˽«ÁãÐǵÄÊý¾ÝÕûºÏÆðÀ´£¬ÎÒÃÇÌá³öÁ˾µÏñ²ã£¨image layer£©Õâ¸ö¸ÅÄî¡£ÏÂÃæµÄÕâÕÅͼÃèÊöÁËÒ»¸ö¾µÏñ²ã£¬Í¨¹ýͼƬÎÒÃÇÄܹ»·¢ÏÖÒ»¸ö²ã²¢²»½ö½ö°üº¬ÎļþϵͳµÄ¸Ä±ä£¬Ëü»¹Äܰüº¬ÁËÆäËûÖØÒªÐÅÏ¢¡£

ÔªÊý¾Ý£¨metadata£©¾ÍÊǹØÓÚÕâ¸ö²ãµÄ¶îÍâÐÅÏ¢£¬Ëü²»½öÄܹ»ÈÃDocker»ñÈ¡ÔËÐк͹¹½¨Ê±µÄÐÅÏ¢£¬»¹°üÀ¨¸¸²ãµÄ²ã´ÎÐÅÏ¢¡£ÐèҪעÒ⣬ֻ¶Á²ãºÍ¶Áд²ã¶¼°üº¬ÔªÊý¾Ý¡£

³ý´ËÖ®Í⣬ÿһ²ã¶¼°üÀ¨ÁËÒ»¸öÖ¸Ïò¸¸²ãµÄÖ¸Õë¡£Èç¹ûÒ»¸ö²ãûÓÐÕâ¸öÖ¸Õ룬˵Ã÷Ëü´¦ÓÚ×îµ×²ã¡£

Metadata Location:
ÎÒ·¢ÏÖÔÚÎÒ×Ô¼ºµÄÖ÷»úÉÏ£¬¾µÏñ²ã£¨image layer£©µÄÔªÊý¾Ý±»±£´æÔÚÃûΪ¡±json¡±µÄÎļþÖУ¬±ÈÈç˵£º
/var/lib/docker/graph/e809f156dc985.../json
e809f156dc985...¾ÍÊÇÕâ²ãµÄid
Ò»¸öÈÝÆ÷µÄÔªÊý¾ÝºÃÏñÊDZ»·Ö³ÉÁ˺ܶàÎļþ£¬µ«»ò¶à»òÉÙÄܹ»ÔÚ/var/lib/docker/containers/<id>Ŀ¼ÏÂÕÒµ½£¬<id>¾ÍÊÇÒ»¸ö¿É¶Á²ãµÄid¡£Õâ¸öĿ¼ÏµÄÎļþ´ó¶àÊÇÔËÐÐʱµÄÊý¾Ý£¬±ÈÈçËµÍøÂ磬ÈÕÖ¾µÈµÈ¡£
È«¾ÖÀí½â£¨Tying It All Together£©
ÏÖÔÚ£¬ÈÃÎÒÃǽáºÏÉÏÃæÌáµ½µÄʵÏÖϸ½ÚÀ´Àí½âDockerµÄÃüÁî¡£
docker create <image-id>

docker create ÃüÁîΪָ¶¨µÄ¾µÏñ£¨image£©Ìí¼ÓÁËÒ»¸ö¿É¶Á²ã£¬¹¹³ÉÁËÒ»¸öеÄÈÝÆ÷¡£×¢Ò⣬Õâ¸öÈÝÆ÷²¢Ã»ÓÐÔËÐС£

docker start <container-id>

Docker startÃüÁîΪÈÝÆ÷Îļþϵͳ´´½¨ÁËÒ»¸ö½ø³Ì¸ôÀë¿Õ¼ä¡£×¢Ò⣬ÿһ¸öÈÝÆ÷Ö»Äܹ»ÓÐÒ»¸ö½ø³Ì¸ôÀë¿Õ¼ä¡£
docker run <image-id>

¿´µ½Õâ¸öÃüÁ¶ÁÕßͨ³£»áÓÐÒ»¸öÒÉÎÊ£ºdocker start ºÍ docker runÃüÁîÓÐÊ²Ã´Çø±ð¡£

´ÓͼƬ¿ÉÒÔ¿´³ö£¬docker run ÃüÁîÏÈÊÇÀûÓþµÏñ´´½¨ÁËÒ»¸öÈÝÆ÷£¬È»ºóÔËÐÐÕâ¸öÈÝÆ÷¡£Õâ¸öÃüÁî·Ç³£µÄ·½±ã£¬²¢ÇÒÒþ²ØÁËÁ½¸öÃüÁîµÄϸ½Ú£¬µ«´ÓÁíÒ»·½ÃæÀ´¿´£¬ÕâÈÝÒ×ÈÃÓû§²úÉúÎó½â¡£
ÌâÍâ»°£º¼ÌÐøÎÒÃÇ֮ǰÓйØÓÚGitµÄ»°Ì⣬ÎÒÈÏΪdocker runÃüÁîÀàËÆÓÚgit pullÃüÁî¡£git
pullÃüÁî¾ÍÊÇgit fetch ºÍ git mergeÁ½¸öÃüÁîµÄ×éºÏ£¬Í¬ÑùµÄ£¬docker run¾ÍÊÇdocker
createºÍdocker startÁ½¸öÃüÁîµÄ×éºÏ¡£

docker ps ÃüÁî»áÁгöËùÓÐÔËÐÐÖеÄÈÝÆ÷¡£ÕâÒþ²ØÁË·ÇÔËÐÐ̬ÈÝÆ÷µÄ´æÔÚ£¬Èç¹ûÏëÒªÕÒ³öÕâЩÈÝÆ÷£¬ÎÒÃÇÐèҪʹÓÃÏÂÃæÕâ¸öÃüÁî¡£
docker ps ¨Ca

docker ps ¨CaÃüÁî»áÁгöËùÓеÄÈÝÆ÷£¬²»¹ÜÊÇÔËÐе쬻¹ÊÇÍ£Ö¹µÄ¡£
docker images

docker imagesÃüÁî»áÁгöÁËËùÓж¥²ã£¨top-level£©¾µÏñ¡£Êµ¼ÊÉÏ£¬ÔÚÕâÀïÎÒÃÇûÓÐ°ì·¨Çø·ÖÒ»¸ö¾µÏñºÍÒ»¸öÖ»¶Á²ã£¬ËùÒÔÎÒÃÇÌá³öÁËtop-level¾µÏñ¡£Ö»Óд´½¨ÈÝÆ÷ʱʹÓõľµÏñ»òÕßÊÇÖ±½ÓpullÏÂÀ´µÄ¾µÏñÄܱ»³ÆÎª¶¥²ã£¨top-level£©¾µÏñ£¬²¢ÇÒÿһ¸ö¶¥²ã¾µÏñÏÂÃæ¶¼Òþ²ØÁ˶à¸ö¾µÏñ²ã¡£
docker images ¨Ca

docker images ¨CaÃüÁîÁгöÁËËùÓеľµÏñ£¬Ò²¿ÉÒÔ˵ÊÇÁгöÁËËùÓеĿɶÁ²ã¡£Èç¹ûÄãÏëÒª²é¿´Ä³Ò»¸öimage-idϵÄËùÓв㣬¿ÉÒÔʹÓÃdocker
historyÀ´²é¿´¡£
docker stop <container-id>

docker stopÃüÁî»áÏòÔËÐÐÖеÄÈÝÆ÷·¢ËÍÒ»¸öSIGTERMµÄÐźţ¬È»ºóÍ£Ö¹ËùÓеĽø³Ì¡£
docker kill <container-id>

docker kill ÃüÁîÏòËùÓÐÔËÐÐÔÚÈÝÆ÷ÖеĽø³Ì·¢ËÍÁËÒ»¸ö²»ÓѺõÄSIGKILLÐźš£
docker pause <container-id>

docker stopºÍdocker killÃüÁî»á·¢ËÍUNIXµÄÐźŸøÔËÐÐÖеĽø³Ì£¬docker pauseÃüÁîÔò²»Ò»Ñù£¬ËüÀûÓÃÁËcgroupsµÄÌØÐÔ½«ÔËÐÐÖеĽø³Ì¿Õ¼äÔÝÍ£¡£¾ßÌåµÄÄÚ²¿ÔÀíÄã¿ÉÒÔÔÚÕâÀïÕÒµ½£ºhttps://www.kernel.org/doc/Doc
... m.txt£¬µ«ÊÇÕâÖÖ·½Ê½µÄ²»×ãÖ®´¦ÔÚÓÚ·¢ËÍÒ»¸öSIGTSTPÐźŶÔÓÚ½ø³ÌÀ´Ëµ²»¹»¼òµ¥Ò×¶®£¬ÒÔÖÁÓÚ²»Äܹ»ÈÃËùÓнø³ÌÔÝÍ£¡£
docker rm <container-id>

docker rmÃüÁî»áÒÆ³ý¹¹³ÉÈÝÆ÷µÄ¿É¶Áд²ã¡£×¢Ò⣬Õâ¸öÃüÁîÖ»ÄܶԷÇÔËÐÐ̬ÈÝÆ÷Ö´ÐС£
docker rmi <image-id>

docker rmi ÃüÁî»áÒÆ³ý¹¹³É¾µÏñµÄÒ»¸öÖ»¶Á²ã¡£ÄãÖ»Äܹ»Ê¹ÓÃdocker rmiÀ´ÒƳý×î¶¥²ã£¨top
level layer£©£¨Ò²¿ÉÒÔ˵ÊǾµÏñ£©£¬ÄãÒ²¿ÉÒÔʹÓÃ-f²ÎÊýÀ´Ç¿ÖÆÉ¾³ýÖмäµÄÖ»¶Á²ã¡£
docker commit <container-id>

docker commitÃüÁÈÝÆ÷µÄ¿É¶Áд²ãת»»ÎªÒ»¸öÖ»¶Á²ã£¬ÕâÑù¾Í°ÑÒ»¸öÈÝÆ÷ת»»³ÉÁ˲»¿É±äµÄ¾µÏñ¡£

docker build

docker buildÃüÁî·Ç³£ÓÐȤ£¬Ëü»á·´¸´µÄÖ´Ðжà¸öÃüÁî¡£

ÎÒÃÇ´ÓÉÏͼ¿ÉÒÔ¿´µ½£¬buildÃüÁî¸ù¾ÝDockerfileÎļþÖеÄFROMÖ¸Áî»ñÈ¡µ½¾µÏñ£¬È»ºóÖØ¸´µØ1£©run£¨createºÍstart£©¡¢2£©Ð޸ġ¢3£©commit¡£ÔÚÑ»·ÖеÄÿһ²½¶¼»áÉú³ÉÒ»¸öеIJ㣬Òò´ËÐí¶àеIJã»á±»´´½¨¡£
docker exec <running-container-id>

docker exec ÃüÁî»áÔÚÔËÐÐÖеÄÈÝÆ÷Ö´ÐÐÒ»¸öнø³Ì¡£
docker inspect <container-id> or <image-id>

docker inspectÃüÁî»áÌáÈ¡³öÈÝÆ÷»òÕß¾µÏñ×î¶¥²ãµÄÔªÊý¾Ý¡£
docker save <image-id>

docker saveÃüÁî»á´´½¨Ò»¸ö¾µÏñµÄѹËõÎļþ£¬Õâ¸öÎļþÄܹ»ÔÚÁíÍâÒ»¸öÖ÷»úµÄDockerÉÏʹÓ᣺ÍexportÃüÁͬ£¬Õâ¸öÃüÁîΪÿһ¸ö²ã¶¼±£´æÁËËüÃǵÄÔªÊý¾Ý¡£Õâ¸öÃüÁîÖ»ÄܶԾµÏñÉúЧ¡£
docker export <container-id>

docker exportÃüÁî´´½¨Ò»¸ötarÎļþ£¬²¢ÇÒÒÆ³ýÁËÔªÊý¾ÝºÍ²»±ØÒªµÄ²ã£¬½«¶à¸ö²ãÕûºÏ³ÉÁËÒ»¸ö²ã£¬Ö»±£´æÁ˵±Ç°Í³Ò»Êӽǿ´µ½µÄÄÚÈÝ£¨ÒëÕß×¢£ºexpoxtºóµÄÈÝÆ÷ÔÙimportµ½DockerÖУ¬Í¨¹ýdocker
images ¨CtreeÃüÁîÖ»ÄÜ¿´µ½Ò»¸ö¾µÏñ£»¶øsaveºóµÄ¾µÏñÔò²»Í¬£¬ËüÄܹ»¿´µ½Õâ¸ö¾µÏñµÄÀúÊ·¾µÏñ£©¡£
docker history <image-id>

docker historyÃüÁîµÝ¹éµØÊä³öÖ¸¶¨¾µÏñµÄÀúÊ·¾µÏñ¡£
½áÂÛ
ÎÒÏ£ÍûÄãÃÇÄÜϲ»¶ÕâÆªÎÄÕ¡£»¹ÓÐÆäËûÐí¶àµÄÃüÁpull£¬search£¬restart£¬attachµÈ£©ÎÒûÓÐÌá¼°£¬µ«ÊÇÎÒÏàÐÅͨ¹ýÔĶÁÕâÆªÎÄÕ£¬´ó²¿·ÖµÄDockerÃüÁî¶¼Äܹ»±»ºÜºÃÀí½â¡£ÎÒ½ö½öѧϰÁËDockerÁ½¸öÐÇÆÚ£¬Òò´Ë£¬Èç¹ûÎÒÓÐʲôµØ·½ËµµÄ²»ºÃ£¬»¶Ó´ó¼ÒÖ¸³ö¡£
|