• 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

  • 相关阅读:
    人人都有数字替身的时代马上到来
    教你如何在linux下查看服务是否已经启动或者关闭
    提前了解2019年物联网发展的六大趋势
    本科理工男如何学习Linux
    linux常见命令ps的应用
    useradd 命令的常见用法
    简单聊聊Linux学习经历
    什么是公网IP、内网IP和NAT转换?
    远程获得的有趣的linux命令
    js练习题之查找数组中的位子
  • 原文地址:https://www.cnblogs.com/jpfss/p/10929867.html
Copyright © 2020-2023  润新知