ͻ񻣼
µ±ÎÒÃǹ¹½¨ºÃDocker¾µÏñ²¢ÀûÓöàÌ×ÈÝÆ÷¹²Í¬×éºÏ³ÉÓ¦ÓóÌÐò£¬½¨Á¢Æð³ÖÐø½»¸¶Í¨µÀ£¬Á˽âÁËÈçºÎ½«Ð´´½¨µÄ¾µÏñÄÉÈëµ½Éú²ú»òÕß²âÊÔ»·¾³µ±ÖÐÖ®ºó£¬ÐµÄÎÊÌâÀ´ÁË¡ª¡ªÎÒÃǸÃÈçºÎ²âÊÔ×Ô¼ºµÄDockerÈÝÆ÷£¿
²âÊԵIJßÂÔ¶àÖÖ¶àÑù£¬·´Ó³Á˸÷ÖÖ¸÷ÑùµÄ²âÊÔÐÔ¸ñ£ºÌìÕæÐÍ£¬ÀÁÈËÊ¡ÊÂÐÍ£¬³¬Ç°ÀíÏëÖ÷ÒåÐÍ£¬ÍêÃÀÖ÷Ò崦Ů×ùÐÍ¡¡ÄÇôÄãÊÇÄÄÒ»ÐÍ£¿
ÏÂÃæÎÒÃÇ¾Í¶ÔÆä¸÷×Եķ½°¸Àû±×½øÐÐÖðÒ»·ÖÎö¡£
µ±ÎÒÃǹ¹½¨ºÃDocker¾µÏñ²¢ÀûÓöàÌ×ÈÝÆ÷¹²Í¬×éºÏ³ÉÓ¦ÓóÌÐò£¬½¨Á¢Æð³ÖÐø½»¸¶Í¨µÀ£¬Á˽âÁËÈçºÎ½«Ð´´½¨µÄ¾µÏñÄÉÈëµ½Éú²ú»òÕß²âÊÔ»·¾³µ±ÖÐÖ®ºó£¬ÐµÄÎÊÌâÀ´ÁË¡ª¡ªÎÒÃǸÃÈçºÎ²âÊÔ×Ô¼ºµÄDockerÈÝÆ÷£¿
²âÊԵIJßÂÔ¶àÖÖ¶àÑù£¬·´Ó³Á˸÷ÖÖ¸÷ÑùµÄ²âÊÔÐÔ¸ñ£ºÌìÕæÐÍ£¬ÀÁÈËÊ¡ÊÂÐÍ£¬³¬Ç°ÀíÏëÖ÷ÒåÐÍ£¬ÍêÃÀÖ÷Ò崦Ů×ùÐÍ¡¡ÄÇôÄãÊÇÄÄÒ»ÐÍ£¿
ÏÂÃæÎÒÃÇ¾Í¶ÔÆä¸÷×Եķ½°¸Àû±×½øÐÐÖðÒ»·ÖÎö¡£
¡°ÌìÕæ¡±ÐÍ·½°¸
´ó¶àÊýÈ˻Ὣ´Ë×÷ΪĬÈÏ·½°¸¡£ÆäÀûÓÃCI·þÎñÆ÷ʵÏÖÈÎÎñÖ´ÐС£ÔÚÕâÏî·½°¸ÖУ¬¿ª·¢ÈËÔ±ÀûÓÃDocker×÷ΪÈí¼þ°ü¹ÜÀíÆ÷£¬Æäʵ¼ÊЧ¹ûÓÅÓÚjar/rpm/deb·½°¸¡£CI·þÎñÆ÷¶ÔÓ¦ÓóÌÐò´úÂë½øÐбàÒ룬¶øºóÖ´ÐвâÊÔ£¨°üÀ¨µ¥Ôª¡¢·þÎñ¼°¹¦Äܵȣ©¡£DockerÖеÄbuild¿É¸´ÓÃÒÔÉú³ÉеľµÏñ£¬ÓÉ´ËÉú³ÉµÄ¾µÏñ²»½ö°üº¬Ó¦ÓóÌÐòµÄ¡°¶þ½øÖÆ´úÂ롱£¬Í¬Ê±ÒàÓµÓÐÔËÐÐʱËù±ØÐèµÄÒÀÀµÐÔ¼°ÅäÖá£
²»¹ýΪÁËʵÏÖÓ¦ÓóÌÐòµÄ¿ÉÒÆÖ²ÐÔ£¬ÎÒÃÇÐèÒª·ÅÆú¿ª·¢Óë²âÊԵĿÉÒÆÖ²ÄÜÁ¦¡£ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇÎÞ·¨ÔÚCIÖ®ÍâÖØÐ½¨Á¢Í¬ÑùµÄ¿ª·¢Óë²âÊÔ»·¾³¡£ÎªÁË´´Ê¼ÕâÑùÒ»Ì×еIJâÊÔ»·¾³£¬ÎÒÃÇÐèÒªÉèÖòâÊÔ¹¤¾ß£¨ÕýÈ·°æ±¾Óë²å¼þ£©¡¢ÅäÖÃÔËÐÐʱÓë²Ù×÷ϵͳÉ趨£¬Í¬Ê±»ñÈ¡Ïàͬ°æ±¾µÄ²âÊԽű¾Óë²âÊÔÊý¾Ý¡£

ΪÁ˽â¾öÉÏÊöÄÑÌ⣬ÎÒÃÇÐèÒª¿¼ÂÇÒÔÏ·½°¸¡£
Ó¦ÓÃ&²âÊÔÈÝÆ÷·½°¸
ÏÖÔÚÎÒÃdz¢ÊÔ´´½¨µ¥Ò»À¦°ó°ü£¬ÆäÖÐÓ¦ÓóÌÐò¡°¶þ½øÖÆ´úÂ롱Öаüº¬È«²¿±ØÐèµÄÈí¼þ°ü¡¢²âÊÔ¹¤¾ß£¨°üÀ¨¶ÔÓ¦°æ±¾£©¡¢²âÊÔ¹¤¾ß²å¼þ¡¢²âÊԽű¾ÒÔ¼°ÆäËü¸÷Àà²âÊÔ»·¾³ÔªËØ¡£
ÕâÌ×·½°¸µÄÓÅÊÆ°üÀ¨£º
²âÊÔ»·¾³×ÔÉíÓµÓпÉÖØ¸´ÐÔ¡ª¡ªÎÒÃÇÄܹ»ÔÚCI¡¢¿ª·¢¡¢·Ö¶Î»òÕßÉú²ú»·¾³µ±ÖÐʹÓÃÍêÈ«ÏàͬµÄ²âÊÔ¹¤¾ßʵÏÖÍêÈ«ÏàͬµÄ²âÊÔЧ¹û¡£
ÎÒÃÇÄܹ»Á¢×ãÌØ¶¨Ê±¼äµã²¶×½²âÊԽű¾£¬ËùÒԿɽ«Æä¸´ÓÃÓÚÈÎÒâ»·¾³¡£
ÎÒÃDz»ÐèÒª¶Ô²âÊÔ¹¤¾ß½øÐжþ´ÎÉèÖÃÓëÅäÖ᪡ªÆäÒѾ³ÉΪ¾µÏñÖеÄ×é³É²¿·Ö¡£
µ«ÕâÖÖ·½Ê½Ò²´æÔÚ×ÅÏÔÖø±×¶Ë£º
¾µÏñÌå»ýÖ±ÏßÔö³¤¡ª¡ªÕâÊÇÒòΪÆäÖаüº¬ÓвâÊÔ¹¤¾ß¡¢±ØÒªÈí¼þ°ü¡¢²âÊԽű¾ÉõÖÁÊDzâÊÔÊý¾Ý¡£
ÌØ¶¨²âÊÔÅäÖÿÉÄܶԾµÏñÔËÐÐʱ»·¾³Ôì³ÉÎÛȾ£¬ÉõÖÁÒýÈë²»±ØÒªµÄÒÀÀµÐÔ£¨¼¯³É²âÊÔÖÐÐèÒªÓõ½£©¡£
ÎÒÃÇ»¹ÐèÒª¿¼ÂÇÈçºÎ´¦Àí²âÊÔ½á¹ûÓë¼Ç¼ÈÕÖ¾£»ÈçºÎ½«Æäµ¼³öÒÔ¼°ÏòÄÄÀïµ¼³ö¡£ ͨ¹ýÒÔϾ¹ý¼ò»¯µÄ Dockerfile£¬ÎÒÃÇ¿ÉÒÔÁ˽âÉÏÊö·½°¸µÄÕû¸öÁ÷³Ì¡£
FROM "<bases
image>":"<version>"
WORKDIR "<path>"
# install packages required to run app and tests
RUN apt-get update && apt-get install
-y \ "<app runtime> and <dependencies>"
\ # add app runtime and required packages
"<test tools> and <dependencies>"
\ # add testing tools and required packages
&& rm -rf /var/lib/apt/lists/*
# copy app files
COPY app app
COPY run.sh run.sh
# copy test scripts
COPY tests tests
# copy "main" test command
COPY test.sh test.sh
# ... EXPOSE, RUN, ADD ... for app and test environment
# main app command
CMD [run.sh, "<app arguments>"]
# it's not possible to have multiple CMD commands,
but this is the "main" test command
# CMD [/test.sh, "<test arguments>"] |

ºÁÎÞÒÉÎÊ£¬Ó¦¸ÃÓиüºÃµÄÈÝÆ÷ÄÚ²âÊÔ·½°¸¿É¹©Ñ¡Ôñ¡£
²âÊÔ¸ÐÖªÐÍÈÝÆ÷·½°¸
Ŀǰ£¬Docker³ÐŵÒÔ¡°Build -> Ship -> Run¡±ÕâÒ»¼òµ¥²Ù×÷Íê³É¾µÏñ¹¹½¨¡¢·¢²¼ÖÁ×¢²á±í²¢ÔÚÆäËüλÖÃÔËÐеÈÈÎÎñ¡£²»¹ýË¡ÎÒÖ±ÑÔ£¬ÆäÖл¹È±ÉÙÁËTestÕâÒ»ÖØÒª»·½Ú¡£ÕýÈ·ÇÒÍêÕûµÄÁ÷³ÌÓ¦¸ÃÊÇBuild
-> Test -> Ship -> Run¡£ ? ÏÂÃæÈÃÎÒÃÇ¿´¿´Äܹ»ÎªDockerÃüÁîÌṩ¡°²âÊÔÓѺá±ÐÍÓï·¨ÓëÀ©Õ¹µÄDockerfileÊÇÈçºÎ½¨Á¢¶ø³ÉµÄ¡£µ±È»£¬ÆäÖв¢²»Éæ¼°ÕæÕýµÄÓï·¨£¬Ö»ÊÇÎÒ¸öÈ˸üÆ«ºÃÕâÑù±íÊö¡£ÎÒ¶¨Òå³öÁË×Ô¼ºµÄ¡°ÀíÏ롱°æ±¾£¨ÕæµÄÖ»ÊÇÀíÏë°æ±¾£¬½ö¹©´ó¼Ò½è¼øÆäÖеÄ˼Ï룬СÊý×¢£©£¬´ó¼ÒÓ¦¸ÃÄܹ»¿´³öÆäÖпÉÓÃÓÚʵ¼ùµÄÖ¸µ¼Ë¼Â·¡£
Ê×Ïȶ¨ÒåÒ»ÌõÌØÊâµÄONTESTÖ¸ÁÆäÓëÏÖÓÐONBUILDÖ¸Áî·Ç³£ÏàËÆ¡£ONTESTÖ¸Áî»áÏò¾µÏñÌí¼ÓÒ»Ìõ´¥·¢Ö¸ÁÆäÔÚËæºó¾µÏñ½ÓÊܲâÊÔʱ×Ô¶¯Ö´ÐС£ÈÎÒâbuildÖ¸Áî¶¼¿É±»×¢²áΪ´¥·¢Ìõ¼þ¡£
ONTESTÖ¸Áî¿ÉÓÉÒ»ÌõеÄdocker testÃüÁî½øÐÐʶ±ð¡£
docker test
[OPTIONS] IMAGE [COMMAND] [ARG...] |
ÊÂʵÉÏ£¬docker testÃüÁîµÄÓï·¨Óëdocker runÃüÁî·Ç³£ÏàËÆ£¬¶þÕßÖ»´æÔÚÒ»ÏîÇø±ð£ºÇ°Õß»á×Ô¶¯Éú³ÉÒ»Ì×еġ°¿É²âÊÔ¡±¾µÏñ£¬ÉõÖÁΪÆäÌṩ:-test
±êÇ©£¨ÏòÔʼ¾µÏñ±êÇ©ÖÐÌí¼Ó¡®test¡¯±êÇ©£©¡£´Ë¿É²âÊÔ¾µÏñ½«ÓɳõʼӦÓþµÏñÉú³É£¬Ö´ÐÐÈ«²¿build²Ù×÷£¬ÓÚONTESTÃüÁîºó½øÐж¨Òå²¢Ö´ÐÐONTEST
CMD£¨»òÕßONTEST ENTRYPOINT£©¡£ÆäÖÐÈô²âÊÔ·¢Éú´íÎó£¬docker testÃüÁîÓ¦µ±·µ»ØÒ»¶Î·ÇÁã´úÂë¡£´Ë²âÊÔ½á¹ûÓ¦µ±±»Ð´ÈëÖÁ×Ô¶¯Éú³ÉÇÒÖ¸Ïò/var/tests/resultsÎļþ¼ÐµÄVOLUME¡£
ÏÂÃæÎÒÃÇÀ´¿´¿´¾¹ýÐ޸ĵÄDockerfile¡ª¡ªÆäÖаüº¬ÐµÄONTESTÖ¸Áî¡£
FROM "<base
image>":"<version>"
WORKDIR "<path>"
# install packages required to run app
RUN apt-get update && apt-get install
-y \
"<app runtime> and <dependencies>"
\ # add app runtime and required packages
&& rm -rf /var/lib/apt/lists/*
# install packages required to run tests
ONTEST RUN apt-get update && apt-get install
-y \
"<test tools> and <dependencies>"
\ # add testing tools and required packages
&& rm -rf /var/lib/apt/lists/*
# copy app files
COPY app app
COPY run.sh run.sh
# copy test scripts
ONTEST COPY tests tests
# copy "main" test command
ONTEST COPY test.sh test.sh
# auto-generated volume for test results
# ONTEST VOLUME "/var/tests/results"
# ... EXPOSE, RUN, ADD ... for app and test environment
# main app command
CMD [run.sh, "<app arguments>"]
# main test command
ONTEST CMD [/test.sh, "<test arguments>"] |

ÈçºÎʵÏÖ¡°²âÊÔ¸ÐÖªÈÝÆ÷¡±
ÎÒÃÇÏàÐÅ£¬DockerÓ¦¸Ã»á½«docker-test×÷ΪÈÝÆ÷¹ÜÀíÉúÃüÖÜÆÚÖеÄ×é³É²¿·Ö¡£µ±ÏÂÎÒÃǶ¼ÐèÒª¸üΪ¼ò±ãµÄ½â¾ö·½°¸£¬Òò´ËÎÒÔÚÕâÀïÌá³öÒ»Ì×½Ó½üÓÚÀíÏëÇé¿öµÄʵÏÖ°ì·¨¡£
Èç֮ǰËùÌáµ½£¬DockerÓµÓÐONBUILDÕâÑùÒ»Ìõ·Ç³£ÊµÓõÄÖ¸Áî¡£¸ÃÖ¸ÁîÔÊÐíÎÒÃÇÔÚÒѾ³É¹¦µÄbuildÖ®ÉÏ´¥·¢ÁíÒ»buildÖ¸Áî¡£Æä»ù±¾Ë¼Â·ÊÇÔÚÔËÐÐdocker-testÃüÁîµÄͬʱ£¬Ê¹ÓÃONBUILDÖ¸Áî¡£
ÒÔÏÂΪdocker-testÃüÁîµÄÖ´ÐÐÁ÷³Ì:
docker-test½«ÔÚÓ¦ÓóÌÐòDockerfileµ±ÖÐËÑË÷ONBUILDÖ¸Á¶øºó¡¡
ÀûÓóõʼDockerfileÉú³ÉÒ»ÌõÁÙʱµÄDockerfile.test
Ö´ÐÐdocker build -f Dockerfile.test [OPTIONS] PATH£¬ÆäÖаüº¬ÊÜdocker
buildÃüÁîÖ§³ÖµÄÆäËüÑ¡Ï-test½«×Ô¶¯±»Ìí¼ÓÖÁtagÑ¡Ïîµ±ÖС£
Èç¹û¹¹½¨³É¹¦£¬ÔòÖ´ÐÐ docker run -v ./tests/results:/var/tests/results
[OPTIONS] IMAGE:TAG-test [COMMAND] [ARG...]
ÒÆ³ýDockerfile.testÎļþ
ÄÇô£¬ÎªÊ²Ã´²»´´½¨Ò»¸öÎÞÐèÅäºÏONBUILDÖ¸ÁîµÄDockerfile.testÎļþ£¿
ÕâÊÇÒòΪ£¬ÎªÁ˲âÊÔÕýÈ·µÄ¾µÏñ£¨¼°±êÇ©£©£¬ÎÒÃÇÐèÒª±£Ö¤FROMʼÖÕÔÚ²âÊÔÄ¿±êµÄimage:tagÖеõ½¸üС£
²»¹ýÇ°ÃæÌáµ½µÄ·½°¸ÈÔÈ»´æÔÚ¾ÖÏÞ¡ª¡ªÆä²»ÊÊÓÃÓÚ¡°onbuild¡±¾µÏñ£¨¼´ÓÃÓÚ×Ô¶¯»¯¹¹½¨Ó¦ÓõľµÏñ£©£¬ÀýÈçMaven:onbuild¡£
ÏÂÃæÀ´¿´Ò»Ìõ¼òµ¥µÄdocker-testÃüÁîʵÏÖÁ÷³Ì¡£ÆäÖÐÇ¿µ÷ÁËÒ»´óÖØÒª¸ÅÄdocker-testÃüÁîÓ¦µ±Äܹ»´¦ÀíbuildÓërunÃüÁîÑ¡ÏͬʱÄܹ»Í×ÉÆ´¦Àí´íÎó×´¿ö¡£
#!/bin/bash
image="app"
tag="latest"
echo "FROM ${image}:${tag}" > Dockerfile.test
&&
docker build -t "${image}:${tag}-test"
-f Dockerfile.test . &&
docker run -it --rm -v $(pwd)/tests/results:/var/tests/results
"${image}:${tag}-test" &&
rm Dockerfile.test |
ÈÃÎÒÃǰÑ×¢ÒâÁ¦¼¯ÖÐÔÚ×îÖµµÃ¹Ø×¢µÄÖØÒª²¿·Ö¡£
¼¯³É²âÊÔÐÍÈÝÆ÷·½°¸
¼ÙÉèÎÒÃǵÄÓ¦ÓóÌÐòÓÉÊýÊ®ÉõÖÁÊý°ÙÏî΢·þÎñ¹¹½¨¶ø³É£¬Í¬Ê±¼ÙÉèÎÒÃÇÒѾӵÓÐÒ»Ì××Ô¶¯»¯CI/CDͨµÀ£¬ÆäÖÐÿÏî΢·þÎñ¶¼ÓÉCI½øÐй¹½¨Óë²âÊÔ£¬²¢ÔÚÖ®ºó±»²¿Êðµ½Ä³ÖÖ»·¾³µ±ÖУ¨ÀýÈç²âÊÔ¡¢·Ö¶Î»òÕßÉú²ú»·¾³£©¡£ÌýÆðÀ´²»´í£¬¶Ô°É£¿ÎÒÃǵÄCI»á¶Ô¸÷Ïî΢·þÎñ½øÐзֱð²âÊÔ¡ª¡ªÔËÐе¥ÔªÓë·þÎñ²âÊÔ£¨»òÕßAPIºÏͬ²âÊÔ£©¡£ÉõÖÁÓпÉÄܽøÐÐ΢¼¯³É²âÊÔ¡ª¡ª¼´½«²âÊÔÔËÐÐÔÚÌØÉèµÄ×Óϵͳ֮ÉÏ£¨ÀýÈçʹÓÃdocker
compose£©¡£
µ«ÕâÓÖ»á´øÀ´Ò»Ð©ÐÂÎÊÌ⣺
? ʵ¼Ê¼¯³É²âÊÔ»òÕß³¤ÆÚÔËÐвâÊÔ¸ÃÈçºÎÍê³É£¨ÀýÈçÐÔÄÜÓëѹÁ¦²âÊÔ£©£¿ ? µ¯ÐÔ²âÊÔ¸ÃÈçºÎʵÏÖ£¨ÀýÈç¡®»ìÂÒºï×Ó¡¯²âÊÔ£©£¿
? ÈçºÎʵÏÖ°²È«É¨Ã裿 ? ÄÇЩÐèÒªºÄ·Ñ½Ï³¤Ê±¼äÇÒÔËÐÐÔÚÍêÕû²Ù×÷ϵͳ֮ÉϵIJâÊÔÓëɨÃèÒªÈçºÎÍê³É£¿
Ó¦¸ÃÓÐÒ»ÖÖ¸üºÃµÄ°ì·¨À´Ìæ´úÕâÖÖÖ±½Ó½«ÐµÄ΢·þÎñ°æ±¾½»¸¶ÖÁÉú²ú»·¾³µÄ×÷·¨£¬ÎÒÃÇÒ²ÐèÒª¸üΪÃÜÇÐµÄ¼à¿ØÊֶΡ£
Ó¦µ±´æÔÚÒ»ÀàÌØÊâµÄ¼¯³É²âÊÔÈÝÆ÷¡£ÕâЩÈÝÆ÷½«½ö°üº¬²âÊÔ¹¤¾ßÓë²âÊÔÔªËØ£º²âÊԽű¾¡¢²âÊÔÊý¾Ý¡¢²âÊÔ»·¾³ÅäÖõȵȡ£ÎªÁ˼ò»¯´ËÀàÈÝÆ÷µÄ±àÅÅÓë×Ô¶¯»¯Á÷³Ì£¬ÎÒÃÇÓ¦µ±¶¨Òå²¢×ñÑijЩԼ¶¨²¢Ê¹ÓÃÔªÊý¾Ý±êÇ©£¨DockerfileÖеÄLABELÖ¸Á¡£
¼¯³É²âÊÔ±êÇ©
test.type ¨C ²âÊÔÀàÐÍ£¬¸ºÔð¶¨Òåintegration; ¿ÉÊôÓÚ integration,
performance, security, chaos »òÕ߯äËüÈÎÒâÎı¾Ö®Ò»; ´Ë±êÇ©´ú±íÆäÊôÓÚÒ»Ì×¼¯³É²âÊÔÈÝÆ÷
test.results ¨C ÓÃÓÚ´æ·Å²âÊÔ½á¹ûµÄVOLUME ; ĬÈÏλÖÃΪ /var/tests/results
test.XXX -ÈÎºÎÆäËüÏà¹ØÔªÊý¾Ý£¬½öʹÓÃtest.ºó׺Ãû×÷Ϊ±êÇ©Ãû³Æ
¼¯³É²âÊÔÈÝÆ÷
¼¯³É²âÊÔÈÝÆ÷Æäʵ¾ÍÊÇÒ»ÖÖ³£¹æDockerÈÝÆ÷£¬ÆäÖв»°üº¬ÈκÎÓ¦ÓóÌÐòÂß¼¼°´úÂë¡£ËüµÄΩһÓÃ;¾ÍÊÇ´´½¨¿ÉÖØ¸´ÇÒ¿ÉÒÆÖ²µÄ²âÊÔÁ÷³Ì¡£ÒÔÏÂΪ½¨ÒéÄÉÈ뼯³É²âÊÔÈÝÆ÷µÄÄÚÈÝ£º
²âÊÔ¹¤¾ß - Phantom.js, Selenium, Chakram, Gatling, ¡
²âÊÔ¹¤¾ßÔËÐÐʱ - Node.js, JVM, Python, Ruby, ¡
²âÊÔ¹ÜÀíÅäÖà ¨C »·¾³±äÁ¿, ÅäÖÃÎļþ, Òýµ¼½Å±¾, ¡
²âÊÔ -×÷Ϊ¾¹ý±àÒëµÄÈí¼þ°ü»òÕ߽ű¾Îļþ´æÔÚ
²âÊÔÊý¾Ý ¨C ÈκÎÓÃÓÚ²âÊÔµÄÊý¾ÝÎļþÀàÐÍ: json, csv, txt, xml, ¡
²âÊÔÆô¶¯½Å±¾ -ÓÃÓÚÔËÐвâÊԵIJ¿·Ö¡°main¡±Æô¶¯½Å±¾£¬½ö¸ºÔð´´½¨test.sh²¢½è´ËÆô¶¯¸Ã²âÊÔ¹¤¾ß¡£
¼¯³É²âÊÔÈÝÆ÷Ó¦µ±ÔËÐÐÔÚÈ«²¿Î¢·þÎñ¶¼ÒѾ²¿Êðµ½Î»µÄÔËÓª»·¾³Ö®Ï£¬°üÀ¨²âÊÔ¡¢·Ö¶Î»òÕßÉú²ú»·¾³¡£ÕâЩÈÝÆ÷¿ÉÓëÆäËü·þÎñ²ÉÈ¡ÍêȫһÖµIJ¿Êð·½Ê½¡£ÆäÀûÓÃͬÑùµÄÍøÂç²ã£¬Òò´ËÄܹ»·ÃÎʶàÏîÆäËü·þÎñ£»Ê¹ÓÃÑ¡¶¨µÄ·þÎñ·¢ÏÖ·½·¨£¨Í¨³£ÎªDNS£©¡£ÔÚʵ¼Ê¼¯³É²âÊÔµ±ÖУ¬ÎÒÃDZØÐë¶Ô¶àÏî·þÎñ½øÐзÃÎÊ¡ª¡ªÖ¼ÔÚÄ£Äâ²¢ÑéÖ¤×ÔÉíϵͳÊÇ·ñÄܹ»ÔÚ¶àÖÖ²»Í¬»·¾³ÏÂÕý³£ÔËÐС£½«¼¯³É²âÊÔÄÉÈëÓ¦Ó÷þÎñÈÝÆ÷²»½ö»áÔö¼ÓÈÝÆ÷×ÔÉíÌå»ý£¬Í¬Ê±Òà»áÔÚ¸÷·þÎñÖ®¼ä´øÀ´²»±ØÒªµÄÒÀÀµÐÔ¡£Òò´Ë£¬ÎÒÃǽ«ËùÓÐÒÀÀµÐÔ¶¼ÏÞÖÆÔÚ¼¯³É²âÊÔÈÝÆ÷µ±ÖС£Ò»µ©²âÊÔ£¨ÒÔ¼°Ïà¹Ø²âÊÔ¹¤¾ß£©±»´ò°üÔÚ¸ÃÈÝÆ÷ÄÚ£¬ÎÒÃÇÒà¿ÉÔÚ°üÀ¨¿ª·¢ÕßÉ豸ÔÚÄÚµÄÈÎÒâ»·¾³ÏÂÖØ¸´ÔËÐÐͬÑùµÄ²âÊÔÁ÷³Ì¡£´ó¼Ò»¹Äܹ»ÊµÏֻعö£¬¼´¸ù¾ÝÐèÒªÔËÐÐÈÎÒ⼯³É²âÊÔÈÝÆ÷°æ±¾¡£

|