Docker基础
Docker 是一个开源的应用容器引擎,基于Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker最早是在Ubuntu 12.04上开发实现的;
Red Hat则从RHEL6.5开始对Docker进行支持。
而后Windows和Mac上也相应有了Docker版本支持。
在Docker容器技术出现之前,Linux上是已经有一个docker的工具的,但此docker非彼Docker。
这个docker是一个窗口停靠栏程序,就像苹果的Mac系统中的dock那个程序一样的一个工具。
为了区分开来,我们以Docker和docker来进行区分。
Docker:指容器技术。
docker:指窗口停靠栏程序。
Docker技术出来后,因为Linux系统上已经有了docker这个工具,所以Docker软件名也不能跟人家重名啊,要不然没办法安装。
由于那个时候Docker的官网是docker.io,所以就在软件名称上加了io的后缀,在Ubuntu中就是docker.io,在CentOS中就是docker-io。
但是虽然软件名跟docker程序不一样了,但软件安装后的操作命令还是一样的,都是docker的这个命令,所以要安装Docker软件,要先看看有没有安装了那个停靠栏程序docker,有的话要先卸载才行,要不然执行的命令是不对的。
这个时期要安装Docker,就要用docker加io后缀的方式来安装。
Docker容器使用docker.io和docker-io为软件名,主要是前期的一段时间。
后来随着Docker的发展,软件包名改成了docker-engine,不同系统中名称达到了统一。
再后来,随着Docker技术的火爆,在征得docker停靠栏程序作者同意下,原先的停靠栏程序docker名称改掉了,改成了wmdocker,Docker容器技术的软件包名才正式成了docker这个名称,Docker软件包的名称又得到了一次完全的统一。
到Docker1.13.1版本之前,Docker软件包的名称有两次变化,从docker-io(docker.io)到docker-engine,再到docker。
Docker发展到1.13.1版本号后,Docker公司把Docker分成了社区版(免费)Docker CE和商业版(付费)Docker EE两种形式,并且版本号命名方式也改了,以前是那种常用的版本号命令方式,比如0.1、0.2、1.0之类的,现在分社区和商业版后,版本号是“年.月”的形式命名的,比如2019年10月发布的,版本号就是19.10。
所以在Docker1.13.1之后,直接是Docker-ce 17.03.0版本了,也就是2017年03月发布的。
现在要安装最新版的Docker软件包,就是使用docker-ce这个名称了,如果是商业版的就是docker-ee了。
目前docker的默认存储引擎为overlay2,不同的存储引擎需要相应的文件系统支持,如需要磁盘分区的时候传递d-type稳健分层功能,即需要传递内核参数并开启格式化磁盘的时候指定的功能。
存储引擎的选择文档
AUFS
AUFSAnotherUnionFileSystem是一种UnionFS。V2版本后更名为 advanced multi‐layered unification fileystem,即高级多层统一文件系统。所谓UnionFS就是把不同物理位置的目录合并mount到同一个目录中。简单来说就是支持将不同目录挂载到同一个虚拟文件系统下的文件系统。这种系统可以一层一层的叠加修改文件。无论底下有多少层都是只读,只有最上层的文件系统是可读写。当需要修改一个文件时,AUFS创建该文件的一个副本。使用CoWCopy-on-Write将文件从只读层复制到可写层进行修改,结果也保留在可写层、在Docker中。底下的制度层就是image,可写层就是Container。
Overlay
一种Union FS文件系统,Linux内核3.18后支持
Overlay2
overlay的升级版,到目前为止,所有Linux发行版推荐使用的存储类型
devicemapper
是CentOS和RHEL的推荐存储驱动程序,但是依赖于direct-lvm,存在空间受限的问题,虽然可以通过后期配置解决;因为之前的内核版本不支持overlay2(集中在Centos/RHEL7.2之前版本);但当前较新版本Centos和RHEL现已经支持overlay2。
https://www.cnblogs.com/youruncloud/p/5736718.html
zfs/btrfs(Oracle-2007)
目前没有广泛应用;这些文件系统允许使用高级选项,例如创建“快照”,但需要更多的维护和设置。并且每一个都依赖于正确配置的后备文件系统。
vfs
用于测试环境,适用于无法适用Cow文件系统的情况。此存储驱动程序的性能很差,通常不建议在生产中使用。
1)overlay存储驱动程序已在Docker Engine-Enterprise 18.09中弃用,并将在以后的版本中删除。建议将overlay存储驱动程序的用户迁移到overlay2。
2)devicemapper存储驱动程序已在Docker Engine 18.09中弃用,并将在以后的版本中删除。建议将devicemapper存储驱动程序的用户迁移到overlay2。
建议使用overlay2存储驱动程序。首次安装Docker时,默认情况下使用overlay2。早期版本,默认情况下会使用aufs。如果要在新版本中使用aufs,则需要对其配置,并且可能需要安装其他软件包,例如linux-image-extra。
对于Docker,支持文件系统是所在的文件系统 /var/lib/docker/。一些存储驱动程序仅适用于特定的后备文件系统。
配置 Docker 存储驱动非常简单,只需要修改配置文件即可。
绛旓細鍓嶉潰璁茶繃闀滃儚浣跨敤鐨勬槸鍒嗗眰瀛樺偍锛屽鍣ㄤ篃鏄姝ゃ傛瘡涓涓鍣ㄨ繍琛屾椂锛屾槸浠ラ暅鍍忎负鍩虹灞傦紝鍦ㄥ叾涓婂垱寤轰竴涓綋鍓嶅鍣ㄧ殑瀛樺偍灞傦紝鎴戜滑鍙互绉拌繖涓负瀹瑰櫒杩愯鏃惰鍐欒屽噯澶囩殑瀛樺偍灞備负瀹瑰櫒瀛樺偍灞傘傛寜鐓 Docker 鏈浣冲疄璺电殑瑕佹眰锛屽鍣ㄤ笉搴旇鍚戝叾瀛樺偍灞傚唴鍐欏叆浠讳綍鏁版嵁锛屽鍣ㄥ瓨鍌ㄥ眰瑕佷繚鎸佹棤鐘舵佸寲銆傛墍鏈夌殑鏂囦欢鍐欏叆鎿嶄綔锛岄兘...
绛旓細鏂瑰紡涓锛氫娇鐢 yum 瀹夎 Docker锛圕entOS 7涓嬶級Docker 瑕佹眰 CentOS 绯荤粺鐨勫唴鏍哥増鏈珮浜 3.10 锛屾煡鐪嬫湰椤甸潰鐨勫墠鎻愭潯浠舵潵楠岃瘉浣犵殑CentOS 鐗堟湰鏄惁鏀寔 Docker 銆 閫氳繃 鍛戒护鏌ョ湅浣犲綋鍓嶇殑鍐呮牳鐗堟湰 瀹夎 Docker 浠 2017 骞 3 鏈堝紑濮 docker 鍦ㄥ師鏉ョ殑鍩虹涓婂垎涓轰袱涓垎鏀増鏈: Docker CE 鍜 Docker EE銆
绛旓細1. dockerfile 鐨勫熀鏈畾涔 2. dockerfile 鐨勫熀鏈粨鏋 3. dockerfile 鐨勫父鐢ㄦ寚浠 FROM :鎸囧畾鍩虹闀滃儚,蹇呴』鏄涓涓懡浠 MAINTAINER :缁存姢鑰呬俊鎭 RUN :鏋勫缓闀滃儚鏃舵墽琛岀殑鍛戒护 ADD :灏嗘湰鍦版枃浠舵坊鍔犲埌瀹瑰櫒涓 COPY 鍔熻兘鍜 ADD 绫讳技,鍖哄埆濡備笅 CMD :鏋勫缓瀹瑰櫒杩...
绛旓細鍓嶉潰浠嬬粛浜嗭細 Docker瀹瑰櫒缃戠粶-鍩虹绡 鍓嶆枃璇村埌瀹瑰櫒缃戠粶瀵筁inux铏氭嫙鍖栨妧鏈殑渚濊禆锛岃繖涓绡囩珷鎴戜滑灏嗕竴鎺㈢┒绔燂紝鐪嬬湅Docker绌剁珶鏄庝箞鍋氱殑銆傞氬父锛孡inux瀹瑰櫒鐨勭綉缁滄槸琚殧绂诲湪瀹冭嚜宸辩殑Network Namespace涓紝鍏朵腑灏卞寘鎷細缃戝崱锛圢etwork Interface锛夈佸洖鐜澶囷紙Loopback Device锛夈佽矾鐢辫〃锛圧outing Table锛夊拰iptables...
绛旓細銆傚埗浣滈暅鍍忔椂锛岄渶缂栧啓Dockerfile锛屽鍖呭惈鍩虹闀滃儚銆佺淮鎶よ呬俊鎭佽嚜瀹氫箟鐩綍鍜屽惎鍔ㄥ懡浠ゃ傛瀯寤洪暅鍍忋佽繍琛屽苟鏌ョ湅瀹瑰櫒鐘舵佷篃鏄噸瑕佹楠ゃ傛渶鍚庯紝灏嗛暅鍍忔帹閫佸埌闃块噷浜戜粨搴擄紝闇瑕佺櫥褰曞苟浣跨敤鐗瑰畾鍛戒护锛岄獙璇侀暅鍍忕増鏈槸鍚︽垚鍔熶笂浼犮備互涓婃暀绋嬭缁嗗睍绀轰簡浠庨儴缃插埌浣跨敤鐨勬瘡涓姝ワ紝纭繚鍦 CentOS 绯荤粺涓婇『鍒╄繍琛 Docker銆
绛旓細3銆佹洿鏂板苟瀹夎Docker-CE 瀹夎鍑嗗宸ヤ綔 2.寮鍚疍ocker鏈嶅姟 杩愯docker version 濡傛灉鍑虹幇浠ヤ笅鎯呭喌锛岃鏄庡綋鍓嶇敤鎴锋病鏈 root鐩稿叧鎿嶄綔鏉冮檺 鏃爎oot鏉冮檺 瑙e喅鎬濊矾 鍏堟煡鐪嬫湁澶氬皯闀滃儚 杩愯docker run hello-world 娴嬭瘯鍛戒护锛屽鏋滃嚭鐜颁笅鏂圭孩妗嗗唴娑堟伅锛岃瘉鏄庡畨瑁呮垚鍔 3.鏌ョ湅docker鍩烘湰淇℃伅鍜岀増鏈 1.鏋勫缓Nginx鍩虹闀滃儚 鏌ヨ...
绛旓細濡傛灉鎯冲垹闄ゅ鍣ㄦ垨鑰呴暅鍍,鍙互浣跨敤rm鍛戒护,娉ㄦ剰:鍒犻櫎闀滃儚鍓嶅繀椤诲厛鍒犻櫎浠ユ闀滃儚涓鍩虹鐨勫鍣ㄣ [root@xxx ~]# docker rm container_name/container_id [root@xxx ~]# docker rmi image_name/image_id 闀滃儚鍏朵粬鎿嶄綔鎸囦护: [root@xxx ~]# docker save -o centos.tar xianhu/centos:git # 淇濆瓨闀滃儚, -o涔熷彲浠ユ槸...
绛旓細3銆Dockerfile鏄竴涓枃鏈枃浠讹紝鍏朵腑鍖呭惈浜嗘瀯寤篋ocker闀滃儚闇瑕佹墽琛岀殑鍛戒护搴忓垪銆備娇鐢dockerbuild鍛戒护浠嶥ockerfile涓鍙栨寚浠ゆ潵鏋勫缓闀滃儚銆4銆佹瀯寤烘寚浠ょ敤浜庢瀯寤篿mage锛屽叾鎸囧畾鐨勬搷浣滀笉浼氬湪杩愯image鐨勫鍣ㄤ笂鎵ц锛涜缃寚浠ょ敤浜庤缃甶mage鐨勫睘鎬э紝鍏舵寚瀹氱殑鎿嶄綔灏嗗湪杩愯image鐨勫鍣ㄤ腑鎵ц銆(1)FROM(鎸囧畾鍩虹image)鏋勫缓鎸囦护...
绛旓細闀滃儚鏄 Docker 杩愯瀹瑰櫒鐨勫墠鎻愶紝Docker 闀滃儚鍙互鐪嬩綔鏄竴涓壒娈婄殑鏂囦欢绯荤粺锛岄櫎浜嗘彁渚涘鍣ㄨ繍琛屾椂鎵闇鐨勭▼搴忋佸簱銆佽祫婧愩侀厤缃瓑鏂囦欢澶栵紝杩樺寘鍚簡涓浜涗负杩愯鏃跺噯澶囩殑涓浜涢厤缃弬鏁帮紙濡傚尶鍚嶅嵎銆佺幆澧冨彉閲忋佺敤鎴风瓑锛夈傞暅鍍忎笉鍖呭惈浠讳綍鍔ㄦ佹暟鎹紝鍏跺唴瀹瑰湪鏋勫缓涔嬪悗涔熶笉浼氳鏀瑰彉銆傚浜docker闀滃儚锛屽畼鏂圭殑瀹氫箟濡備笅: An ...
绛旓細Alpine 鏄紬澶 Linux 鍙戣鐗堜腑鐨勪竴鍛橈紝鍜 CentOS銆乁buntu銆丄rchlinux 涔嬬被涓鏍凤紝鍙槸涓涓彂琛岀増鐨勫悕瀛楋紝鍙风О灏忓阀瀹夊叏锛屾湁鑷繁鐨勫寘绠$悊宸ュ叿 apk 銆侫lpine 闈炲父闈炲父灏忥細100M vs 5M 锛佸畼鏂 Alpine 闀滃儚鐨勬枃妗o細 http://gliderlabs.viewdocs.io/docker-alpine/ 浣嗘槸 Alpine 鐨勫皬鏄湁浠d环鐨勶紝鍦ㄤ笉杞绘槗闂...