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电子书] ~ 杨保华 戴王剑 曹亚仑 ...
随机推荐
- ASP.NET MVC Controller 编程所涉及到的常用属性成员
Controller (System.Web.Mvc.Controller) 1.获取路由中的各个值 Request.RequestContext.RouteData.Values["id& ...
- 【连载】redis库存操作,分布式锁的四种实现方式[四]--基于Redis lua脚本机制实现分布式锁
一.redis lua介绍 Redis 提供了非常丰富的指令集,但是用户依然不满足,希望可以自定义扩充若干指令来完成一些特定领域的问题.Redis 为这样的用户场景提供了 lua 脚本支持,用户可以向 ...
- 「HAOI2016」放棋子
题目链接 戳这 前置知识 错位排序 Solution 我们可以观察发现,每一行的障碍位置对答案并没有影响. 于是我们可以将此时的矩阵化成如下形式: \[ 1\ \ 0\ \ 0\ \ 0\\ 0\ \ ...
- day02.3-元组内置方法
元组——tuple的定义:test = (11,"alex",(22,33),[44,55],True) 特点:1. 元组是可迭代对象 2. 元组中元素是有序的,但其不可修改,也不 ...
- MySQL参数log_bin_trust_function_creators
问题:执行创建函数的sql文件报错如下: [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA ...
- linux上使用tomcat及查看日志
启动 startup.sh #执行bin/startup.sh #启动tomcatbin/shutdown.sh #停止tomcattail -f logs/catalina.out #看tomcat ...
- 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication(最小割)
题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...
- requests库和urllib包对比
python中有多种库可以用来处理http请求,比如python的原生库:urllib包.requests类库.urllib和urllib2是相互独立的模块,python3.0以上把urllib和ur ...
- adb命令connect设备必须添加端口号
Android开发,一般使用adb远程连接设备,习惯性一个命令: adb connect 10.100.1.202 这几天发现一个问题,同一个命令,提示错误: adb connect 10.100.1 ...
- 如果将markdown视作一门编程语言可以做哪些有趣的事情?
如题,然后就有了为解决这个好奇而开的项目:https://github.com/racaljk/llmd 源码主要是parser+interpreter,其中parser使用sundown,然后生成l ...