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自動化安裝


分享到:


相關文章: