docker实战---初级<1>
第1章 docker容器
1.1 什么是容器
容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的文件系统,ip地址,主机名等
1.2 容器与虚拟化的区别
linux容器技术,容器虚拟化和kvm虚拟化的区别
1. kvm虚拟化: 需要硬件的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程)
inux开机启动流程
bios开机硬件自检
根据bios设置的优先启动项
读取mbr引导
加载内核
启动第一个进程
2. 容器虚拟化:不需要硬件的支持。不需要模拟硬件,共用宿主机的内核,启动时间秒级(没有开机启动流程)
总结:
(1)与宿主机使用同一个内核,性能损耗小;
(2)不需要指令级模拟;
(3)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;
(4)避免了准虚拟化和系统调用替换中的复杂性;
(5)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
1.1 容器技术的发展过程:
一. chroot技术,新建一个子系统(https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/)
作业1:使用chroot监狱限制SSH用户访问指定目录和使用指定命令 https://linux.cn/article-8313-1.html
1. 实例: 新建一个Ubuntu子系统过程:(老男孩强哥授课)
1)下载一个ubuntu包(地址:https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/trusty/amd64/default/20181225_07%3A43/)
2)创建目录 cd /opt/ mkdir ubuntu
3)将下载好的ubuntu包上传至ubuntu目录中
4) tar xf rootfs.tar.xz
5)切换至ubuntu根目录下 chroot /opt/ubuntu
6)添加环境变量 export PATH=$PATH:/bin:/sbin
7)添加解析域名 a. 删除原有解析软连接 rm -rf /etc/resolv.conf b. 添加解析 echo ‘nameserver 223.5.5.5’ >/etc/resolv.conf
8)试ping一下223.5.5.5
9)试执行一下ubuntu命令下载Apache2 apt-get update(相当于centos yum cleanall) apt-get update install -y apache2
10)看在浏览器中访问一下ubuntu(先在宿主机上查看80端口是否起来)
二: linux容器(lxc) linux container(namespaces 网络命名空间 隔离环境 及cgroups 资源限制)
1). 安装epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装centos7源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2). 安装lxc
yum install lxc-* -y
yum install libcgroup* -y
yum install bridge-utils.x86_64 -y
3) 桥接网卡
[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
echo 'TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=virbr0' >/etc/sysconfig/network-scripts/ifcfg-eth0
[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr0
echo 'TYPE=Bridge
BOOTPROTO=static
NAME=virbr0
DEVICE=virbr0
ONBOOT=yes
IPADDR=10.0.0.11
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5' >/etc/sysconfig/network-scripts/ifcfg-br0
4)修改lxc默认配置
vi /etc/lxc/default.conf
修改第2行为:lxc.network.link = br0
##启动cgroup
systemctl start cgconfig.service
##启动lxc
systemctl start lxc.service
5)创建lxc容器
方法1:
lxc-create -t download -n centos6 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images -d centos -r 6 -a amd64
方法2:
lxc-create -t centos -n test
6)为lxc容器设置root密码:
[root@controller ~]# chroot /var/lib/lxc/centos6/rootfs passwd
Changing password for user root.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
7)为容器指定ip和网关
vi /var/lib/lxc/centos7/config
lxc.network.name = eth0
lxc.network.ipv4 = 10.0.0.111/24
lxc.network.ipv4.gateway = 10.0.0.254
8) ##启动容器
lxc-start -n centos7
最新文章
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
- 备份MYSQL出现:mysqldump: Got error: 1049: Unknown database &#39;test &#39;when selecting the data
- 【poj 3167】Cow Patterns(字符串--KMP匹配+数据结构--树状数组)
- 立即执行函数与window.onload作用类似
- html5 canvas 移动小方块
- arp:地址解析协议(Address Resolution Protocol)(来自维基百科)
- 【Android 界面效果14】RelativeLayout里常用的位置属性
- android获取其他应用权限(修改状态)
- PE文件结构整理
- HTML与CSS入门——第十四章 使用边距、填充、对齐和浮动
- selenium webdriver 学习笔记(一)
- 移动应用/APP的测试流程及方法
- 团队作业4——第一次项目冲刺(Alpha版本)2017.4.27
- 求求你别用SimpleDateFormat了!
- Spring框架基础(上)
- apache-jmeter-3.3的简单压力测试使用方法
- vue.js 精学记录
- 转:Eclipse中web项目部署至Tomcat步骤
- _mount_allowed
- @params、@PathVariabl和@RequestParam用法与区别
热门文章
- PHP 验证身份证
- 学习 Vim —— Vimtutor 总结笔记
- [转] Java程序员学C#基本语法两个小时搞定(对比学习)
- node环境配置
- hibernate 报query result offset is not supported
- 10_ for 练习 _ is Prime Number ?
- [LeetCode] N-ary Tree Level Order Traversal N叉树层序遍历
- ArcGIS AddIn 批量设置栅格图层背景色为透明
- python3 load Iris.data数据集出现报错key words: b&#39;Iris-setosa&#39;
- 学习java编程思想 第一章 对象导论