赞
踩
1.Docker是世界领先的软件容器化平台;
2.主要是围绕image(镜像)和container(容器)工作;
3.Docker的客户端通过命令行或者客户端向Docker的服务端发起创建容器的请求;服务端接收请求之后,到镜像文件仓库管理器中拉取相应的镜像文件,并运用该镜像文件,运行过程中的镜像文件就是容器。容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象。
Docker engine
Docker machine
Docker network
Docker服务端:docker daemon就是docker的主服务
Docker客户端:docker的客户端分命令和API两种类型
Docker仓库:统一标准化管理镜像。(Registry)
Docker 镜像:镜像是容器通过打包而来的,诸如redis,nginx镜像。镜像通过实例化创建容器。
Docker 容器:容器是镜像的实例化对象,由镜像生成,生成的容器又能打包生成镜像。
将应用及依赖一起打包成标准的单元:
1.包含了完整程序和依赖包,甚至包含应用需要的最小化操作系统
2.镜像移植到任何linux环境下都可以直接运行(需要docker engine)
3.轻量、开放、安全
VM:
1.资源占用多,虚拟机需要独占内存和硬盘空间;
2.冗余多,虚拟机是完整的操作系统,一些必要的操作,例如用户登录等;
3.相较于Docker来说,启动慢,需要启动操作系统。
Docker:
1.启动快,基于宿主操作系统的Docker,容器里面的应用直接是底层系统的进程,所以启动容器相当于启动一个系统进程,速度快很多;
2.资源占用少,容器只占用需要的资源;
3.体积小,相较于VM,不包含操作系统以及其它文件,所以容器文件体积非常小;
4.部署方便,多个服务之间隔离性好;
1.每个容器都可以是独立的服务
2.服务的安装、部署和运维更加便捷
3.开发人员和运维人员的工作区分得更清晰
4.程序员再也不必拘泥于特定的语言,而只需要维护各自的Dockerfile
AutoScaling成为可能
镜像:
1.什么是镜像:
(1)文件和meta data的集合;
(2)分层的,并且每一层都是可添加和删除的,能成为一个新的image;
(3)image 本身是 read-only的
2.镜像层:镜像可以看成是由多个镜像层叠加起来的一个文件系统(通过UnionFS与AUFS文件联合系统实现),镜像层也可以简单理解为一个基本的镜像,而每个镜像层之间通过指针的形式进行叠加。
Id:镜像层id;
Layer Metadata:元数据,包含了Docker构建和运行的信息和父层的层次信息;
Pointer to Parent Layer:镜像层指针,如果一个层没有这个指针,说明它处于最底层;
3.Image:镜像是一堆只读层的统一视角,除了最底层没有指向外,每一层都指向它的父层。统一文件系统( Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在。在用户的角度看来,只存在一个文件系统。镜像每一层都是不可写的,都是只读层。
容器:
1.什么是容器:
(1)通过Image创建(copy);
(2)在Image layer 之上建立一个 container layer(可读写);
(3)类比面向对象:Image=>类; container=>实例对象
(4) Image负责app的存储和分发,container负责运行app;
2.容器的构成(一层读写+多层只读层)
3.Running Container(运行态容器,一层读写层+多层只读层+隔离的进程空间和包含其中的进程)
1.Docker命令:
(1)systemctl start docker(启动docker)
(2)systemctl stop docker(关闭docker)
(3)systemctl restart docker(重启docker)
(4)systemctl status docker(查看docker状态)
(5)docker version(查看docker版本号信息)
(6)docker info(查看docker详细信息)
2.镜像命令:
显示镜像:
(1)docker images -a(显示所有镜像(包含名称为none))
(2)docker images -aq (只显示id)
(3)docker images name:withtag
(4)docker images --no-trunc (显示完整id)
(5)docker images -aq --no-trunc (显示所有镜像的完整id)
(6)docker images --filter “dangling=true”(仅显示none镜像)
(7)docker images --digests(显示摘要)
(8)docker images --format “table {{.ID}}\t{{.Repository}}\t{{.Tag}}”
删除镜像:
(1)docker rmi test
(2)docker rmi -f test(强制删除镜像)
(3)docker rmi $(docker images -f "dangling=true" -q)(删除所有none)
搜索镜像:
(1)docker search mysql(镜像名)
(2)docker search --filter=STARS=1000 mysql(搜索STARS大于1000的mysql镜像)
拉取镜像:
(1)docker pull mysql (从docker仓库拉取最新版的mysql镜像文件)
(2)docker pull mysql:5.5.0(从docker仓库拉取指定版本的mysql镜像文件)
保存镜像:
(1)docker save mysql -o /myImage.tar
加载镜像:
(1)docker load -i myImage.tar
3.容器命令:
创建容器:
(1)docker run --name redis -d -p 6379:6379 redis
(2)docker run --name redis2 -d -p 6378:6379 redis
(3)docker run -itd --redis3 -d -p 6377:6379 redis
(4)docker run -itd --name redis001 -p 8888:6379 redis:5.0.5 /bin/bash
停止容器:
(1)docker stop redis docker stop redis2
(2)docker kill redis(强制停止)
启动容器:
(1)docker start redis
容器提交成镜像:
(1)docker commit redis redis3
删除容器:
(1)docker rm redis(只有停止的容器才能删除)
查看容器:
(1)docker ps(查看正在运行的容器)
(2)docker ps -a(查看所有容器,包括运行和停止的容器)
将容器打包成镜像文件:
(1)docker -a=”autor_name” -m=”message” containerID ImageName:tag
例如:
docker -a=”lxb” -m=”打包mysql成镜像文件” a7c737qwe731 mySQL:1.0
参考文献:
Docker容器和镜像的区别:
https://blog.csdn.net/MyySophia/article/details/108136229
Docker的优缺点:
https://blog.csdn.net/GV7lZB0y87u7C/article/details/93806070
Docker简介:
https://blog.csdn.net/LiaoHongHB/article/details/103157336
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。