zoukankan      html  css  js  c++  java
  • docker的基本概念

    docker的基本概念

    提到docker容器化技术,不由自主就会想到虚拟机技术。容器化技术和虚拟机有哪些区别呢

    • 容器和宿主机共享kernel,容器的kernel版本与宿主机一致
    • 虚拟机能够模拟输入输出,让guest os能够起来,也叫hypervisor,启动很慢
    • docker容器化不模拟输入输出,只是做宿主机输入输出的搬运工。(前提镜像和宿主机架构一致,x86上不能模拟arm)
    • 虚拟机有独立的文件系统,进程系统,内存系统,而容器只是做了隔离。

    Docker的架构图

    私服/mirror

    搭建私服镜像的操作方式

    私服用来存放和拉取程序的打包image

    mirror用来拉取网络上的docker image:

    DaoCloud

    阿里云docker

    network

    host模式

    host 模式,在run镜像时以net=host启动,容器和宿主机共用network space,不会虚拟network space。与宿主机共用ip,性能较优。

    container模型

    该模型是container之间共享一个network space。

    bridge模式

    bridge模式的容器,每个皆有独立的network space,有独立的ip,并将一个宿主机上的容器链接到一个虚拟bridge上。

    overlay模式

    overlay模式是一种跨宿主机的容器通信方案。二层VLAN也可以实现跨节点的容器之间网络互通,但是需要改造现有网络,二层vlan支持的节点有限制,不超过4000,另外一个广播数据,在整个集群内都会传播,浪费带宽。overlay恰恰是针对以上问题,孕育而生的解决方案,约定通信协议,把二层报文进行封装分发,报文中采用隔离的标识位,突破节点限制。

    overlay创建的要素:

    • 存储服务(ectd/consul/zk);
    • swarm集群。master和agent token注册。swarm和consul的配合使用;
    • 创建overlay类型的network;
    • 启动容器指定overlay网络。

    container net model自定义网络模型

    docker 发布了libnetwork项目,并退出了CNM模型,方便二次开发。

    none模式

    container容器优独立的network space,但是没有网卡,需要手动配置网卡,ip

    image和container

    基本介绍

    image

    镜像是一堆只读层的集合,但是对外是一个统一的文件系统

    docker镜像,根据镜像的需要,base镜像要小。RUN的命令能合成一行,不要拆成多行,每一行都会加一层layer。
    另外安装完,要删除程序包。

    docker image trees可以查看镜像的继承关系。

    当base镜像不断升级,子镜像如何切换不同的父镜像,修改image的graph的json信息和aufs的镜像层次描述文件,这是个小tricky,哈哈。

    container

    container 是镜像的启动实例。从结构上与image类型,但是最上层多了一个可读写层。

    Dockerfile

    是用来构建镜像的配置文件,文件使用说明

    注意几点:

    • ENV 命令配置的变量,只生效于 docker exec进行
    • CMD和ENTRYPOINT,相互覆盖。
    • CMD命令中,命令不支持ENV变量
    • CMD不支持多条命令。
    • CMD可以用sh -c 的shell进程来执行多条命令,命令之间采用分号隔开。同事支持ENV环境变量

    端口映射及磁盘映射

    容器中的端口可以用 -p 宿主机端口:容器端口 映射出来。

    容器文件持久化,可以参数 -v来映射宿主机上, -v 宿主机文件夹:容器文件夹。

    通过目录映射也可以配置信息共享。

    container编排

    利用docker-compose可以实现docker容器的集群启动。需要编写compose yaml文件。
    可以参考compose的文件格式

    常用命令

    docker命令:http://blog.chinaunix.net/uid-10915175-id-4443127.html
    docker-compose命令:http://blog.csdn.net/zhiaini06/article/details/45287663

    安装

    环境:centos 7

    docker-engine安装

    sudo yum -y remove docker docker-common container-selinux
    sudo yum -y remove docker-selinux
    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo

    sudo yum makecache fast
    yum -y install docker-engine
    docker --version

    docker-compse安装

    yum -y install epel-release
    yum -y install python-pip
    pip --version
    pip install docker-compose

    增加私服

    编辑 /usr/lib/systemd/system/docker.service
    --insecure-registry 172.16.74.150

    修改docker配置后,重启
    systemctl daemon-reload
    service docker restart

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/zhulongchao/p/6441586.html
Copyright © 2011-2022 走看看