• 容器底层实现技术

   1.cgroup 实现了资源的限额:CPU,内存,硬盘

    cgroup使用 
    docker run -d -m 100M httpd
  2.namespace 实现了资源隔离

    namespace 实现了容器间资源的隔离
  3.unionfs 联合文件系统

  • Linux 使用了六种 namespace,分别对应六种资源:Mount、UTS、IPC、PID、Network 和 User

  Mount namespace
  Mount namespace 让容器拥有整个文件系统。

  UTS namespace
  简单的说,UTS namespace 让容器有自己的 hostname。 默认情况下,容器的 hostname 是它的短ID,可以通过 -h 或 --hostname 参数设置。

  IPC namespace
  IPC namespace 让容器拥有自己的共享内存和信号量(semaphore)来实现进程间通信,而不会与 host 和其他容器的 IPC 混在一起

  PID namespace
  容器在 host 中以进程的形式运行。容器内进程的 PID 不同于 host 中对应进程的 PID,容器中 PID=1 的进程当然也不是 host 的systemd进程。也就是说:容器拥有自己独立的 PID,这就是 PID namespace 提供的功能。

  Network namespace
  Network namespace 让容器拥有自己独立的网卡、IP、路由等资源。

  ser namespace
  User namespace 让容器能够管理自己的用户,host 不能看到容器中创建的用户。

  • 端口映射

  把容器的端口映射为宿主机的一个随机或者特定端口
  端口映射实现了外部网络访问容器内部服务
  本质是在底层做了ipables地址转发
  1.容器端口映射为宿主机的一个随机端口
  2.容器端口映射为宿主机的一个特定端口
  3.容器端口映射为宿主机的一个特定网卡上的随机端口
  4.容器端口映射为宿主机的一个特定网卡上的特定端口
  

  选项: 端口映射 -p -P  -P 随机映射端口  -p 指定特定端口
  
  注意:启动一个容器时候可以使用多个 -p 映射多个端口
  

  例子1:随机映射 -P #-P是把容器内的所有端口随机映射为宿主机的随机端口
  docker run -d -P httpd

  例子2:特定映射,映射为宿主机的特定端口
  docker run -d -p 81:80 httpd #注意-p后面顺序 宿主机端口:容器端口

  例子3:特定映射,映射为宿主机的特定网卡的随机端口
  docker run -d -p 192.168.64.5::80 httpd

  例子4:特定映射,映射为宿主机的特定网卡的特定端口 -p
  docker run -d -p 192.168.64.5:82:80 httpd

Docker 底层技术与端口映射的更多相关文章

  1. docker底层技术概览

    docker解决了云计算环境难于分发并且管理复杂,而用KVM.Xen等虚拟化又浪费系统资源的问题.Docker最初是基于lxc构建了容器引擎,为了提供跨平台支持,后又专门开发了libcontainer ...

  2. Docker实战(五)之端口映射与容器互联

    除了网络访问外,Docker还提供了两个很方便的功能来满足服务访问的基本需求:一个是允许映射容器内应用的服务端口到本地宿主主机;另一个是互联机制实现多个容器间通过容器名来快速访问. 1.端口映射实现访 ...

  3. docker 网络模式 和 端口映射

    docker 的 网络模式 docker 自带 3 种 网络模式:分别是bridge网络,host网络,none网络,可以使用  docker network ls  命令查看. 1.none网络 这 ...

  4. docker 实践五:端口映射和容器互联

    本篇是关于 docker 容器的端口映射和容器之间的互联内容. 注:环境为 CentOS7,docker 19.03. docker 的容器除了能连接网络外,在许多时候,我们需要让多个容器来协同完成任 ...

  5. Docker 安装nginx 与端口映射

    1. 拉取镜像(网易云docker镜像仓库) docker pull hub.c.163.com/library/nginx:latest 2. 运行nignx,并做端口映射 -d 后台运行  -p映 ...

  6. Docker基础内容之端口映射

    随机映射 docker run -d -P training/webapp python app.py # -P会随机映射一个 49000~49900 的端口到内部容器开放的网络端口 映射所有接口地址 ...

  7. DocKer 创建容器 镜像端口映射失败

    问题一: 我想使用同一个镜像创建多个容器,并映射端口出现以下错误,该怎么解决? docker: Error response from daemon: driver failed programmin ...

  8. 使用iptables为docker容器动态添加端口映射

    1.将当前iptables的配置写入保存到/etc/sysconfig/iptables 2.保存 /etc/init.d/iptables sava 3.修改iptables配置(vi /etc/s ...

  9. docker学习端口映射---第二章节

    一.运行一个web应用 首先,下载一个docker镜像: [root@k8s-01 ~]# docker pull training/webapp 运行webapp的容器: [root@k8s-01 ...

随机推荐

  1. luogu P4343 [SHOI2015]自动刷题机 |二分答案

    题目描述 曾经发明了信号增幅仪的发明家 SHTSC 又公开了他的新发明:自动刷题机--一种可以自动 AC 题目的神秘装置. 自动刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写程序. ...

  2. Windows环境下XAMPP的相关设置

    WINDOWS环境下多域名多端口配置:https://www.cnblogs.com/c-and-unity/p/4539348.html

  3. VARIANT、 _variant_t、CComVariant、COleVariant、CDBVariant

    参考文章 http://blog.163.com/wslngcjsdxdr@126/blog/static/16219623020107634935586/ http://blog.csdn.net/ ...

  4. Matlab Robotics Toolbox 仿真计算:Kinematics, Dynamics, Trajectory Generation

    1. 理论知识 理论知识请参考: 机器人学导论++(原书第3版)_(美)HLHN+J.CRAIG著++贠超等译 机器人学课程讲义(丁烨) 机器人学课程讲义(赵言正) 2. Matlab Robotic ...

  5. Vue AES+MD5加密 后台解密

    前端VUE vue项目中安装crypto-js npm install crypto-js --save-dev CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加 ...

  6. Go 修改map slice array元素值

    在“range”语句中生成的数据的值其实是集合元素的拷贝.它们不是原有元素的引用.这就意味着更新这些值将不会修改原来的数据.我们来直接看段示例: package main import "f ...

  7. ajax request 等请求的数据直接return

  8. Linux系统入门简介<1>

    linux系统入门简介 我们为什么要学习Linux? 在介绍Linux的历史前,我想先针对大家如何对Linux的发音说一下.我发现我身边的朋友对Linux的发音大致有这么几种: "里那克斯& ...

  9. Python基础-day02-1

    判断(if)语句 目标 开发中的应用场景 if 语句体验 if 语句进阶 综合应用 01. 开发中的应用场景 生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?-- 程序 ...

  10. webpack构建原理和实现简单webpack

    webpack打包原理分析 基础配置,webpack会读取配置 (找到入口模块) 如:读取webpack.config.js配置文件: const path = require("path& ...