zoukankan      html  css  js  c++  java
  • 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

          

      

  • 相关阅读:
    Java Collection知识总结
    Java异常总结
    关于触发器
    关于事务
    git分支的创建、删除、切换、合并
    github项目上传管理
    如何在github上下载单个文件夹?
    常见的javascript跨站
    各类常用端口漏洞缺陷
    SEO优化实践操作
  • 原文地址:https://www.cnblogs.com/adwlj/p/10188210.html
Copyright © 2011-2022 走看看