docker 摘要(入门版)
Docker
安装
macOS或者windows
- 下载boot2docker工具
CentOS
- yum install docker-io -y
- systemctl start docker
docker摘要
docker虚拟化
- 只虚拟User space
- 一台机器可以运行20-50个container
- 启动速度快
- 对内核有要求(不能像VMware一样可以安装mac,windows和linux)
- 用于大数据,分布式和集群
container实现
- cgroup(内核中对资源的限制机制,通过控制进程(一个container实例)来限制)
- namespace(每一个容器都是有一个自己网络进程的独立的虚拟环境,实现容器间的隔离
- chroot(文件系统的隔离,有一个真实的物理文件系统(物理机上),其他的都是虚拟的文件系统(虚拟的文件系统在内存中))
以上,cgroup,namespace,chroot都是在linux中,也就是直接调用linux,后来为了跨平台,将上面的封装成了libcontainer库,让docer依赖于它
- pid,容器有自己独立的进程表和1号进程
- net,容器有自己的network info
- ipc,container之间的通信
- mnt,每个容器都有自己唯一的目录挂载,是真实的挂载目录的子目录
utc,有独立的hostname和domain
层次
- server -> hostOS -> docker engine -> app1
使用aufs实现分层的文件系统管理
- Image是一种文件系统,里面必须有操作系统或者软件,docker中的系统Image很小,因为只包含很好的最核心的部分,每一个那么多的外围
- 只读为Image,可写为container,image是java中的class,container是对象
- Image类似一个单链表系统,每一个image包含一个指向parent image的指针
- 每一个parent image的image是base image
- 层次: debain image(base image) -> apache image -> container
- 一般base image是操作系统镜像
- 建议:一个container干一件事情
dockerfile(类似于makefile,是命令的集合)
- 描述一个Image的层次,就提描述了一个依赖次序,centos -> apache -> container
- 有了它可以完美的重现出开发环境,方便了测试人员
docker hub(镜像仓库,类似于github)
C/S运行
- client request -> server -> http server -> router -> job -> driver
使用
- docker pull {image name}
- docker images --no-trunc
- docker run [OPTIONS] IMAGE[:TAG] [CMD][ARG...]
- -name
- -i: iteract
- -t: tag
- -d: detach
- docker ps
- 不加上-a选项显示的正在运行的容器
- 加上-a显示所有的容器,包括停止的
- docker inspect [ID]
- docker logs
- docker build
- docker rm/kill/stop id, 关闭容器
- 批量操作: docker rm/kill/stop $(docker ps -a -q)
- docker run -t -i centos /bin/bash, -t表示是伪tty(就是给一个终端,如果每一个则容器一start就stop了),-i表示iteract(在有了终端这个前提之下,如果attach到容器中,可以执行交互式的命令,如果没有则什么都干不了),-d就是在后台运行,不会在执行了上面这个命令之后直接进入到容器中
- 进入到了交互之界面,使用exit退出,但是也会stop容器,如果要在一次进入到该容器,需要先start容器,则attach容器,因为-i会前台运行,使用-d则是相反的
- docker cp id:path hostpath
自己的摘要
- docker在某些方面和git是一样的,不如说对于image镜像都是通过版本控制的,我们从dockeruhb中pull下来镜像文件,如果我们将其启动为一个容器,如果我们在这个容器中进行了修改,docker会通过文件将其修改记录下来,我们可将当当前的容器commit成一个新的image,这就类似于git中的一个commit点
- 在确定一个容器的时候是使用container id
- 在确定一个image的时候,是通过name:tag,如果只有name则会选中所有的tag,tag表示一个版本
- 生成一个image(提交点)的方法有两种,docker commit 和 docker build,在docker build中就是在一个image中执行一个命令的集合在提交成一个新的image
docker 摘要(入门版)的更多相关文章
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- Docker技术入门与实战第2版-高清文字版
Docker技术入门与实战第2版-高清文字版 下载地址https://pan.baidu.com/s/1bAoRQQlvBa-PXy5lgIlxUg 扫码下面二维码关注公众号回复100011 获取 ...
- Docker新手入门:基本用法
Docker新手入门:基本用法 1.Docker简介 1.1 第一本Docker书 工作中不断碰到Docker,今天终于算是正式开始学习了.在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少 ...
- 微服务 + Docker + Kubernetes 入门实践 目录
微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...
- 【干货合集】Docker快速入门与进阶
收录待用,修改转载已取得腾讯云授权 Docker 在众多技术中,绝对是当红炸子鸡.这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术? Docker 也是云计算技术中较为热门的一 ...
- Docker从入门到实战(三)
Docker从入门到实战(三) 一:安装Docker 1. linux系统脚本安装 Docker基于linux容器技术,面向服务器端,Docker只能安装运行在64位计算机上(社区有对32位的支持), ...
- Docker从入门到实战(一)
Docker从入门到实战(一) 一:容器技术与Docker概念 1 什么是容器 容器技术并不是一个全新的概念,它又称为容器虚拟化.虚拟化技术目前主要有硬件虚拟化.半虚拟化.操作系统虚拟化等.1.1关于 ...
- 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】
最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...
随机推荐
- SQL Server Profiler (SQl跟踪器)的简单使用
一.工具介绍 在实际开发中,我们的数据库应用系统因为不可避免会存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等,所以会出现一系列问题,有问题不可怕,找对工具很重要.接下来我就介绍一款性能 ...
- Sqlserver风格规范
常见的字段类型选择 1.字符类型建议采用varchar/nvarchar数据类型 2.金额货币建议采用money数据类型 3.科学计数建议采用numeric数据类型 4.自增长标识建议采用bigint ...
- RESTful API概念解析
什么是restful? REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”. ...
- rsync入门
rsync是Linux/unix下一个用于远程文件(目录)同步的一个精巧的小工具程序,有很多文章讨论了其功能和实现原理,本文主要就不赘述了. 主要介绍下实践时使用的一些方法和细枝末节留作工作笔记以便日 ...
- Opencv博文收藏列表
opencv识别二维码:https://blog.csdn.net/jia20003/article/details/77348170 opencv视频:http://www.opencv.org.c ...
- JS 只创建一个元素
//判断有没有这个元素<div id="div"> if(my$("div").firstElementChild){ console.log(&q ...
- EasyUI学习笔记(三)—— message和menubutton的使用
一.message(消息框) 1.1 alert <script type="text/javascript"> $(function () { // alert方 ...
- github提交项目
1.建立git仓库 在GitHub上先新建一个仓库. 新建一个文件夹 cd git clone https://github.com/xxxxxxx/xxxxx.git 3.把你的项目拖进去,cd 进 ...
- Flask Web开发实战(入门、进阶与原理解析)
URL重定向 错误响应 > 如果你想手动返回错误响应,可以使用Flask提供的abort()函数. XML 上下文全局变量 [](https://img2018.cnblogs.com/blog ...
- python学习之路---day04
一:元组 元组案例:tuple=("张三","李四","王五","小六","大七",["1 ...