第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. servlet(一):Servlet的概念和运行流程

    概念: 狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指 任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者. Servl ...

  2. PostgreSQL自学笔记:与python交互

    与python交互教程 原文地址:https://www.yiibai.com/html/postgresql/2013/080998.html 1. Python psycopg2 模块APIs 连 ...

  3. 使用Callable接口创建线程和使用线程池的方式创建线程

    1.使用Callable接口的方式实现多线程,这是JDK5.0新增的一种创建多线程的方法 package com.baozi.java2; import java.util.concurrent.Ca ...

  4. vue全选与取消全选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. yum安装mysql5.7

    [root@ycj ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm //下载安装 ...

  6. css学习_css布局案例

    1.中间栏先加载  !!!(若不是这个条件的话  ,那可以用  calc 或者flex布局来实现  中间栏自适应,左右栏定宽) 2.中间栏自适应   width:100% 3.左右栏固定宽 左中右  ...

  7. VUE 参数共享问题

    **标黄 export default { data () { return { msg: "这是一个变量", xx:"", } }, mounted : fu ...

  8. 多线程之Executors基本使用

    Executors几种创建方式 https://www.cnblogs.com/yasong/p/9318522.html 线程池数如何设置 https://blog.csdn.net/u013276 ...

  9. 天梯赛练习题L2-006. 树的遍历

    题目链接 已知一棵树的后序遍历顺序和中序遍历顺序,求层次遍历的顺序: 树的四种遍历: 先序遍历:先访问根节点,再访问左子树,最后访问右子树 中序遍历:先访问左子树,再访问根节点,最后访问右子树 后序遍 ...

  10. vue-cli3快速原型开发

    先来讲一下,什么是快速原型开发. 当我们需要紧急或提前开发单独的一个页面时,有时候不需要在原项目中创建一个页面,再开发,我们可以单独的区开发这个项目,那么怎样单独的区开发这个项目呢,之前使用过vue- ...