第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

docker实战---初级<1>的更多相关文章

  1. 【原创】Docker实战 Dockerfile最佳实践&&容器之间通信

    官方最佳实践文档 https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#from Docker实战(三十) ...

  2. Docker03 Docker基础知识、Docker实战

    1 Docker基础知识 1.1 什么是Docker Docker是一个可以装应用的容器,就像杯子可以装水.书包可以装书一样:docker官网 Docker是Docker公司开发的,并开源到GitHu ...

  3. Ubuntu Server下docker实战 02: docker进阶配置

    在上一篇文章里<Ubuntu Server下docker实战 01: 安装docker>,我们已经把docker安装起来了,并运行了一个hello-world 这一篇,我们继续讲进阶配置. ...

  4. [置顶] Docker学习总结(1)——Docker实战之入门以及Dockerfile(一)

    一.Docker是什么? 首先Docker是软件工业上的集装箱技术 回顾,在没有集装箱出现以前,传统运输行业中,会存在这些问题: 在运输过程中,货物损坏 装卸.运输货物,效率低下 运输手续繁多及运输环 ...

  5. Docker 实战—使用 Dockerfile 构建镜像

    Dockerfile 指令详解请访问:https://www.cnblogs.com/cloudfloating/p/11737447.html 使用 Alpine Linux 作为基础镜像 Alpi ...

  6. netcore 创建腾讯云私有镜像 发布到docker 实战

    上一篇博客写的 netcoer上传到docker ,编译 并发布,传送门:FineUICore基础版部署到docker实战 这是一种笨方法,理想的方法是,在本地编译成镜像,然后推送到镜像仓库,服务器的 ...

  7. Docker实战之Redis-Cluster集群

    概述 接上一篇Docker实战之MySQL主从复制, 这里是Docker实战系列的第二篇,主要进行Redis-Cluster集群环境的快速搭建.Redis作为基于键值对的NoSQL数据库,具有高性能. ...

  8. Docker实战之Consul集群

    前言 最近参加了几场 Java 面试,发现大多数的微服务实践还是 Eureka 偏多,鉴于笔者的单位选型 Consul,这里对 Consul 做简单总结. 该篇是 Docker 实战系列的第三篇.传送 ...

  9. Docker实战之Zookeeper集群

    1. 概述 这里是 Docker 实战系列第四篇.主要介绍分布式系统中的元老级组件 Zookeeper. ZooKeeper 是一个开源的分布式协调服务,是 Hadoop,HBase 和其他分布式框架 ...

随机推荐

  1. 6101 最优贸易 (双向spfa)

    描述C国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的 ...

  2. 在DOM加载之前insertScript

    起因 由于工作原因需要联调碧桂园的SDK 大概是以下代码,起初我是放在head中的,因为最初这样调试,包括线上环境都是OK的,可以获取到SDK的内容,换句话说js节点是可以插入到root内的,自从换了 ...

  3. 我的 Putty 配色方案

    首先,右键单击 Putty 顶部边框,在弹出菜单中选择 Change settings,进入颜色设置 Category->Window->Colours 然后,按以下参数配置进行修改: D ...

  4. 我的 FPGA 学习历程(02)—— 实验:点亮 LED 灯

    关于 Quartus 的操作可以使用 Quartus 自带的帮助,帮助中带有全套的操作教程. 中文网络教程链接(链接至 altera中文官网,点击观看) Quartus II 软件设计系列:基础 Qu ...

  5. CSS文字垂直居中的一些问题

    说到CSS文字垂直居中,很多初学者都喜欢用调整行高等于div高度的方式来达到效果, div { height:30px; line-height:30px; } 但其实这么做会遇到一个问题:多行文本溢 ...

  6. BZOJ5254 : [Fjwc2018]红绿灯

    显然所有询问都要经过至少$\sum d$,只需要考虑除了$\sum d$之外的等待红灯的时间. 将所有询问的时间模$g+r$,并按时间用set维护. 那么对于每个红灯,在set中可以找出$1$到$2$ ...

  7. mac下启动mysql

    mac下使用mysql有点蛋疼,每次都要找命令.可能不同版本或者安装方式mysql的位置不太一样, 可以使用locate mysql.server查找一下. # start sudo /usr/loc ...

  8. 2.7python简历心得(重点)

    2019-2-7 20:07:20 绝地求生被盗了,...因为群邮件木马导致! 正好不要想买显卡啦!又省了好多钱!!! 努力多学技能!并且深入了解,精通自己技能!!!坚持学习!! 要学会拓展自己的技能 ...

  9. Windows系统JDK安装配置

    JDK和JRE的安装 打开java的官方网站,下载安装程序,版本根据自己情况选择: 双击安装程序: 点击"下一步": 此处推荐默认路径安装,如果自定义安装目录,则需记住自定义的安装 ...

  10. 简化equals()方法的重写

    实例说明 在定义类时,属性可以是基本类型也可以是引用类型.当重写equals()方法时一会要用“==”来比较基本类型,一会要用equals()比较引用类型,这样代码看着有些混乱.为此推荐使用Commo ...