第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. Java 使用blob对H5视频播放进行加密《java视频加密》

    1.创建一个H5 <video>标签 <video id="sound" type="video/mp4" controls="co ...

  2. Jarvis OJ 一些简单的re刷题记录和脚本

    [61dctf] androideasy 164求解器 50 相反 脚本如下: s='' a=113, 123, 118, 112, 108, 94, 99, 72, 38, 68, 72, 87, ...

  3. elasticsearch搜索框架的安装相关

    安装JAVA SE 百度一下JAVA SE,按照自己的平台,位数选择就是了, 这里遇到过一个坑,双击exe安装包一直无法打开jdk的安装,在任务管理器里面就一闪而过, 后来我卸载了所有JAVA的相关安 ...

  4. jvm领域优秀博主

    dh5724 不过csdn iteye 博客园信息均被自己删除,只在一些问答中和引用中有部分信息. redcreen 对jvm有深入认知. RednaxelaFX oracle java 编译器开发者 ...

  5. Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0 报错

    此报错经常出现,项目中使用的maven版本为3.2.5版本但是去写自动化脚本又需要去3.5.2版本.经常搞混,需要记录一下: 解决如下: 再次install如下: 验证成功!

  6. matplotlib 命令行画图保存

    服务器上没有图形界面,需要用matplotlib画图并直接保存成图片,然后下载到客户端查看. 1. 首先安装matplotlib: python -m pip install -U matplotli ...

  7. jupyter notebook 远程访问

    https://www.youtube.com/watch?v=LpQl0yeZzCU 在服务器端执行: jupyter notebook --ip 服务器的Ip地址 --allow-root --n ...

  8. json 函数

    一, json序列化和反序列化 JSON.stringify( ) —— 将对象序列化为JSON字符串 JSON.parse( ) —— 将JSON数据解析为Javascript对象 二,判断json ...

  9. __x__(34)0908第五天__ 定位 position

    position 定位 指将原始摆放到页面的任意位置. 继承性:no 默认值:static        没有定位,原始出现在正常的文档流中 可选值: static :    默认值,元素没有开启定位 ...

  10. CentOS7 安装 jexus-5.8.2-x64

    前要提示: 如果你要安装asp.net 请参考: http://www.cnblogs.com/xiaoruilin/p/7867823.html 背景: CentOS7 Mono (Mono JIT ...