热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker实战初级1

第1章docker容器1.1什么是容器容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的文件系统,ip地
第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

      

  

 

转:https://www.cnblogs.com/adwlj/p/10188210.html



推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • 在 CentOS 7 环境中使用 MySQL 5.6 镜像启动数据库时遇到权限问题,本文将详细探讨并提供解决方案。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
author-avatar
小宇宙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有