1. 程式人生 > >Docker實戰中,從Ubuntu系列換到CentOS7.X系列應該避免的坑

Docker實戰中,從Ubuntu系列換到CentOS7.X系列應該避免的坑

一、背景

在生產環境中部署、使用Docker已經有很長一段時間了。學習的時候大部分環境、資料都是在Ubuntu14.04、16.04及18.04中實現的。由於某些原因,需要在生產環境中的CentOS7.2和7.4中部署使用Docker。在這個過程中踩了不少坑,花了很多時間,走了很多彎路。

二、一些常見的坑及解決方案

2.1 SELinux

在Ubuntu系列系統中預設是沒有SELinux的。因此也無需配置,如果安裝了SELinux的話,禁用或者進行相關配置那是必須的。在CentOS7.2和7.4中,SELinux預設是啟用的,如果不進行相關配置,那麼在Docker卷掛載時是無法正常使用的。檢視SELinux狀態及關閉SELinux可以使用以下命令:

[root@ChatDevOps ~]# getenforce 
Enforcing
[root@ChatDevOps ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
[root@ChatDevOps ~]# reboot
[root@ChatDevOps ~]# getenforce 
Disabled

操作過程中,重啟是必須的。不禁用也是可以的,permissive也可以。

2.2 防火牆

CentOS7.2及7.4預設情況下使用的firewalld動態防火牆,並且CentOS7.4防火牆預設開機啟動。Ubuntu系列使用iptables多一些。如果不用的話建議關閉,一般大型系統都有硬體防火牆,建議關閉。如果個人小規模使用就按照最小化原則進行配置。關閉及禁用開機啟動命令可以參考如下:

[root@ChatDevOps ~]# systemctl stop firewalld
[root@ChatDevOps ~]# systemctl disable firewalld

2.3 IP轉發

預設情況下,CentOS7.4的ip轉發是關閉的,需要格外注意,這是造成很多故障的原因之一。這個情況在Ubuntu14.04及以上版本是不存在的,Ubuntu預設開啟了的。檢視ip轉發是否開啟可以使用以下命令:

[[email protected] ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

如果返回值是0,說明ip轉發是關閉了的,需要開啟。開啟命令可以參考以下內容:

[[email protected] ~]# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

命令執行後立即生效,重啟之後需要再次操作。如果需要永久生效,那麼使用以下命令:

[[email protected] ~]# echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf 
[[email protected] ~]# sysctl -p
net.ipv4.ip_forward = 1
[[email protected] ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

三、總結

3.1 Linux的各大發行版在細節方面差異較大,需要格外注意,不能按部就班的隨便套用。

3.2 在使用的過程中需要發揮自己的思維變通能力,儘量做到觸類旁通。

3.3 目前就發現這些問題了,其他問題希望諸位多多分享,交流。