Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Docker°²È«²¿ÊðµÄ17Ìõ½¨Òé
 
×÷Õߣº DockerOne À´Ô´£º¿áÇÚÍø ·¢²¼ÓÚ£º2015-03-02
  3150  次浏览      35

±¾ÎÄ×÷Õß´ÓDocker¾µÏñ¡¢ÍøÂçÃüÃû¿Õ¼ä¡¢ÈÕÖ¾ºÍÉóºË¡¢ÊØ»¤½ø³ÌÌØÈ¨¡¢SELinux¡¢¶þ½øÖÆSUID/GUID¡¢É豸¿ØÖÆ×é¡¢·þÎñºÍÓ¦ÓᢠLinuxÄںˡ¢Óû§ÃüÃû¿Õ¼ä¡¢libseccompµÈ·½Ãæ¸ø³öÁË×Ô¼ºµÄ½¨Ò飬¿ÉÒÔÒ»¶Á¡£

µ±Ç°³ÖÐøÔö³¤µÄÔÆ¼ÆËãÊг¡¶ÔÐéÄ⻯¼¼ÊõÓÐ×ÅÇ¿ÁÒµÄÐèÇó¡£Òź¶µÄÊÇ£¬´ó¶àÊýµÄÐéÄ⻯½â¾ö·½°¸²»¹»Áé»î£¬ÎÞ·¨Âú×ãÑз¢ÐèÇó£¬ÇÒʹÓÃÈ«ÐéÄ⻯½â¾ö·½°¸µÄDZÔÚ¿ªÏú±ä³ÉÁËÖÆÔ¼»ù´¡ÉèÊ©À©Õ¹ÐԵĸºµ£¡£

DockerÈÿª·¢ºÍÔËάÈËÔ±ÄÜÎÞ·ìµØ²¿ÊðÈÝÆ÷£¬ÓÃÓÚÔËÐÐÒµÎñËùÐèµÄÓ¦ÓÃÓë·þÎñ£¬´Ó¶ø¼õÉÙÕâÀ࿪Ïú¡£È»¶ø£¬ÒòΪDockerÓëËÞÖ÷ϵͳʹÓÃͬһÄںˣ¬ÅäÖò»µ±µÄÈÝÆ÷½«Ôì³ÉÖØ´ó°²È«Òþ»¼¡£

ÒÔÏÂÁбíÿһÌõÔÚÏà¹ØÈÝÆ÷»·¾³ÄÚ¶ÔÌá¸ßÆä°²È«ÐÔÌá³öÁ˽¨Òé¡£ÐèҪעÒâµÄÊÇ£¬ÕâЩ·½°¸½öÊÊÓÃÓÚ²¿ÊðÔÚLinuxÖ÷»úÉϵÄDockerÈÝÆ÷£¬²¢Ê¹ÓÃ×îеÄDocker°æ±¾£¨1.4.0£¬commit4595d4f£¬ÈÕÆÚ11/12/14£©¡£

ÒÔϲ¿·ÖÄÚÈݲο¼ÁËJ¨¦r?me PetazzoniºÍDaniel J WalshµÄÎÄÕ¡£±¾ÎÄÖ¼ÔÚ¶ÔËûÃǵĽ¨Òé½øÐв¹³ä£¬²¢ËµÃ÷ÈçºÎÔÚDocker¾ßÌåʵÏÖ¡£

×¢£º´ó¶àÊý½¨ÒéµÄÃüÁîÐÐÑ¡Ïî¿ÉÒÔÔÚDockerfileÖÐÒÔÀàËÆµÄ·½Ê½±£´æºÍʹÓã¬ÊµÏÖ×Ô¶¯»¯¾µÏñ¹¹½¨¡££¨ÒëÕß×¢£ºÔ­ÎÄ17ÏÒéÒÔ±í¸ñÐÎʽ³ÊÏÖ£¬ÓÉÓڱ༭Æ÷Ô­Òò£¬ÕâÀォ¸ÄΪÁбíÐÎʽ±íÊö£©

1. Docker¾µÏñ

Docker 1.3¿ªÊ¼Ö§³ÖʹÓÃÊý×ÖÇ©ÃûÀ´ÑéÖ¤¹Ù·½²Ö¿â¾µÏñµÄÀ´Ô´ºÍÍêÕûÐÔ¡£¸Ã¹¦ÄÜÈÔÔÚ¿ª·¢ÖУ¬Òò´ËDockerÖ»¶Ô£¨ÒëÕß×¢£ºÃ»ÓÐÊý×ÖÇ©ÃûµÄ£©¾µÏñ·¢³ö¾¯¸æÐÅÏ¢µ«²»»á×èÖ¹Æäʵ¼ÊÔËÐС£´ËÍ⣬Õâµã¶Ô·Ç¹Ù·½¾µÏñ²»ÊÊÓá£

Ò»°ãÇé¿öÏ£¬ÎÒÃÇҪȷ±£Ö»´ÓÊÜÐÅÈεĿâÖлñÈ¡¾µÏñ£¬²¢ÇÒ²»ÒªÊ¹ÓÃ--insecure-registry=[]²ÎÊý¡£

2. ÍøÂçÃüÃû¿Õ¼ä

ĬÈÏÇé¿öÏ£¬DockerÊØ»¤½ø³Ì±©Â¶³öÀ´ÓÃÓÚ¿ØÖÆÈÝÆ÷µÄREST APIÖ»ÄÜÔÚ±¾µØÍ¨¹ýUnix Domain Socket½øÐзÃÎÊ¡£

ÔÚÒ»¸öTCP¶Ë¿ÚÉÏÔËÐÐDocker£¨±ÈÈ磬Æô¶¯DockerÊØ»¤½ø³ÌʱʹÓÃ-HÑ¡ÏîÇ¿ÖÆ°ó¶¨µØÖ·£©½«ÔÊÐíÈκοÉÒÔ·ÃÎʸö˿ڵÄÈË»ñÈ¡ÈÝÆ÷µÄ·ÃÎÊȨÏÞ£¬ÉõÖÁÔÚ±¾µØÓû§ÊôÓÚDocker×éµÄijЩÇé¿öÏÂÓпÉÄÜ»ñµÃËÞÖ÷µÄrootȨÏÞ¡£

ÔÚÔÊÐíͨ¹ýTCP·ÃÎÊÊØ»¤½ø³Ìʱ£¬È·±£Í¨Ñ¶Ê¹ÓÃSSL¼ÓÃܺÍȨÏÞ¿ØÖÆÄÜÓÐЧµØ·ÀֹδÊÚȨÓû§ÓëÆä½øÐн»»¥¡£

¿ÉÔÚDockerµÄ±ê×¼ÍøÂçÇŽӽӿÚdocker0ÉÏÆôÓÃÄں˷À»ðǽiptables¹æÔò£¬ÓÃÓÚ¼ÓÇ¿ÕâЩ¿ØÖÆ¡£

ÀýÈ磬¿ÉÒÔʹÓÃÒÔÏÂiptables¹ýÂËÆ÷ÏÞÖÆDockerÈÝÆ÷µÄÔ´IPµØÖ··¶Î§ÓëÍâ½çͨѶ¡£iptables -t filter -A FORWARD -s <source_ip_range> -j REJECT --reject-with icmp-admin-prohibited

3. ÈÕÖ¾ºÍÉóºË

ÊÕ¼¯²¢¹éµµÓëDockerÏà¹ØµÄ°²È«ÈÕÖ¾À´´ïµ½ÉóºËºÍ¼à¿ØµÄÄ¿µÄ¡£¿ÉÒÔÔÚËÞÖ÷ÉÏʹÓÃÒÔÏÂÃüÁîÔÚÈÝÆ÷Íⲿ·ÃÎÊÈÕÖ¾Îļþ£º

dockerrun-v/dev/log:/dev/log<container_name>/bin/sh

ʹÓÃDockerÄÚÖÃÃüÁ

dockerlogs...(-ftofollowlogoutput)

ÈÕÖ¾ÎļþÒ²¿ÉÒÔµ¼³ö³ÉÒ»¸öѹËõ°üʵÏֳ־ô洢£º

dockerexport...

4. SELinux »ò AppArmor

ͨ¹ý·ÃÎÊ¿ØÖƵݲȫ²ßÂÔ£¬¿ÉÒÔÅäÖÃLinuxÄں˰²È«Ä£¿é£¬È簲ȫÔöÇ¿ÐÍLinux£¨SELinux£©ºÍAppArmor£¬´Ó¶øÊµÏÖÇ¿ÖÆÐԵķÃÎÊ¿ØÖÆ£¨MAC£©ÓÃÒÔ½«½ø³ÌÔ¼ÊøÔÚÒ»Ì×ÓÐÏÞµÄϵͳ×ÊÔ´»òȨÏÞÖС£

Èç¹ûÏÈǰÒѾ­°²×°²¢ÅäÖùýSELinux£¬ÄÇô¿ÉÒÔÔÚÈÝÆ÷ʹÓÃsetenforce 1À´ÆôÓÃËü¡£DockerÊØ»¤½ø³ÌµÄSELinux¹¦ÄÜĬÈÏÊǽûÓõģ¬ÐèҪʹÓÃ--selinux-enabledÀ´ÆôÓá£

ÈÝÆ÷µÄ±êÇ©ÏÞÖÆ¿ÉʹÓÃÐÂÔöµÄ¡ª-security-opt¼ÓÔØSELinux»òÕßAppArmorµÄ²ßÂÔ½øÐÐÅäÖ㬸ù¦ÄÜÔÚDocker°æ±¾1.3ÒýÈë¡£

ÀýÈ磺

dockerrun--security-opt=secdriver:name:value-i-tcentosbash

5. ÊØ»¤½ø³ÌÌØÈ¨

²»ÒªÊ¹ÓÃ--privilegedÃüÁîÐÐÑ¡Ïî¡£·ñÔò½«ÔÊÐíÈÝÆ÷·ÃÎÊËÞÖ÷ÉϵÄËùÓÐÉ豸£¬ÁíÍ⣬ΪÈÝÆ÷Ìá¹©ÌØ¶¨µÄLSM£¨ÀýÈçSELinux»òAppArmor£©ÅäÖ㬽«¸øÓèËüÓëÔËÐÐÔÚËÞÖ÷ÉϵĽø³ÌͬµÈ·ÃÎÊȨÏÞ¡£

±ÜÃâʹÓÃ--privilegedÓÐÖúÓÚ¼õÉÙ¹¥»÷ÃæºÍ¿ÉÄܵÄËÞÖ÷Íþв¡£µ«ÊÇ£¬Õâ²¢²»Òâζ×ÅÔËÐÐÊØ»¤½ø³Ìʱ²»ÐèÒªrootȨÏÞ£¬ÔÚ×îа汾ÖÐÕâÈÔÈ»ÊDZØÐëµÄ¡£

Æô¶¯ÊØ»¤½ø³ÌºÍÈÝÆ÷µÄȨÏÞÖ»Äܸ³ÓèÊÜÐÅÈεÄÓû§¡£

¿Éͨ¹ýʹÓÃ-uÑ¡ÏîÈõ»¯ÈÝÆ÷ÄÚ·ÃÎÊȨÏÞ¡£ÀýÈ磺

dockerrun-u<username>-it<container_name>/bin/bash

Docker×éµÄÈκÎÓû§²¿·Ö¿ÉÄÜ×îÖÕ´ÓÈÝÆ÷ÖеÄÖ÷»úÉÏ»ñµÃ¸ùÔ´¡£

6. cgroups

ΪÁË·Àֹͨ¹ýºÄ¾¡ÏµÍ³×ÊÔ´Òý·¢¾Ü¾ø·þÎñ£¨DoS£©¹¥»÷£¬¿ÉʹÓÃÌØ¶¨µÄÃüÁîÐвÎÊý±»À´ÆôÓÃһЩ×ÊÔ´ÏÞÖÆ¡£

CPUʹÓãº

dockerrun-it--rm--cpuset=0,1-c2...

ÄÚ´æÊ¹Óãº

dockerrun-it--rm-m128m...

´æ´¢Ê¹Óãº

docker-d--storage-optdm.basesize=5G

´ÅÅÌI/O£º

ĿǰDocker²»Ö§³Ö¡£Í¨¹ýsystemd±©Â¶µÄBlockIO*ÌØÐÔ¿ÉÒÔÔÚÖ§³ÖµÄ²Ù×÷ϵͳÖÐÓÃÀ´¿ØÖÆ´ÅÅÌʹÓÃÅä¶î¡£

7. ¶þ½øÖÆSUID/GUID

SUIDºÍGUID³ÌÐòÔÚÊܹ¥»÷µ¼ÖÂÈÎÒâ´úÂëÖ´ÐУ¨È绺³åÇøÒç³ö£©Ê±½«·Ç³£Î£ÏÕ£¬ÒòΪËüÃǽ«ÔËÐÐÔÚ½ø³ÌÎļþËùÓÐÕß»ò×éµÄÉÏÏÂÎÄÖС£

Èç¹û¿ÉÄܵϰ£¬Ê¹ÓÃÌØ¶¨µÄÃüÁîÐвÎÊý¼õÉÙ¸³ÓèÈÝÆ÷µÄÄÜÁ¦£¬×èÖ¹SUIDºÍSGIDÉúЧ¡£

dockerrun-it--rm--cap-dropSETUID--cap-dropSETGID...

»¹ÓÐÖÖ×ö·¨£¬¿ÉÒÔ¿¼ÂÇÔÚ¹ÒÔØÎļþϵͳʱʹÓÃnosuidÊôÐÔÀ´ÒƳýµôSUIDÄÜÁ¦¡£

×îºóÒ»ÖÖ×ö·¨ÊÇ£¬É¾³ýϵͳÖв»ÐèÒªµÄSUIDºÍGUID³ÌÐò¡£ÕâÀà³ÌÐò¿ÉÔÚLinuxϵͳÖÐÔËÐÐÒÔÏÂÃüÁî¶øÕÒµ½£º

find/-perm-4000-execls-l{};2>/dev/null
find/-perm-2000-execls-l{};2>/dev/null

È»ºó£¬¿ÉÒÔʹÓÃÀàËÆÓÚÏÂÃæµÄ[11]ÃüÁî½«ÒÆ³ýSUIDºÍGUIDÎļþȨÏÞ£º

sudochmodu-sfilenamesudochmod-Rg-sdirectory

8. É豸¿ØÖÆ×é(/dev/*)

Èç¹ûÐèÒª£¬Ê¹ÓÃÄÚÖõÄ--deviceÑ¡Ï-v²ÎÊý²»ÒªÓë--privilegedÒ»ÆðʹÓã©¡£´Ë¹¦ÄÜÔÚ1.2°æ±¾[12]ÒýÈë¡£

ÀýÈ磨ʹÓÃÉù¿¨£©£º

dockerrun--device=/dev/snd:/dev/snd¡­

9. ·þÎñºÍÓ¦ÓÃ

Èç¹ûDockerÈÝÆ÷ÓпÉÄܱ»ÈëÇÖ£¬ÎªÁ˼õÉÙºáÏòÔ˶¯µÄ¿ÉÄÜ£¬Ó¦¿¼ÂǸôÀëÃô¸Ð·þÎñ£¨ÈçÔÚËÞÖ÷»òÐéÄâ»úÉÏÔËÐÐSSH·þÎñ£©¡£

´ËÍ⣬²»ÒªÔÚÈÝÆ÷ÄÚʹÓÃrootȨÏÞÔËÐв»ÊÜÐÅÈεÄÓ¦Óá£

10. ¹ÒÔØµã

ʹÓÃÔ­ÉúÈÝÆ÷¿â£¨Èçlibcontainer£©Ê±£¬Docker»á×Ô¶¯´¦ÀíÕâÏî¡£

µ«ÊÇ£¬Ê¹ÓÃLXCÈÝÆ÷¿âʱ£¬Ãô¸ÐµÄ¹ÒÔØµã×îºÃÒÔÖ»¶ÁȨÏÞÊÖ¶¯¹ÒÔØ£¬°üÀ¨£º

/sys
/proc/sys
/proc/sysrq-trigger
/proc/irq
/proc/bus

¹ÒÔØÈ¨ÏÞÓ¦ÔÚÖ®ºóÒÆ³ý£¬ÒÔ·ÀÖ¹ÖØÐ¹ÒÔØ¡£

11. LinuxÄÚºË

ʹÓÃϵͳÌṩµÄ¸üй¤¾ß£¨Èçapt-get¡¢yumµÈ£©È·±£ÄÚºËÊÇ×îеġ£¹ýʱµÄÄÚºËÏà±ÈÒѹ«¿ªµÄ©¶´Î£ÏÕÐÔ¸ü´ó¡£

ʹÓÃGRSEC»òPAXÀ´Ç¿»¯Äںˣ¬ÀýÈçÕë¶ÔÄÚ´æÆÆ»µÂ©¶´Ìṩ¸ü¸ßµÄ°²È«ÐÔ¡£

12. Óû§ÃüÃû¿Õ¼ä

Docker²»Ö§³ÖÓû§ÃüÃû¿Õ¼ä£¬µ«ËüÊÇĿǰÕýÔÚ¿ª·¢µÄ¹¦ÄÜ¡£ÏÖÔÚ£¬LXCÇý¶¯Ö§³ÖUIDÓ³É䣬µ«Ô­ÉúµÄlibcontainer¿â²»Ö§³Ö¡£

¸Ã¹¦ÄÜÔÊÐíDockerÊØ»¤½ø³ÌÒÔ·ÇÌØÈ¨Óû§Éí·ÝÔËÐÐÔÚËÞÖ÷ÉÏ£¬µ«ÔÚÈÝÆ÷ÄÚ¿´ÆðÀ´ÏñÊÇÒÔrootÔËÐС£

13. libseccomp£¨ºÍseccomp-bpf À©Õ¹£©

libseccomp¿âÔÊÐí»ùÓÚ°×Ãûµ¥·½·¨À´ÏÞÖÆLinuxÄں˵Äϵͳµ÷ÓóÌÐòµÄʹÓá£×îºÃ½ûÓÃÊܹ¥»÷ÈÝÆ÷ÖжÔÓÚϵͳ²Ù×÷²»ÊǺÜÖØÒªµÄϵͳµ÷ÓóÌÐò£¬ÒÔ·ÀÖ¹Æä±»ÀÄÓûòÎóÓá£

´Ë¹¦ÄÜĿǰÕýÔÚ¿ª·¢ÖУ¨LXCÇý¶¯ÖдæÔÚ£¬µ«ÊÇÏÖÔÚĬÈϵÄlibcontainerÖÐûÓУ©¡£Ê¹ÓÃLXCÇý¶¯³ÌÐòÀ´ÖØÆôDocker³ÌÐò£º

docker-d-elxc

ÈçºÎÉú³ÉseccompÅäÖõÄ˵Ã÷¶¼ÔÚGitHub²Ö¿âµÄ¡°contrib¡±]Îļþ¼Ð¡£Ö®ºó¿ÉÓÃÏÂÃæµÄÃüÁîÀ´´´½¨Ò»¸öÒÔLXCΪ»ù´¡µÄDockerÈÝÆ÷£º

dockerrun--lxc-conf="lxc.seccomp=$file"<restofarguments>

14. ÄÜÁ¦

¾¡¿ÉÄܽµµÍLinuxÄÜÁ¦¡£DockerĬÈϵÄÄÜÁ¦°üÀ¨£ºchown¡¢dac_override¡¢fowner¡¢kill¡¢setgid¡¢setuid¡¢setpcap¡¢net_bind_service¡¢net_raw¡¢sys_chroot¡¢mknod¡¢setfcap¡¢ºÍaudit_write`¡£

ÔÚÃüÁîÐÐÆô¶¯ÈÝÆ÷ʱ£¬¿ÉÒÔͨ¹ý--cap-add=[]»ò--cap-drop=[]½øÐпØÖÆ¡£

ÀýÈ磺

dockerrun--cap-dropsetuid--cap-dropsetgid-ti<container_name>/bin/sh

´Ë¹¦ÄÜÔÚDocker 1.2°æ±¾ÒýÈë¡£

15. ¶à×â»§»·¾³

ÓÉÓÚDockerÈÝÆ÷Äں˵Ĺ²ÏíÐÔÖÊ£¬ÎÞ·¨ÔÚ¶à×â»§»·¾³Öа²È«µØÊµÏÖÔðÈηÖÀë¡£½¨Ò齫ÈÝÆ÷ÔËÐÐÔÚûÓÐÆäËüÄ¿µÄ£¬ÇÒ²»ÓÃÓÚÃô¸Ð²Ù×÷µÄËÞÖ÷ÉÏ¡£¿ÉÒÔ¿¼Âǽ«ËùÓзþÎñÇ¨ÒÆµ½Docker¿ØÖƵÄÈÝÆ÷³Ç¡£

¿ÉÄܵϰ£¬ÉèÖÃÊØ»¤½ø³ÌʹÓÃ--icc=false£¬²¢¸ù¾ÝÐèÒªÔÚdocker runʱָ¶¨-link£¬»òͨ¹ý¡ª-export=port±©Â¶ÈÝÆ÷µÄÒ»¸ö¶Ë¿Ú£¬¶ø²»ÐèÒªÔÚËÞÖ÷ÉÏ·¢²¼¡£

½«Ï໥ÐÅÈεÄÈÝÆ÷µÄ×éÓ³Éäµ½²»Í¬»úÆ÷ÉÏ¡£

16. ÍêÈ«ÐéÄ⻯

ʹÓÃÒ»¸öÍêÈ«ÐéÄ⻯½â¾ö·½°¸À´ÈÝÄÉDocker£¬ÈçKVM¡£Èç¹ûÈÝÆ÷ÄÚµÄÄں˩¶´±»·¢ÏÖ£¬Õ⽫·ÀÖ¹Æä´ÓÈÝÆ÷À©´óµ½ËÞÖ÷ÉÏ¡£

ÈçͬDocker-in-Docker¹¤¾ßËùʾ£¬Docker¾µÏñ¿ÉÒÔǶÌ×À´Ìṩ¸ÃKVMÐéÄâ²ã¡£

17. °²È«ÉóºË

¶¨ÆÚ¶ÔÄãµÄËÞÖ÷ϵͳºÍÈÝÆ÷½øÐа²È«ºË²é£¬ÒÔÕÒ³ö¿ÉÄܵ¼ÖÂϵͳ±»ÈëÇֵĴíÎóÅäÖûò©¶´¡£

   
3150 ´Îä¯ÀÀ       35
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±


WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
×¢²áÐÅÏ¢°²È«×¨ÒµÈËÔ±(CISP)
ÐÅÏ¢°²È«¹ÜÀí
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶


ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«