学习docker

概述

为什么使用docker/docker为什么会出现?

Docker VS VM

docker容器不是虚拟机: 传统虚拟化技术是对硬件资源的虚拟,容器技术则是对进程的虚拟

从架构来看,Docker比虚拟化少了两层,取消了GuestOS层,使用 Docker Engine 进行调度和隔离,所有应用共用主机操作系统,因此在体量上,Docker较虚拟机更轻量级,在性能上优于虚拟化,接近裸机性能。从应用场景来 看,Docker和虚拟化则有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣

具体对比:
1. docker启动快速属于秒级别。虚拟机通常需要几分钟去启动。
2. docker需要的资源更少,docker在操作系统级别进行虚拟化,docker容器和内核交互,几乎没有性能损耗,性能优于通过Hypervisor层与内核层的虚拟化。;
3. docker更轻量,docker的架构可以共用一个内核与共享应用程序库,所占内存极小。同样的硬件环境,Docker运行的镜像数远多于虚拟机数量。对系统的利用率非常高
4. 与虚拟机相比,docker隔离性更弱,docker属于进程之间的隔离,虚拟机可实现系统级别隔离
5. 安全性: docker的安全性也更弱。Docker的租户root和宿主机root等同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机利用如Intel的VT-d和VT-x的ring-1硬件隔离技术,这种隔离技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离,这使得容器容易受到攻击。
6. 可管理性:docker的集中化管理工具还不算成熟。各种虚拟化技术都有成熟的管理工具,例如VMware vCenter提供完备的虚拟机管理能力。
7. 高可用和可恢复性:docker对业务的高可用支持是通过快速重新部署实现的。虚拟化具备负载均衡,高可用,容错,迁移和数据保护等经过生产实践检验的成熟保障机制,VMware可承诺虚拟机99.999%高可用,保证业务连续性。
8. 快速创建、删除:虚拟化创建是分钟级别的,Docker容器创建是秒级别的,Docker的快速迭代性,决定了无论是开发、测试、部署都可以节约大量时间。
9. 交付、部署:虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化;Docker在Dockerfile中记录了容器构建过程,可在集群中实现快速分发和快速部署;

docker-images

docker-file

dockerFile是用来构建docker镜像的文件

构建步骤:

1 编写一个dockerfile文件

2 docker build构建成为一个镜像

3 docke push 发布镜像(dockerHub,阿里云镜像仓库)

docker-compose

一个yml格式的编排工具

1. 安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2 增加可执行权限

sudo chmod +x /usr/local/bin/docker-compose

3 命令

docker-compose ps 查看

docker-compose stop 停止

docker-compose up 启动

docker-compose up -d 后台启动

docker-compose rm -fs 删除容器

Docker 命令大全

Docker 命令大全 | 菜鸟教程

笔记

docker 查看容器/镜像元数据

docker inspect id/name

docker run

docker run [OPTIONS] IMAGE [COMMAND]

[ARG..]

数据卷

外部挂载 双向绑定,docker容器数据的持久化

-v 容器内部路径 #匿名挂载

-v 卷名:容器内路径 #具名挂载

-v /宿主机路径:内容器路径 #指定路径挂载

-v abc:ABC:ro readOnly #只读

-v abc:ABC:rw readwrite #读写

进入容器

docker attach

docker exec #进入容器后开启一个新的终端,可以操作.

docker拷贝文件

定义:docker从容器内拷贝文件到宿主机

命令:docker cp 容器id:容器内路径 目的主机路径

创建自定义镜像

commit镜像

命令:

docker commit 提交容器成为一个新的副本

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

Dockerfile

定义:dockerfile就是用来构建docker镜像的构建文件,命令脚本,是面向开发的.

CMD是替换

NETRYOINT是追加

数据卷容器

定义:两个或多个容器之间实现数据同步

注意:是复制文件而不是共享文件,通过这个机制可以实现一些数据备份

命令: --volumes-from 容器id

dockerHub上传

docker login -u 用户名

docker push 用户名/镜像名:标签名

docker tar 旧镜像名 新镜像名

注意:仓库名跟镜像名同名

上帝视角docker

docker网络

每启动一个容器,docker就会给docker容器分配一个ip,我们只要装了docker,就会有一个网卡 docker0

桥接模式,使用的技术是:evth-pair

evth-pair

定义:是一对虚拟设备接口,他们 都是成对出现的.

他充当桥梁的角色,;连接各种虚拟网络设备

扩展:openstac docker容器之间的连接,ovs的连接都是使用evth-pari

docekr --link

定义: 在hosts配置中增加了一个ip

不建议用

自定义网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别说小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值