- 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