Docker基础及安装

  • Docker 简介
  • Dokcer 功能特性
  • Docker 应用场景
  • 安装环境
  • 防火墙及安全机制
  • 版本选择
  • Docker 标准版本安装
  • Docker CE版本安装
  • 修改 Docker 运行目录

Dokcer简介


  • Docker 是一个开源的应用容器引擎, 让开发者可以打包其应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 服务器上, 也可以实现虚拟化, 容器是完全使用沙箱机制,相互之间不会有任何接口;
  • 完整的 Docker 包括
    • Dokcer Client 客户端
    • Dokcer Daemon 守护进程
    • Docker Image 镜像
    • Docker Container 容器

Dokcer 功能特性


  • 隔离环境 ( 系统, 网络, 文件系统 ) 与应用
    • 通过 cgroup ( 隔离和跟踪资源的使用 ) & namespace ( 组与组之间的隔离 ) 来实现轻量级的进程隔离;
    • 对应容器中的运行的进程来说, 自己独占了一个系统
    • 容器间网络, 文件 及 其他资源都相互隔离;
  • 解决依赖与版本问题
    • 传统模式下, 多个不同环境或版本的项目需要部署在不同的服务器上, 部署与后期维护管理复杂繁琐;
    • 使用 Docker, 通过多个不同版本或者环境的镜像, 可以同时运行在一台机器上互不干扰, 部署与后期维护简单方便;
  • 易于分发, 开箱即用
    • 镜像可以通过 导入, 导出, 上传到镜像仓库等多种方式进行使用操作;
    • 在启动了 Docker 的系统上直接使用 docker run 即可启动镜像, 无需特别配置;
  • 节点与容器快速扩容
    • 容器扩容简单方便;
    • 扩容节点只需要安装并启动 Docker 即可;
  • 镜像制作简单便捷,管理方便.
    • 镜像的灵魂 Dockerfile;
    • 使用 Dockerfile 进行指令控制, FROM, MAINTAINER, LABEL, ENV, RUN 等;
    • 基于 Linux 命令, 易于理解;
    • 易于定制与修改;

Docker 应用场景


  • web 应用的自动化打包和发布;
  • 自动化测试 和 持续集成 , 发布;
  • 应用服务, 如 MySQL, Redis 等, 通过 Docker 实现快速部署;
  • k8s 私有云

 Docker 通常用于如下场景:

  • 应用场景1: 多版本多种类系统与软件
    • 需要一个 CentOS 7 / 一个 CentOS 6 / 一个 Ubuntu / MySQL 5.5 / MySQL 5.7 等等进行测试;
    • 各个环境配置好以后, 只使用 几分钟, 就需要更换一个版本;
    • 使用传统的虚拟机解决方案, 一天天的不需要别的工作了;
    • 使用 Docker , 每个需求只需要一个 docker run
  • 应用场景2: 环境
    • 很多时候存在多个环境版本一致性问题, 如 PHP 运行环境, 涉及到 PHP 版本, PHP扩展的版本等;
    • 环境不一致容器导致诸多问题, 如在测试环境正常的项目,到生产后报错, 回退到测试环境又不能复现;
    • 使用 Docker 镜像封装运行环境, 一次构建, 到处运行;
    • 新增的系统也能快速部署, 实现高效的节点扩容, 保障业务的健康与稳定性;
    • 开发者之间也解决了环境一致性的问题, 且不必再经常为环境问题烦恼,专心实现业务需求;
  • 应用场景3: 分发
    • 项目编译好之后, 带上安装文档去客户现场进行安装及配置;
      • 需要先准备好系统
      • 配置环境;
      • 上传项目程序;
      • 启动运行,报错, 调试;
      • 重复上一步
    • 将运行环境与项目代码封装成 docker 镜像, 到客户现场后直接在系统中安装 Docker 并启动;
      • 导入镜像开始运行;
    • 甚至通过远程就能完成部署

 安装环境


  • 系统:    CentOS 7.4 minimal
  • 时区:              Asia/Shanghai
  • 分区:
    •   /boot        XFS        500M
    •       swap                      不使用
    •       /                             剩余全部
  • Docker 有 Windows 和 MacOS 版本, 但是为了更好的兼容, 我们选择 Linux 中运行 Docker;
  •  使用 vMware虚拟机来安装和运行 CentOS 系统;
  • 其它虚拟软件 VirtualBox, KVM , XEN 等等也可以

 防火墙及安全机制


  •  防火墙:                       建议开启
  • SeLinux:                      建议开启
  • 需要特别说明的是: 防火墙和 selinux 是系统与网络安全的重要保障,我们不要轻易去禁用或者停用它们,
  • 后续会结合使用
 版本选择
  •  Docker
    •  17.03 之后版本变为 Docker CE
  •  Docker CE
    • 社区版, Community Edition
  • Docker EE
    • 企业版, Enterprise Edition
    • 收费版本,强调安全性,提供一些高级特性及商业支持

 Docker 标准版本安装


 

// 使用 yum 安装 docker
yum -y install docker

// 启动 docker 并设置为开机启动
systemctl start docker
systemctl enable docke

 Docker CE版本安装


 

// 首先确定没有 yum 安装的 docker, 存在的话先进行 卸载
ps -ef |grep docker && yum -y remove docker

// 可以使用 yum 查看安装信息
yum history                                // 查看所有yum的操作
yum history info N                      // 表示查看yum操作的第N个详细信息
yum history undo N                    // 表示将第 N 个安装的所有包都卸载

// 安装相关依赖包
yum -y install yum-utils device-mapper-persistent-data lvm2

// 两种方法下载 docker-ce.repo
yum-config-manager --add-repo=http://download.docker.com/linux/centos/docker-ce.repo
 || 
curl http://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

// 安装 docker-ce
yum -y install docker-ce

// 启动 docker 并设置开机启动
systemctl start docker
systemctl enable docker


// 查看docker版本号
docker version
Client:
 Version:           18.09.6
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        481bc77156
 Built:             Sat May  4 02:34:58 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.6
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       481bc77
  Built:            Sat May  4 02:02:43 2019
  OS/Arch:          linux/amd64
  Experimental:     false    

修改 Docker 运行目录


 原因, 有时候服务器以及 云服务器 根目录的空间都不是很大, docker 默认占用的是 /var/lib/docker 目录, 我们改成我们想要设置的空间够大的目录;

// 创建指定的目录
mkdir /data/docker

// 修改启动程序
vim /usr/lib/systemd/system/docker.service
... ...
ExecStart=/usr/bin/dockerd 
    --data-root /data/docker            // 指定需要设置的目录;
... ...

// reload配置
systemctl daemon-reload


// 重启docker
systemctl restart docker

// 开启 selinux 机制的情况下, 进行以下修改
chcon -R -u system_u /data/docker
chcon -R -t container_var_lib_t /data/docker
chcon -R -t container_share_t /data/docker/overlay2
原文地址:https://www.cnblogs.com/haorong/p/11008652.html