Docker 青铜段位-Docker自动化安装

Docker 的应用场景

上一篇留给大家一个问题,Docker 的应用场景 。不知道大家想到了哪些应用场景呢?好啦,不卖关子了,Docker应用场景主要有8种,分别是:

  • 简化配置
  • 代码流水线管理
  • 提高开发效率
  • 隔离应用
  • 整合服务器
  • 调试能力
  • 多租户环境
  • 快速部署

这里我就不对这些应用场景一一细说了,大家如果很感兴趣可以自己再扩充一下。简而言之,应用场景必然是依据Docker的特性而使用,Docker的特性就是强大的隔离性,让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。 接下来,我们开始说说Docker自动化安装!

Docker 自动化安装

自动化实现安装docker并不难,难点在于安装之前考虑到方方面面的生产环境情况。

注意事项

第一点: Selinux

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源。 如果使用了SELinux ,那么docker也将会受到selinux一些限制。例如:linux的内核中的SELinux不支持 overlay2 graph driver ,那么想使用overlay2 存储驱动就只能选择换内核或者禁用selinux。

第二点: Firewalld

Firewalld 防火墙让我们又爱又恨,开启防火墙可以帮我们提高系统的安全性,但是开启了有时会被防火墙规则坑。但是如果你安装docker之后需要使用docker的桥接网络,那就必须打开防火墙,因为docker通过防火墙规则实现流量转发的。

第三点: 路由转发

刚刚我们说到docker 桥接网络是通过防火墙规则实现流量转发,那么在流量转发的过程中服务器需要开启路由转发功能。

Centos7服务器打开路由转发功能很简单。平时需要临时开启路由转发功能的话,只需执行命令写到内存中。

echo "1" > /proc/sys/net/ipv4/ip_forward

但这只是临时的,重启服务器之后就不生效了。如果我们想要永久生效,则需要修改/usr/lib/sysctl.d/00-system.conf 文件

echo "net.ipv4.ip_forward=1" >> /usr/lib/sysctl.d/00-system.conf

第四点:存储驱动类型

根据你安装的docker版本,默认推荐的存储驱动类型是不一样的,docker1.12是devicemapper 驱动, docker1.13和以后版本都是overlay2 驱动。以性能来说overlay2 是优于 devicemapper。值得注意的是overlay2存储驱动类型,是需要升级内核或者禁用selinux才可以使用。如果想要了解更多的存储驱动类型信息,购买课程后加学习群可获得相应的资料。

编写脚本

我们的安装脚本已经覆盖了我们之前所说的四点注意,在安装docker之前我们已经对环境做了一些验证,执行完脚本后,你的服务器上将会运行docker服务,我们就可以开始docker 实战课程了。其实在企业生产环境中,docker 部署脚本还需要考虑所使用的docker网络模式,特殊容器需要修改的内核参数,防火墙端口等。这些内容,在我们将在接下来的课程中给大家补充。(|接|下|来|的|教|程|请|私|聊|我|获|取|)

docker.sh

#!/bin/bash
## usage
usage()
{
cat<Usage: sh $0 [OPTION]
optional arguments:
--install Install the docker
e.g:
--- 自动化安装docker实例 ---
sh $0 --install
EOF
}
docker_install_yum()
{
echo "正在安装docker..."
systemctl restart firewalld
sed -i "/net.ipv4.ip_forward=1/d" /usr/lib/sysctl.d/00-system.conf
echo "net.ipv4.ip_forward=1" >> /usr/lib/sysctl.d/00-system.conf
echo "1" > /proc/sys/net/ipv4/ip_forward
check_selinux=`getenforce`
if [ "$check_selinux" = "Enforcing" ];then
sed -i "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config
setenforce 0
elif [ "$check_selinux" = "Permissive" ];then
sed -i "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config
elif [ "$check_selinux" = "Disabled" ];then
echo "selinux 已关闭..."
else
exit 1
echo "关闭selinux异常..."
fi
yum install -y docker
systemctl enable docker
systemctl start docker
check_docker=`docker network ls | grep bridge`
if [ -n "$check_docker" ];then
echo "docker安装完成..."
else
exit 1
echo "docker服务未启动..."
fi
}
###/>case $1 in
--install)
docker_install_yum
;;

*)
usage
;;
esac
Docker 青铜段位-Docker自动化安装


分享到:


相關文章: