Docker入门

Docker的介绍

Posted by yebin-yu on August 5, 2023

Docker 是什么

Docker 定义

go 语言开发的,基于 LXC (Linux Container) 的,遵循 Apache2.0 开源协议的高级容器引擎。

他的语言( go 语言)和 框架(Linux 自身的 LXC)使得他性能非常好

Docker 的设想是交付运行环境如同海运, OS 如同一个货轮,每一个在 OS 基础上的软件都如同一个集装箱,用户可以通过标准化手段自由紫装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。

Docker 和 传统虚拟化对比

传统的虚拟化 - VM

通过创建很多不同的OS来支撑虚拟化

AppA           AppA        AppA
 ^              ^            ^
Bins/Libs    Bins/Libs    Bins/Libs
 ^              ^            ^
Guest OS     Guest OS     Guest OS
  \             |           /
    \           |         /
      \         |       / 
        \       |     / 
           Hypervisor
                ^
             Host OS
                ^
              Server
Docker使用的虚拟化技术

通过创建不同的Bins/Libs来虚拟化

     
   AppA    AppA'  AppB   AppB' AppB''
     \      /       \     /    /
      \    /         \   /    /
     Bins/Libs      Bins/Libs
           \        /
            \      /
           Docker Engine
                ^
             Host OS
                ^
              Server
优劣势对比
传统型虚拟化 容器化虚拟化
消耗的资源大,每个虚拟化都需要一个完整的操作系统内核 消耗的本机资源更小,在同样的硬件属性下,能支撑更多的访问
安全性最高,能做到内核级别的隔离 安全性较差

Docker 的构成

  1. Docker 仓库 : https://hub.docker.com

  2. Docker 自身组件

    1. Docker Client
    2. Docker Server
    3. Docker 镜像 - 封装好的运行环境,运行之后就变成了容器

镜像运行后成为容器(即正在运行的运行环境),而容器也可以做成镜像。

Docker 组件间的协同方式

一般 client 和 server 都放在本机, server作为daemon运行在本地

如果一台设备上运行太多的 Docker 会不会影响性能?怎么解决?

分层

最多为128层

比如我有个镜像安装了nginx, java,mysql。突然有一天我需要一个升级了mysql版本的镜像,那么可以在nginx java层的基础上更新。

Docker 安装

检查基础环境

### 检查防火墙是否关闭,直接关闭
systemctl stop firewall
systemctl disable firewalld

### 检查 Selinux
getenforce

### iptables
systemctl start iptables
# 如果没有安装
yum -y install iptables-services
systemctl start iptables
systemctl enable iptables
# 清空默认配置,保存,此时防火墙是空的
iptables -F
service iptables save

### 更新软件包
yum update

### 重启
reboot

下载docker包

https://downlaod.docker.com/linux/centos/7/x86_64/stable/Packages/

下载 docker-ce docker-ce-selinux

安装

yum -y intall * 

启动docker

### 启动docker
systemctl start docker
systemctl enable docker

### 检查docker运行状态
systemctl docker status

尝试启动hello-world镜像

docker install hello-world

Docker 常用命令

### 查看镜像
docker images

### 查看运行的容器
docer ps

其他

Docker-compose 工具 - 用作一台设备上服务的整体化管理

一个容器编排工具,允许用户在一个模板(YAML格式)中定义一组相关联的容器,会根据 --link 等参数对启动的优先级进行排序。