目录
总结
容器:提供在多台主机上运行程序相同的运行环境.
docker容器可以看做运行在宿主机上的一个进程,容器共享宿主机的内核,容器间是通过namespace(命令空间)隔离资源,通过cgroups(资源配额)去限制资源。
Docker 的Logo设计为蓝色鲸鱼,拖着许多集装箱,鲸鱼可以看作为宿主机,集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。
Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,即通过对应用组件的封装,发布、部署、运行等生命周期的管理,达到应用组件级别的 一次封装,到处运行的 目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
特性(不同点) | Docker容器 | 虚拟机 |
---|---|---|
部署难度 | 非常简单 | 组件多,部署复杂 |
启动速度 | 秒级 | 分钟级 |
执行性能 | 和物理系统一致(共享内核) | VM会占用部分资源(50%损耗) |
镜像体积(磁盘占用) | MB级别 | GB级别 |
管理效率 | 简单 | 各组件相互依赖,管理复杂 |
可管理性 | 单进程 | 完整的系统管理 |
网络连接 | 弱 | 借助neutron可以灵活组件各类网络管理 |
系统支持量(单机) | 上千个 | 几十个 |
隔离性 | 进程级别 | 系统级别 |
封装程度 | 直达包项目代码和依赖关系,共享宿主机内核 | 完整的操作系统,与宿主机隔离 |
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。
namespace | 系统调用参数 | 隔离内容(判断两个环境是否完全隔离) |
---|---|---|
utc | CLONE_NEWUTS | 主机名与域名(同一个环境里不能叫node1又叫node2) |
ipc | CLONE_NEWWIPC | 信号量、消息队列和共享内存(不同的应用调用内存资源的时候应该使用不同的内存空间) |
pid | CLONE_NEWPID | 进程编号 |
network | CLONE_NEWNET | 网络设备、网格栈、端口等 |
mount | CLONE_NEWNS | 挂载点(文件系统,不能重复挂载一个指定目录) |
user | CLONE_NEWUSER | 用户和组(3.8以后的内核才支持) |
公共仓库:docker hub
私有仓库:harhor
- systemctl stop firewalld
- systemctl disable firewalld
- setenforce 0
- yum -y install yum-utils device-mapper-persistent-data lvm2
-
- #解释
- yum-utils #提供了yum-config-manager工具
- device mapper #是linux内核中支持逻辑卷管理的通用设备映射机制,它为了实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
- #device mapper存储驱动程序需要device-mapper-persistent-data和lvm2.
- cd /etc/yum.repos.d
-
- yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
开源社区(免费版):docker-ce
企业版(收费):docker-ee
- yum -y install docker-ce
-
- systemctl start docker.service
- systemctl enable docker.service
-
- #安装好的Docker系统有两个程序,Dcoker服务端和docker客户端,
- -1、其中docker服务端是一个服务进程,负责管理所有容器。
- -2、Docker客户端则扮演Docker服务端的远侧还能够控制器,可以用来控制Docker的服务进程,大部分情况下Docker服务端和客户端运行在一台机器上。
docker version
- #第一种进入方法
- 进入阿里云的官方账号,点击控制台,搜索容器镜像后点击容器镜像服务
-
- #第二种进入方法
- https://help.aliyun.com/document_detail/60750.html
-
- #进入之后,登录阿里云账号即可获取加速度地址,复制配置镜像加速器的操作。
- #!/bin/bash
-
- #关闭防火墙
- systemctl stop firewalld
- setenforce 0
-
- #安装依赖包
- yum -y install yum-utils device-mapper-persistent-data lvm2
-
- #设置阿里云镜像
- cd /etc/yum.repos.d
- yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
- #开始安装docker
- yum -y install docker-ce
-
- #启动docker
- systemctl start docker
- systemctl enable docker
-
- #设置镜像加速(最好用自己的)
- sudo mkdir -p /etc/docker
- sudo tee /etc/docker/daemon.json <<-'EOF'
- {
- "registry-mirrors": ["https://i2q96v0n.mirror.aliyuncs.com"]
- }
- EOF
- sudo systemctl daemon-reload
- sudo systemctl restart docker
-
- #网络优化
- echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
- sysctl -p
- systemctl restart network