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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÉîÈëdz³öDocker£¨Î壩£º»ùÓÚFig´î½¨¿ª·¢»·¾³
 
×÷Õß Ð¤µÂʱ£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-11-07
  2452  次浏览      27
 

1. ¸ÅÊö

Ôڴ¿ª·¢»·¾³Ê±£¬ÎÒÃǶ¼Ï£Íû´î½¨¹ý³ÌÄܹ»¼òµ¥£¬²¢ÇÒÒ»ÀÍÓÀÒÝ£¬ÆäËûµÄͬÊ¿ÉÒÔ¸´ÓÃÒѾ­´î½¨ºÃµÄ¿ª·¢»·¾³ÒÔ½ÚÊ¡¿ª·¢Ê±¼ä¡£¶øÔڴ¿ª·¢»·¾³Ê±£¬ÎÒÃǾ­³£»á±»¸´ÔÓµÄÅäÖÃÒÔ¼°Öظ´µÄÏÂÔØ°²×°ËùÀ§ÈÅ¡£ÔÚDocker¼¼Êõδ³öÏÖ֮ǰ£¬ÎÒÃÇ¿ÉÒÔʹÓÃPupet¡¢Chef¡¢AnsibleµÈÅäÖùÜÀí¹¤¾ß°Ñ¸´ÔÓµÄÅäÖùÜÀíÆðÀ´£¬ÕâÑùµÄ¹ÜÀíÅäÖü¼ÊõÈÔÈ»ÊÇĿǰ±È½ÏÁ÷Ðеķ½Ê½Ö®Ò»¡£ÅäÖùÜÀí¹¤¾ßʹÓõͼÊÇ×Ô¼ºµÄDSLÓï·¨¶¨Ò壬¿¼Âǵ½»·¾³µÄ¸´ÔÓÐÔ£¬ÅäÖÃÒ»Ì×ͨÓõĿª·¢»·¾³ÐèÒªÕë¶Ô¸÷¸öϵͳ¶¨ÖÆ£¬¶ÔÓڴ󲿷ֿª·¢»·¾³ÕâÖÖά»¤³É±¾ÈÔÈ»ÊǺܸߵġ£Docker¼¼Êõ³öÏÖÖ®ºó£¬ÏµÍ³µÄÒÀÀµÎÊÌâµÃµ½Á˳¹µ×µÄ½â¾ö£¬ÎÒÃÇ¿ÉÒÔͨ¹ý¾µÏñµÄ·½Ê½¼ò»¯»·¾³µÄ°²×°¡£½áºÏDockerµÄ¿ª·¢²¿Ê𹤾ßFig£¬ÎÒÃÇ¿ÉÒÔʹÓÃfig.ymlÎļþÀ´¶¨ÒåËùÓеĻ·¾³£¬Ò»´Î¶¨Ò壬¶à´¦Ê¹Ó㬼òµ¥¶øÇÒ¸ßЧ¡£

1.1 ´ò°üµÄ·½Ê½

Docker±¾Ê¡²¢²»ÄÜ´´½¨Ò»¸öÕæÊµµÄÐéÄâ»ú£¬ËüÖ»ÊÇ»ùÓÚLinux Kernel°Ñ¶îÍâµÄϵͳÎļþ×öÁË·â×°£¬²¢ÀûÓÃLinux KernelÏà¹ØµÄ¼¼ÊõÈçCgroup¡¢Namespace¸ôÀëÓû§Ó¦Óá£Ó¦ÓÃDocker¼¼Êõ£¬ÍŶÓÖ®¼äͨ¹ý¹²ÏíImage»òÕßDockefileÀ´¸´Óÿª·¢»·¾³¡£ÎªÁ˼ò»¯Ð´DockerfileµÄ·½Ê½ £¬FigÌṩ¸ü¼Ó¾«¼òµÄDSL¶¨ÒåÎļþfig.yml£¬¿ÉÒÔÈÃгÉÔ±¿ìËٴ¿ª·¢»·¾³²¢½«¾«Á¦Í¶Èëµ½¿ª·¢¹ý³ÌÖÐÈ¥£¬¶ø²»ÊÇÑо¿ÈçºÎÕýÈ·°²×°²¢ÅäÖÃÖîÈçPostgreSQLÖ®ÀàµÄÊý¾Ý¿â¡£Ä¿Ç°£¬Èí¼þ¿ª·¢ÐèÒªµÄ»·¾³Image£¬´ó²¿·Ö¶¼¿ÉÒÔÔÚDocker HubÖÐËÑË÷µ½£¬ÐèҪʹÓÃʱֱ½ÓÏÂÔØ¾Í¿ÉÒÔʹÓá£

1.2 Ó¦ÓÃ×éºÏµÄ·½Ê½

ʹÓÃDockerÖ®ºó£¬ÎÒÃDz»ÔÙÐèÒªÔÚ±¾µØ»úÆ÷°²×°ËùÓеÄÈí¼þ°ü¡£ÎÒÃÇ¿ÉÒÔ¸ù¾ÝÏîÄ¿ÐèÒªÔÚDocker HubÉÏËÑË÷Ïà¹ØÈí¼þµÄImage£¬È»ºóʹÓÃFig pull´ÓDocker HubÉÏÖ±½ÓÏÂÔØ²¢ÓÉFigµ÷ÓÃDockerµÄLinkÃüÁî°ÑImage¹ØÁªÆðÀ´£¬ÕâÑùËùÓÐÓ¦Óö¼¿ÉÒÔÖ±½Óµ÷ÓÃÖ¸¶¨¶Ë¿ÚµÄ·þÎñ£¬±ÈÈçMysqlµÄ3306¶Ë¿ÚÌṩÊý¾Ý¿â·þÎñ¡£¿ª·¢Õß²¢²»ÐèÒª¶ÔDockerÓÐÌ«¶àµÄÁ˽⣬ֻÐèÒªÕÆÎÕ³£Óõļ¸ÌõFigÃüÁî¾Í¿ÉÒÔËæÊ±µ÷ÊÔ×Ô¼ºµÄ»·¾³¡£

1.3 »·¾³¹²ÏíµÄ·½Ê½

FigÖ±½Ó¶¨ÒåºÃÁËImage£¬ÎÒÃDz»ÐèÒª¹ý¶àµÄ¹ØÐÄÈÝÆ÷»òÕß¾µÏñ¡£ÔÚ·ÖÏí»·¾³Ê±£¬Ö»ÐèÒª°Ñ¶ÔÓ¦µÄDockerfileºÍfig.ymlÎļþ·ÖÏí¸øÍ¬Ê£¬ËûÃǾͿÉÒÔÔÚ×Ô¼ºµÄ»úÆ÷ÉÏÔËÐв¢´î½¨³öÐèÒªµÄ»·¾³£¬ÇÒ²»ÓÃÔÙµ£ÐÄ»·¾³ÒÀÀµ´øÀ´µÄÒâÍâµ÷ÊÔ·³ÄÕ¡£ÍŶӳÉÔ±ÔÚgit cloneÏîÄ¿´úÂëºó£¬¾Í¿ÉÒÔÈçÏÂͼһÑùʹÓÃÒ»ÌõÃüÁîÆô¶¯×Ô¼ºµÄ¿ª·¢»·¾³£º

2. Fig°²×°Ö¸ÄÏ

Ê×ÏÈ£¬ÎÒÃÇÐèÒª°²×°Docker Engine£¬¹Ù·½Õë¶ÔÖ÷Á÷µÄϵͳÌṩÁ˶ÔÓ¦µÄ°²×°ÊֲᡣÕâÀÎҵĿª·¢»úϵͳÊÇһ̨MacBook Pro£¬ËùÒÔÎÒÐèÒª°²×°boot2dockerÀ´Ö§³ÖDocker¡£

½ÓÏÂÀ´£¬ÎÒÃǾͿÉÒÔ°²×°¶ÔӦϵͳ°æ±¾µÄFigÔËÐÐÎļþ¡£±ÈÈçÔÚMac OS»òÕßÔÚ64λµÄLinuxÉϰ²×°Fig£º

$ curl -L https://github.com/docker/fig/releases/download/1.0.0/fig-`uname 
-s`-`uname -m` > /usr/local/bin/fig; chmod +x /usr/local/bin/fig

µ±ÒÔÉϵݲװ·½Ê½²»Äܳɹ¦µÄ»°£¬ÎÒÃÇ¿ÉÒÔÑ¡ÔñʹÓÃPython PackageµÄ°²×°·½Ê½£º

$ sudo pip install -U fig

×îºó£¬²»¹ÜʹÓÃʲôLinuxϵͳ£¬°²×°ÍêFigÖ®ºóͨ¹ýÔËÐÐÒÔÏÂÃüÁîÀ´È·±£»·¾³µÄÒ»ÖÂÐÔ¡£

$ fig --version

Èç¹ûÒ»ÇÐ˳ÀûµÄ»°£¬¹§Ï²Ä㣬Fig°²×°³É¹¦ÁË¡£ÏÂÃæÇëËæÎÒÒ»ÆðѧϰÈçºÎʹÓÃFigÅäÖÿª·¢»·¾³¡£

3. Rails¿ª·¢»·¾³ÅäÖÃÏê½â

ÎÒÃÇÀ´ÅäÖÃÒ»Ì××î³£ÓõÄRails+PostgreSQLÏîÄ¿¡£

µÚÒ»²½£¬È·±£FigÒѾ­ÕýÈ·µÄ°²×°µ½Ö÷»úϵͳ£¬Èç¹û»¹Ã»ÓУ¬Çë²Î¿¼ÉÏÒ»Õ½ڵݲװָÄÏ¡£

µÚ¶þ²½£¬ÔÚÏîÄ¿¸ùĿ¼Ï´æ·ÅÒ»¸öÃûΪ Dockerfile Îļþ£º

FROM ruby
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
RUN bundle install
ADD . /myapp

µÚÈý²½£¬´´½¨Ò»¸ö Gemfile ÎļþÓÃÀ´¶¨ÒåRailsÈí¼þ°ü¡£ ÄÚÈÝÈçÏÂËùʾ£º

source 'https://rubygems.org'
gem 'rails', '4.0.2'

µÚËIJ½£¬´´½¨Ò»¸öfig.ymlÎļþ£¬²¢Ê¹ÓÃÒÔÏÂÅäÖÃÎļþÀ´×ö×îºóµÄ»·¾³³õʼ»¯¡£

db:
image: postgres
ports:
- "5432"
web:
build: .
command: bundle exec rackup -p 3000
volumes:
- .:/myapp
ports:
- "3000:3000"
links:
- db

µÚÎå²½£¬µ±Ç°ÄãĿ¼Ï¿տÕÈçÒ²£¬Ê¹ÓÃÈçÏÂÃüÁî¿ÉÒÔÉú³ÉÒ»Ì×RailsÏîÄ¿¹Ç¼Ü£º

$ fig run web rails new . --force --database=postgresql --skip-bundle

µ±ÄãÅÜÍêÒÔÉÏÃüÁÄã¾Í»áµÃµ½Ò»¸öոеÄRailsÏîÄ¿¡£

$ ls
Dockerfile Rakefile config fig.yml public vendor
Gemfile app config.ru lib test
README.rdoc bin db log tmp

±à¼­Ò»ÏÂGemfileÎļþ£¬È¥µôtherubyracer°üµÄ×¢ÊÍ, ÈÃRailsÒÀÀµµÄJavascriptµÄÔËÐÐʱ»·¾³¡£

gem 'therubyracer', platforms: :ruby

ËùÓеÄÎļþ±à¼­¶¼×öÍêÖ®ºó£¬ÔËÐÐÃüÁî´´½¨¿ª·¢»·¾³image¡£

$ fig build

ÔËÐÐÍêbuildÃüÁîºó£¬ÎÒÃǾÍÓÐÁË¿ÉÒÔÁ¢¼´Ê¹ÓõÄImage¡£ÕâÁ½¸öImageµÄÃû×Ö·Ö±ðÊÇwebºÍdb¡£ÎªÁËÈÃdbÄÜÁ¬ÉÏweb£¬ÎÒÃÇͨ³£»¹ÐèÒªÐÞ¸Ädatabase.ymlÀ´Ö§³ÖÊý¾Ý¿âÁ¬½Ó¡£

development: &default adapter: postgresql encoding: unicode database: postgres pool: 
5 username: postgres password: host: db test: <<: *default database: myapp_test

ºÃÁË£¬ÈÃÎÒÃÇÔËÐÐһϣº

$ fig up

ÃüÁîÐн«ÏÔʾÈçÏÂÈÕÖ¾£º

Recreating figtest_db_1...
Creating figtest_web_1...
Attaching to figtest_db_1, figtest_web_1
db_1 | LOG: database system was shut down at 2014-10-01 23:53:11 UTC
db_1 | LOG: autovacuum launcher started
db_1 | LOG: database system is ready to accept connections
web_1 | [2014-10-01 23:53:16] INFO WEBrick 1.3.1
web_1 | [2014-10-01 23:53:16] INFO ruby 2.1.2 (2014-05-08) [x86_64-linux]
web_1 | [2014-10-01 23:53:16] INFO WEBrick::HTTPServer#start: pid=1 port=3000
db_1 | FATAL: database "myapp_development" does not exist
db_1 | FATAL: database "myapp_development" does not exist
web_1 | 192.168.59.3 - - [01/Oct/2014 23:53:40] "GET / HTTP/1.1" 500 13476 0.5112
web_1 | 192.168.59.3 - - [01/Oct/2014 23:53:40] "GET %2Ffavicon.ico HTTP/1.1" 200 - 0.0067

ͨ¹ýÒÔÉÏÈÕÖ¾¿ÉÒÔÖªµÀ¿ª·¢Êý¾Ý¿â»¹Ã»Óд´½¨¡£ÕâʱÎÒÃÇ¿ÉÒÔ¿ªÆôÁíÍâÒ»¸öterminal£¬´´½¨¿ª·¢Êý¾Ý¿â£º

$ fig run web rake db:create

µ±ÒÔÉÏËùÓв½Öè¶¼³É¹¦ÔËÐк󣬾ÍÐèÒªÀ´ÑéÖ¤¿ª·¢»·¾³µÄÕýÈ·ÐÔÁË¡£Í¨¹ý·ÃÎÊhttp://localhost:3000/ ÎÒÃÇÓ¦¸Ã¿ÉÒÔ¿´µ½ÊìϤµÄRails»¶Ó­Ò³Ã棺

4. Django¿ª·¢»·¾³ÅäÖÃÏê½â

½ÓÏÂÀ´ÈÃÎÒÃÇʹÓÃFigÀ´ÅäÖÃÒ»Ì×ÔËÐÐDjango/PostgreSQLµÄÓ¦ÓóÌÐò°É¡£

Ê×ÏÈÎÒÃÇн¨Ò»¸öÏîĿĿ¼£¬²¢ÔÚĿ¼Àï´´½¨3¸öÎļþ¡£µÚÒ»¸öÎļþÊÇDocker¾µÏñµÄ¶¨ÒåÎļþ: Dockerfile£¬ÓÃÀ´ÃèÊö°²×°ÔÚDockerÈÝÆ÷ÀïÈí¼þÒÀÀµ¹ØÏµ¡£ÎļþÈçÏ£º

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

ÒÔÉÏÎļþÃèÊöÕâ¸öImage½«°²×°requirements.txtÖ¸¶¨µÄpythonÒÀÀµ°ü¡£

µÚ¶þ¸öÎļþÊÇrequirements.txt£¬ËüÊÇpythonÒÀÀµ°ü¶¨ÒåÃèÊöÎļþ£¬ÄÚÈÝÈçÏ£º

Django
psycopg2

×îºó£¬FigÐèÒª°ÑËùÓеĻ·¾³¶¼Á¬½ÓÆðÀ´ÔËÐС£Õâ¸öÎļþÃûΪ fig.yml ¡£ËüÃèÊöÏîÄ¿ÐèÒªµÄ·þÎñ×é¼þ¡¢Ö¸¶¨¾µÏñµÄ°æ±¾¡¢ÈçºÎÁ¬½Ó·þÎñ¡¢Ê²Ã´¾í¿ÉÒÔ±»ÔØÈëÈÝÆ÷ÄÚ²¿¡¢Ê²Ã´¶Ë¿Ú¿ÉÒÔ±©Â¶³öÀ´µÈ¡£ÄÚÈÝÐÎÈ磺

db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db

µ½´Ë´¦£¬ÎÒÃǾͿÉÒÔʹÓà fig run À´´´½¨Ò»¸öDjangoÏîÄ¿ÁË£º

$ fig run web django-admin.py startproject figexample .

µ±ÄãÔËÐÐÍêÖ®ºó£¬¿ÉÒÔÔÚµ±Ç°Ä¿Â¼Ï¿´µ½´´½¨µÄÐÂÏîÄ¿Îļþ£º

$ ls
Dockerfile fig.yml figexample manage.py requirements.txt

½ÓÏÂÀ´µÄÊÂÇé¾ÍÊÇ´´½¨Êý¾Ý¿âÁ´½Ó£¬ÐÞ¸Ä figexample/settings.py µÄDATABASES = ...²¿·Ö¡£

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}

Õâ¸öÅäÖÃÐÅÏ¢ÊÇÓÃÀ´Á¬½Ópostgres¾µÏñ·þÎñ¡£

È»ºó£¬ÔËÐÐÃüÁî fig upÀ´Æô¶¯ÈÝÆ÷¡£

Recreating myapp_db_1...
Recreating myapp_web_1...
Attaching to myapp_db_1, myapp_web_1
myapp_db_1 |
myapp_db_1 | PostgreSQL stand-alone backend 9.1.11
myapp_db_1 | 2014-01-27 12:17:03 UTC LOG: database system is ready to accept connections
myapp_db_1 | 2014-01-27 12:17:03 UTC LOG: autovacuum launcher started
myapp_web_1 | Validating models...
myapp_web_1 |
myapp_web_1 | 0 errors found
myapp_web_1 | January 27, 2014 - 12:12:40
myapp_web_1 | Django version 1.6.1, using settings 'figexample.settings'
myapp_web_1 | Starting development server at http://0.0.0.0:8000/
myapp_web_1 | Quit the server with CONTROL-C.

Õâ¸öʱºò£¬Äã¿ÉÒÔ¿ªÆôä¯ÀÀÆ÷£¬È»ºóÊäÈë localhost:8000 ¾Í¿ÉÒÔ·ÃÎÊÕâ¸öDjangoÓ¦Óá£

×¢Ò⣬µ±ÄãÅÜÆðÀ´Ó¦ÓÃÖ®ºó£¬¾Í¿ÉÒÔ³õʼ»¯Êý¾Ý¿âÁË¡£ÕâÀÇëÒ»¶¨Òª±£Ö¤fig upÊÇÔÚÔËÐÐÖУ¬²¢ÁíÍ⿪ÆôÒ»¸öÃüÁîÐд°¿ÚÖ´ÐÐÒ»ÏÂÃüÁ

$ fig run web python manage.py syncdb

Èç¹ûÄã·´¸´Ê¹ÓÃÁËfig upÖ®ºó£¬¿ÉÒÔÌå»áµ½ËüÒ»´ÎÐÔ»á°ÑwebºÍdbÁ½¸ö¾µÏñÒ»ÆðÆô¶¯£¬Èç¹ûÄãCONTROL-CÖ®ºó£¬Êý¾Ý¿âÒ²»áÍ£Ö¹·þÎñ¡£ÄãÉõÖÁ¿ÉÒÔfig run web /bin/bashµÄ·½Ê½Ö±½Ó½øÈëµ½ÈÝÆ÷Àï¿´¿´¡£

5. Wordpress¿ª·¢»·¾³ÅäÖÃÏê½â

FigÒ»Ñù¿ÉÒÔÓ¦¸¶PHPÓ¦ÓõĿª·¢ÐèÇó¡£

Ê×ÏÈ£¬´´½¨Ò»¸öDockerfileÀ´Ö§³ÖÉú³É¿ª·¢ÓÃImage¡£

$ curl https://wordpress.org/latest.tar.gz | tar -xvzf -

ÒÔÉÏÕâÌõÃüÁî´´½¨ÃûΪ wordpress µÄĿ¼¡£½øÈëµ½´ËĿ¼£¬´´½¨¾µÏñÎļþ Dockerfile£¬ÄÚÈÝÈçÏ£º

FROM stackbrew/ubuntu:13.10
RUN apt-get update && apt-get install php5 php5-mysql -y
ADD . /code

ÏÂÒ»²½´´½¨ fig.yml£¬Ëü½«¶¨Òå³öweb·þÎñºÍmysql db·þÎñ¡£

web:
build: .
command: php -S 0.0.0.0:8000 -t /code
ports:
- "8000:8000"
links:
- db
volumes:
- .:/code
db:
image: mysql
environment:
MYSQL_DATABASE: wordpress
MYSQL_ROOT_PASSWORD: wordpress

wordpressÓÐÒ»¸öÖ§³ÖÎļþÐèÒªÐ޸ģ¬ËüÊÇwp-config.php:

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', 'wordpress');
define('DB_HOST', getenv("DB_1_PORT_3306_TCP_ADDR") . ":" . getenv("DB_1_PORT_3306_TCP_PORT"));
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');

$table_prefix = 'wp_';
define('WPLANG', '');
define('WP_DEBUG', false);

if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');

require_once(ABSPATH . 'wp-settings.php');

ÒÔÉÏÈý¸öÎļþ¶¼Ð޸ĺ󣬾ͿÉÒÔÔÚ´ËĿ¼ÏÂÔËÐÐ fig upÀ´Æô¶¯wordpress¡£¿ÉÒÔʹÓÃä¯ÀÀÆ÷·ÃÎÊlocalhost:8000 ä¯ÀÀWordpressÊ×Ò³¡£

6. ½áÂÛ

ͨ¹ýFigÀ´¹¹½¨»ùÓÚDockerµÄ¿ª·¢»·¾³¿ÉÒÔÈÃÎÒÃǵĿª·¢Ê°빦±¶¡£ÆäʵÈç¹û¶ÁÕß°´ÕÕÎҵIJ½ÖèÒ»²½Ò»²½´î½¨¿ª·¢»·¾³£¬ÈÔÈ»»áÓкܶàÌôÕ½¡£

Ê×ÏÈ£¬ÒòΪ¹úÄÚ´ø¿íµÄÏÞÖÆ£¬´Ó¹Ù·½ÏÂÔØImageÊÇÒ»¸ö³¤Ê±¼äµÈ´ýµÄ¹ý³Ì¡£¼´Ê¹Docker¹«Ë¾ÒѾ­Ê¹ÓÃÁËCDN·þÎñ£¬µ«ÔÚ¹úÄÚÍøÂçʹÓÃÈÔÈ»ºÜÂý¡£ÎªÁËÄÜ¿ìËÙÏÂÔØ£¬ÎÒ»¹³£±¸Ò»ÌõVPNÏß·×÷ΪÊý¾ÝͨµÀÀ´ÏÂÔØImage¡£Ä¿Ç°ÕâÊÇ×îÀíÏëµÄ·½Ê½£¬¿ÉÒÔ½ÚÊ¡ºÜ¶à¿ª·¢Ê±¼ä¡£

µÚ¶þ£¬fig up²¢²»Äܱ£Ö¤ImageÄÜÒ»´Î³É¹¦¡£µ«²»ÐèÒª»ÒÐÄ¡£Äã¿ÉÒÔfig run web /bin/bashÖ±½Óµ½ÈÝÆ÷ÀïÃæµ÷ÊÔ¡£ÎÒÓöµ½¹ý¶à´Î·Ñ½âµÄÎÊÌâ¶¼ÊÇÖ±½ÓÔÚÀïÃæÅÜÃüÁî½â¾öµÄ¡£µ±ÄãÍ˳öʱ£¬fig»á×Ô¶¯¸üе½ÏàÓ¦µÄImageÀï¡£µ±ÄãÔÙ´Îfig up£¬Ëü»áʹÓÃÐÂImageÈ¥´´½¨Õâ¸öÔËÐÐÈÝÆ÷¡£

µÚÈý£¬fig up»á´´½¨Á½¸öÒÔÉϵÄÈÝÆ÷ʵÀý£¬ÔÚÍ˳öÈÝÆ÷ºóÔÙ´ÎÆô¶¯fig up£¬²¢²»»áÖØÓÃ֮ǰÍ˳öµÄÈÝÆ÷ʵÀý£¬¶øÊÇн¨ÈÝÆ÷ʵÀý¡£Ïñfig upÕâÀà³£ÓÃÃüÁîÔËÐжà´ÎÖ®ºó»áµ¼Ö¹ýÆÚµÄÈÝÆ÷ÎļþÈÔÈ»´æ´¢ÔÚÄãµÄ¿ª·¢»úÆ÷Éϲ¢Õ¼ÓÃÓ²Å̿ռ䣬²¢ÇÒFig»¹Ã»ÓÐÌṩ¶ÔÓ¦µÄÃüÁî×Ô¶¯ÇåÀíËüÃÇ¡£Ä¿Ç°¿ÉÒÔ½â¾öµÄ°ì·¨ÊÇÖ±½ÓʹÓÃDocker rm/rmiÃüÁîÊÖ¹¤Çå³ý¡£

ÒÔÉÏ×ܽá³öµÄʵս¾­Ñ飬ÈÔÈ»²»ÄÜÑÚ¸ÇFigÌØÓеÄÁÁµã£ºÔËÓÃFig¿ÉÒÔ¶¨ÒåͳһÔËÐв½Ö裬Èò¿Êð»·¾³¿ÉÒÔÍêÈ«µÄ¸ôÀëÔÚÒ»¸ö¶ÀÁ¢µÄÈÝÆ÷»·¾³À²¢ÇÒÕâ¸ö¸ôÀë»·¾³¿ÉÒÔÔÚ¿ª·¢¡¢²âÊÔ¡¢Éú²ú¶à¸ö²½ÖèÖб£³ÖÒ»Ö¡£µ±Ç°FigÏîÄ¿»¹ºÜÄêÇᣬÐèÒª´ó¼Ò¶à²ÎÓëÏîÄ¿µÄÌÖÂÛ£¬Ìá³ö×Ô¼ºµÄÎÊÌâ²ÅÄÜÈÃFig¸üºÃʹÓ㬸ü¶àÐÅÏ¢¿ÉÒÔµ½ÕâÀï²éÔÄ¡£

   
2452 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ