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转发是否开启可以使用以下命令:

[root@ChatDevOps ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

如果返回值是0,说明ip转发是关闭了的,需要开启。开启命令可以参考以下内容:

[root@ChatDevOps ~]# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

命令执行后立即生效,重启之后需要再次操作。如果需要永久生效,那么使用以下命令:

[root@ChatDevOps ~]# echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf 
[root@ChatDevOps ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@ChatDevOps ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

三、总结

3.1 Linux的各大发行版在细节方面差异较大,需要格外注意,不能按部就班的随便套用。

3.2 在使用的过程中需要发挥自己的思维变通能力,尽量做到触类旁通。

3.3 目前就发现这些问题了,其他问题希望诸位多多分享,交流。

相关文章
|
3月前
|
Docker 容器
电子书阅读分享《4天实战 轻松玩转docker》
电子书阅读分享《4天实战 轻松玩转docker》
123 3
|
1月前
|
Ubuntu Docker 容器
如何在Ubuntu上安装Docker?
【2月更文挑战第10天】
239 0
|
3月前
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
105 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
7天前
|
存储 Ubuntu 关系型数据库
Docker从入门到精通:ubuntu系统安装docker
本文介绍了Docker的安装过程。首先,文章简述了Docker的组成部分:镜像(如模板用于创建容器服务)、容器(运行应用的独立实体)和仓库(存储镜像的库)。接着,针对Ubuntu系统,详细阐述了卸载旧版本Docker、更新软件包、安装依赖、添加Docker官方GPG密钥和软件源、安装Docker以及配置用户组的步骤。最后,通过启动Docker、验证安装是否成功(运行`hello-world`镜像)和查看Docker版本来确认安装完成。
37 12
|
8天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
29天前
|
Unix Docker 容器
【超强图解Docker常见命令与实战】
【超强图解Docker常见命令与实战】
50 0
|
2月前
|
Java Linux Docker
Docker入门到实战
Docker入门到实战、Centos7安装Docker
|
2月前
|
安全 应用服务中间件 开发工具
Ubuntu20安装docker并部署相关漏洞环境
Ubuntu20安装docker并部署相关漏洞环境
50 0
|
2月前
|
Cloud Native Go 数据安全/隐私保护
自定义Docker镜像推送到Docker Hub实战
自定义Docker镜像推送到Docker Hub实战
77 2
自定义Docker镜像推送到Docker Hub实战
|
2月前
|
KVM 虚拟化 Android开发
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
52 1