±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ½ø»÷µÄСÑòÍÕ£¬Docker ÊÇÒ»¸ö¿ªÔ´µÄÓ¦ÓÃÈÝÆ÷ÒýÇæ£¬Èÿª·¢Õß¿ÉÒÔ´ò°üËûÃǵÄÓ¦ÓÃÒÔ¼°ÒÀÀµ°üµ½Ò»¸ö¿ÉÒÆÖ²µÄÈÝÆ÷ÖУ¬È»ºó·¢²¼µ½ÈκÎÁ÷ÐÐµÄ Linux »úÆ÷ÉÏ£¬Ò²¿ÉÒÔʵÏÖÐéÄ⻯¡£¡£ |
|
docker¼ò½é

dockerÊÇÒ»¸ö¿ªÔ´µÄÓ¦ÓÃÈÝÆ÷ÒýÇæ£¬¿ÉÒÔΪÎÒÃÇÌṩ°²È«¡¢¿ÉÒÆÖ²¡¢¿ÉÖØ¸´µÄ×Ô¶¯»¯²¿ÊðµÄ·½Ê½¡£docker²ÉÓÃÐéÄ⻯µÄ¼¼ÊõÀ´ÐéÄ⻯³öÓ¦ÓóÌÐòµÄÔËÐл·¾³¡£ÈçÉÏͼһÑù¡£docker¾ÍÏñÒ»ËÒÂÖ´¬¡£¶øÂÖ´¬ÉÏÃæµÄÿ¸öСÏä×Ó¿ÉÒÔ¿´³ÉÎÒÃÇÐèÒª²¿ÊðµÄÒ»¸ö¸öÓ¦Óá£Ê¹ÓÃdocker¿ÉÒÔ³ä·ÖÀûÓ÷þÎñÆ÷µÄϵͳ×ÊÔ´£¬¼ò»¯ÁË×Ô¶¯»¯²¿ÊðºÍÔËάµÄ·±ËöÁ÷³Ì,¼õÉٺܶàÒòΪ¿ª·¢»·¾³ÖкÍÉú²ú»·¾³ÖеIJ»Í¬Òý·¢µÄÒì³£ÎÊÌâ¡£´Ó¶øÌá¸ßÉú²úÁ¦¡£
dockerÈý¸öºËÐĸÅÄîÈçÏ£º
- ¾µÏñ£¨images£©£ºÒ»¸öÖ»¶ÁµÄÄ£°å£¬¿ÉÒÔÀí½âΪӦÓóÌÐòµÄÔËÐл·¾³£¬°üº¬Á˳ÌÐòÔËÐÐËùÒÀÀµµÄ»·¾³ºÍ»ù±¾ÅäÖá£Ï൱ÓÚÉÏͼÖеÄÿ¸öСÏä×ÓÀïÃæ×°µÄ¶«Î÷¡£
- ²Ö¿â£¨repository£©£ºÒ»¸öÓÃÓÚ´æ·Å¾µÏñÎļþµÄ²Ö¿â¡£¿ÉÒÔ¿´×öºÍgitlabÒ»Ñù¡£
- ÈÝÆ÷£¨container£©£ºÒ»¸öÔËÐÐÓ¦ÓóÌÐòµÄÐéÄâÈÝÆ÷£¬ËûºÍ¾µÏñ×î´óµÄÇø±ðÔÚÓÚÈÝÆ÷µÄ×îÉÏÃæÄÇÒ»²ãÊǿɶÁ¿ÉдµÄ¡£ Ï൱ÓÚÉÏͼÖеÄÿ¸öСÏä×ÓÀï¡£
docker°²×°
mac
¹ÙÍøÏÂÔØµØÖ·£¬µã»÷ÏÂÔØ¼´¿É¡£
liunx
´ò¿ªÖÕ¶Ë ÊäÈë
curl https://releases.rancher.com/install-docker/17.12.sh | sh |
µÈ´ý°²×°Íê³É¡£¼ì²éÊÇ·ñ°²×°³É¹¦¡£

»·¾³ÒѾ°²×°Íê±Ï¡£ÏÖÔÚÀ´¿ªÊ¼²¿ÊðÓ¦Óðɡ£
dockerʵս
×¼±¸¹¤×÷
³õʼ»¯Ò»¸öNodeJs³ÌÐò
ÒÔϲÙ×÷±ØÐëÒѾ°²×°ÁËNodeJS¡£Èç¹ûûÓа²×°Çë²ÎÕÕ֮ǰµÄ½Ì³Ì´«ËÍÃÅ
Ê×ÏÈ´´½¨Ò»¸ö¿ÕÎļþ¼Ð¡£²¢´´½¨ÒÔÏÂÎļþ£º
- server.js
- package.json
- Dockerfile
- dockerignore
mkdir docker_demo
cd docker_demo
touch server.js
touch package.json
touch Dockerfile
touch .dockerignore |
È»ºóÔÚserver.jsдÈë
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello docker';
});
app.listen(3000); |
ÔÚpackage.jsonÖÐдÈë
{
"name": "docker_demo",
"version": "0.1.0",
"private": true,
"scripts": {
"start": "node server.js"
},
"dependencies": {
"koa": "^2.5.0"
}
} |
²âÊÔ³ÌÐò¡£¿ØÖÆÌ¨ÊäÈë
ä¯ÀÀÆ÷´ò¿ª±¾µØ²âÊÔ,Èç¹ûÈçͼËùʾ¡£±íʾdemo´´½¨³É¹¦¡£Çë¼ÌÐøÍùÏ¡£

´´½¨dockerfileÎļþ
DockerfileÊÇÓÉһϵÁÐÃüÁîºÍ²ÎÊý¹¹³ÉµÄ½Å±¾£¬Ò»¸öDockerfileÀïÃæ°üº¬Á˹¹½¨Õû¸öimageµÄÍêÕûÃüÁî¡£Dockerͨ¹ýdocker buildÖ´ÐÐDockerfileÖеÄһϵÁÐÃüÁî×Ô¶¯¹¹½¨image.
ÔÚ.dockerignoreÎļþÀïÃæÐ´Èë´úÂë¡£±íʾ¹ýÂ˸ÃÀàÐ͵ÄÎļþ¡£ÀàËÆgitµÄ.gitignore
# Logs
logs
*.log
npm-debug.log*
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules
jspm_packages
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
.idea
.node_modules
node_modules
.vscode |
ÔÚDockerfileÎļþÖÐдÈëÒÔÏ´úÂ룺
#ÖÆ¶¨node¾µÏñµÄ°æ±¾
FROM node:8.9-alpine
#ÉùÃ÷×÷Õß
MAINTAINER robin
#ÒÆ¶¯µ±Ç°Ä¿Â¼ÏÂÃæµÄÎļþµ½appĿ¼ÏÂ
ADD . /app/
#½øÈëµ½appĿ¼ÏÂÃæ£¬ÀàËÆcd
WORKDIR /app
#°²×°ÒÀÀµ
RUN npm install
#¶ÔÍⱩ¶µÄ¶Ë¿Ú
EXPOSE 3000
#³ÌÐòÆô¶¯½Å±¾
CMD ["npm", "start"] |
¹¹½¨¾µÏñ
ʹÓÃbuildÃüÁî¹¹Ôì¾µÏñ,×¢ÒâºóÃæÄǸö.²»ÄÜÉÙ¡£
docker build -t docker_demo . |
robin:docker_demo robin$ docker build -t docker_demo .
Sending build context to Docker daemon 39.94kB
Step 1/7 : FROM node:8.9-alpine
---> 406f227b21f5
Step 2/7 : MAINTAINER robin
---> Using cache
---> 78d6cdbcfee2
Step 3/7 : ADD . /app/
---> 2cb30678612d
Step 4/7 : WORKDIR /app
Removing intermediate container e51377081039
---> c2b7d0f37d2d
Step 5/7 : RUN npm install
---> Running in da0c3946ca8d
npm notice created a lockfile as package-lock.json. You should commit this file.
added 38 packages in 3.323s
Removing intermediate container da0c3946ca8d
---> eecee87f10e2
Step 6/7 : EXPOSE 3000
---> Running in f3973cc168a4
Removing intermediate container f3973cc168a4
---> 2671a4c6deb4
Step 7/7 : CMD ["npm", "start"]
---> Running in dec529f754aa
Removing intermediate container dec529f754aa
---> 6ec73793d353
Successfully built 6ec73793d353
Successfully tagged docker_demo:latest |
µÈ´ý¾µÏñ¹¹ÔìÍê³É¡£È»ºóʹÓà imagesÃüÁî²é¿´¾µÏñ¡£

´Ëʱ¿ÉÒÔ¿´µ½imagesÒѾ¹¹ÔìÍê³É¡£ÏÖÔÚ¿ªÊ¼Æô¶¯images£¬²¢²âÊÔ¡£
#Æô¶¯¾µÏñ -d±íʾºǫִ́ÐУ¬-p 9000:3000±íʾָ¶¨±¾µØµÄ9000¶Ë¿ÚÒþÉäµ½ÈÝÆ÷ÄÚµÄ3000¶Ë¿Ú£¬docker_demoΪ¾µÏñÃû³Æ
docker run -d -p 9000:3000 docker_demo
#²é¿´ÈÝÆ÷
docker ps |

´Ëʱä¯ÀÀÆ÷´ò¿ªhttp://localhost:9000/,Èç¹ûÈçͼËùʾ¡£±íʾÈÝÆ÷ÔËÐÐÕý³£¡£

Èç¹û´Ëʱ±¾µØÎÞ·¨´ò¿ª¡£¿ÉÒÔʹÓÃlogÃüÁî²é¿´ÈÕÖ¾¡£¸ù¾ÝÈÕÖ¾Ð޸ĶÔÓ¦³öÏֵĶԷ½¡£
°ó¶¨docke hub
¾µÏñÒѾ´æÔÚÁËÎÒÃDZ¾»úÓ²ÅÌ£¬ÄÇÎÒÃÇʵ¼ÊÖÐҪôÉÏ´«µ½·þÎñÆ÷ÄØ£¿ÕâÀïͨ³£ÓÐ2¸ö·½·¨¡£Ò»Ö±ÊÇ×Ô¼º´î½¨¾µÏñ²Ö¿â±ÈÈ磨harbor£©,»¹ÓоÍÊǹٷ½µÄdocke hub£¬ÀàËÆgitlab¡£ÎÒÃÇÕâÀïÏÈÒÔdocke hubΪÁС£harbor·ÅÔÚÏÂÆª²©¿Í¡£Ê×ÏÈÐèҪע²ádocke hubÕ˺Å,¹ÙÍø×¢²áµØÖ·¡£È»ºóµÇ½¡£
robin:docker_demo robin$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:xxxxxx
Password:
Login Succeeded
robin:docker_demo robin$ |
µÇ½³É¹¦Ö®ºó¡£ÐèÒª¸øµ±Ç°images¡£Ìí¼Ótag,²¢push
#¸ñʽdocker tag ±êÇ©Ãû Óû§Ãû/±êÇ©Ãû
docker tag docker_demo robin365/docker_demo
#¸ñʽdocker push Óû§Ãû/±êÇ©Ãû
docker push robin365/docker_demo |
Íê³ÉÖ®ºó,¿ÉÒԵǽdocke hub²é¿´¸Õ¸ÕpushµÄ¾µÏñ¡£ÎÒÃÇ¿ÉÒÔÉèÖÃÕâ¸ö¾µÏñÊÇ·ñ¹«¿ª¡£Public£ºËùÓÐÈ˶¼¿ÉÒÔÏÂÔØ¡£Private£º±íʾ×Ô¼º²ÅÄÜÏÂÔØ¡£

ÕâÑùÎÒÃÇÒѾ°ÑimagesÉÏ´«µ½docke hubÁË,ÔÚÎÒÃÇÐèÒªÓõ½Õâ¸öimagesµÄʱºò¿ÉÒÔÖ±½Óͨ¹ýdocker pullÃüÁîÏÂÔØÊ¹ÓÃÁË¡£
µ½´Ë±¾½Ì³Ì½áÊø¡£Êµ¼ÊÏîÄ¿Öв¿Êð¿ÉÄÜ»á³öÏÖ¸÷ÖÖ¸÷ÑùµÄÎÊÌ⣬ÎÒÃÇÐèÒª¶à²é¿´log¡£¸ù¾ÝlogÈ¥×öÏàÓ¦Ð޸ġ£ºóÃæÎÒÒ²»áÕûÀí³öÓйØdockeÔÚ²¿ÊðnodejsÓ¦ÓÃÖеÄһЩ±È½ÏÈÝÒ׳ö´íµÄµØ·½¡£
dockerc ³£ÓÃÃüÁî
#²é¿´µ±Ç°docker°æ±¾
docker -v
#²é¿´µ±Ç°±¾µØËùÓоµÏñ
docker images
#¹¹Ôì¾µÏñ,Ó÷¨docker build -t ¾µÏñÃû³Æ .
docker build -t docker_demo .
#ÓÃÓÚÈÝÆ÷ÓëÖ÷»úÖ®¼äµÄÊý¾Ý¿½±´¡£Ó÷¨docker cp Ö÷»úÎļþµØÖ· ÈÝÆ÷ÄÚµØÖ·¡£12d7f14v45cvΪÈÝÆ÷id¡£
docker cp /www/runoob 12d7f14v45cv:/www/
#´´½¨Ò»¸öеÄÈÝÆ÷²¢ÔËÐУ¬-dΪºǫִ́ÐУ¬-p 9000:3000Ç°ÃæÎªÖ÷»ú¶Ë¿Ú£¬ºóÃæÊÇÈÝÆ÷¶Ë¿Ú¡£docker_demo¾µÏñÃû
docker run -d -p 9000:3000 docker_demo
#Æô¶¯Òѱ»Í£Ö¹µÄÈÝÆ÷
docker start docker_demo
#¹Ø±ÕÒѱ»Æô¶¯µÄÈÝÆ÷
docker stop docker_demo
#ÖØÐÂÆô¶¯ÈÝÆ÷
docker restart docker_demo
#ɱµôÒ»¸öÔËÐÐÖеÄÈÝÆ÷¡£
docker kill -s KILL docker_demo
#ɾ³ýÒ»¸ö»ò¶àÉÙÈÝÆ÷¡£-f :ͨ¹ýSIGKILLÐźÅÇ¿ÖÆÉ¾³ýÒ»¸öÔËÐÐÖеÄÈÝÆ÷-l :ÒÆ³ýÈÝÆ÷¼äµÄÍøÂçÁ¬½Ó£¬¶ø·ÇÈÝÆ÷±¾Éí-v :-v ɾ³ýÓëÈÝÆ÷¹ØÁªµÄ¾í
docker rm -f docker_demo¡¢docker_demo1
#ÔÚÔËÐеÄÈÝÆ÷ÖÐÖ´ÐÐÃüÁî¡£104e28f2f072ÈÝÆ÷id
sudo docker exec -it 104e28f2f072 /bin/bash
#ÁгöÈÝÆ÷¡£ -a:ËùÓÐÈÝÆ÷°üº¬Ã»ÓÐÔËÐеÄ
docker ps
#»ñÈ¡ÈÝÆ÷»ñÈ¡ÈÝÆ÷µÄÈÕÖ¾ 104e28f2f072ÈÝÆ÷id£¬-t:ÏÔʾʱ¼ä´Á
docker logs -f -t 104e28f2f072
#µÇ½¾µÏñ²Ö¿â
docker login
#»ñÈ¡¾µÏñ
docker pull
#ÉÏ´«¾µÏñ
docker push
#²é¿´Ö¸¶¨¾µÏñµÄ´´½¨ÀúÊ·¡£
docker history docker_demo |
|