使用CentOS7创建Docker运行环境
目录:
一、网络基础设置:
1.1 IP地址、网关
1.2 hostname、DNS
1.3 Host主机列表文件
1.4检查IP地址配置
二、安全及其他设置:
2.1 关闭防火墙
2.2 关闭SELinux
2.3 关闭Swap交换分区
2.4 开启IPv4转发
2.5 禁用IPv6协议
三、安装Docker-ce 17.03.2:
3.1、软件包更新
3.2、查看是否已安装了docker软件包:
3.3、卸载掉不想要的版本docker软件包
3.4、安装指定的docker版本docker-ce 17.03.2
3.5、配置国内镜像加速器
四、CentOS7内核升级:
1、安装ELRepo软件仓库源
2、安装最新的稳定版内核(4.14.11)
五、设置GRUB开机启动项:
1、创建开机启动菜单
2、查看可选的开机启动菜单
3、设置开机启动项
一、网络基础设置:
1.1 IP地址、网关
# CentOS7网卡的配置文件都是放在 /etc/sysconfig/network-scripts目录下
# eth0网卡的配置文件名为 /etc/sysconfig/network-scripts/ifcfg-eth0
# 使用VirtualBox虚拟机创建的网卡为enp0s3,
# 相应网卡的配置文件名为 /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 使用vi编辑 ifcfg-enp0s3文件,内容如下:
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
DEVICE="enp0s3"
HWADDR="00:21:70:10:7E:CD"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.3.164
NETMASK=255.255.255.0
GATEWAY=192.168.3.254
# 这个是自动获取IP地址的DHCP的配置参数
# BOOTPROTO=dhcp
# 系统会自动检测网卡的MAC地址:
# HWADDR="xx:xx:xx:xx:xx:xx"
# 有时候网关的配置也会放到/etc/sysconfig/network 文件中
# GATEWAY=10.1.2.254
1.2 hostname、DNS
#修改本地主机名hostname,配置文件为/etc/hostname
#此文件是否会根据/etc/sysconfig/network文件或ifcfg-enp0s3文件的配置自动生成?
sudo vi /etc/hostname
node4
#配置本地主机名、DNS
#配置文件为:/etc/sysconfig/network
#(好像也可以将此文件的内容合并到/etc/sysconfig/network-scripts/ifcfg-enp0s3网卡配置文件中。)
#分开更清晰,合并更方便,各有利弊。
sudo vi /etc/sysconfig/network
HOSTNAME=node4
DNS1=218.2.135.1
DNS2=8.8.8.8
# 查看DNS域名解析文件/etc/resolv.conf,重启网络服务service network restart
# 此文件会根据网卡配置文件/etc/sysconfig/network 的配置自动生成,无需设置
sudo cat /etc/resolv.conf
nameserver 218.2.135.1
nameserver 8.8.8.8
1.3 Host主机列表文件
#修改主机列表文件/etc/hosts
#优先于DNS快速解析局域网中的其他主机名和IP
sudo vi /etc/hosts
127.0.0.1 localhost
192.168.3.164 node4
192.168.3.165 node5
192.168.3.166 node6
#重启网络服务,使以上修改生效
sudo service network restart
1.4检查IP地址配置
# CentOS7中默认没有安装ifconfig and netstat工具,
# 这两个工具太老旧了,在CentOS5、CentOS6中就已经不建议使用了,
# 取代他们的是更好的 ip 和 ss 命令,
# 其中之一的原因是ifconfig不能显示与网卡相关的全部的细节。
# 如果非要使用,可以用yum安装 net-tools软件包
sudo yum -y install net-tools
# 查看网卡配置信息
ifconfig
ip a
# 查看网络协议及端口状态
sudo ss
二、安全及其他设置:
2.1 关闭防火墙
#CentOS 7.x默认使用firewalld作为防火墙
#安装防火墙管理工具firewalld
sudo yum install -y firewalld
#直接关闭防火墙
sudo systemctl stop firewalld.service
#禁止firewalld开机启动
sudo systemctl disable firewalld.service
#查看firewalld防火墙状态
sudo firewall-cmd --state
#安装iptables防火墙
sudo yum -y install iptables iptables-services
#关闭iptables防火墙
sudo systemctl stop iptables.service
#禁用iptables防火墙
sudo systemctl disable iptables.service
2.2 关闭SELinux
#可查看selinux的状态
#可以使用getenforce 或者sestatus
sudo getenforce
sudo sestatus
#修改配置文件,重启后永久关闭
sudo vi /etc/sysconfig/selinux
SELINUX=disabled
#注意:使用setenforce 0 只是临时关闭selinux防火墙,立刻生效,但重启又恢复原样。
sudo setenforce 0
2.3 关闭Swap交换分区
# 查看Swap交换分区有多种方式,
# free -m、top、df -h、fdisk -l等都可以,
# 使用free查看当前的内存和swap 空间大小
sudo free -m
sudo df -h
sudo fdisk -l
# 查看swap信息,包括文件和分区的详细信息
sudo swapon -s
# 临时关闭所有交换设备(重启机器又会启用swap)
sudo swapoff -a
#永久关闭交换设备,需要修改/etc/fstab文件,注释掉最后面的swap分区
sudo vi /etc/fstab
#注释掉下面的一行,比如:
#/dev/mapper/centos-swap swap swap defaults 0 0
2.4 开启IPV4转发
# 编辑配置文件/etc/sysctl.conf
sudo vi /etc/sysctl.conf
# 设置启用转发,后两条去除Docker info 中的WARING告警信息
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
# 立刻生效
sudo sysctl -p
2.5 禁用IPv6协议
#编辑/etc/sysctl.conf文件
sudo vi /etc/sysctl.conf
#在文件中增加一行,内容为:
net.ipv6.conf.all.disable_ipv6 = 1
#使得/etc/sysctl.conf 更改生效:
sudo sysctl -p /etc/sysctl.conf
#编辑/etc/hosts文件,
sudo vi /etc/hosts
#注释或删除掉ipv6相关的行,内容大致如下:
# The following lines are desirable for IPv6 capable hosts
#::1 localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters
三、安装docker-ce 17.03.2:
3.1、软件包更新
#将最小化安装的CentOS7中所有软件包更新到最新
sudo yum update -y
3.2、查看是否已安装了docker软件包:
#查看是否已经安装的Docker软件包
sudo yum list installed | grep docker
3.3、卸载掉不想要的版本docker软件包
#如果已安装不想要docker、docker-engine、docker-ce相关的软件包,则卸载掉:
sudo yum -y remove docker docker-common docker-selinux docker-engine docker-engine-selinux container-selinux docker-ce
#删除所有的镜像、容器、数据卷、配置文件等
sudo rm -rf /var/lib/docker
3.4、安装Docker-ce 17.03.2
#配置CentOS7操作系统软件源,这里使用阿里云开源镜像站作为软件源
#以便加速CentOS7操作系统相关的软件包的下载速度
#先要安装wget、curl小工具
sudo yum install -y wget curl
#再备份原软件仓库文件
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#再下载新的CentOS-Base.repo 到/etc/yum.repos.d/
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#安装yum-utils工具和docker-ce相关的device-mapper等依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#配置docker-ce软件源,添加阿里云docker-ce软件源信息
#以便加速docker-ce相关软件包的下载速度sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum缓存文件
sudo yum makecache fast
#查看所有可安装的docker-ce版本
sudo yum list docker-ce --showduplicates | sort -r
#安装docker-ce-selinux-17.03.2.ce,否则安装docker-ce会报错
sudo yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
#安装指定的Docker版本:docker-ce-17.03.2.ce
sudo yum install -y docker-ce-17.03.2.ce-1.el7.centos
#允许开机启动docker-ce服务
sudo systemctl enable docker.service
#启动Docker-ce服务
sudo systemctl start docker
#检查是否正常安装:
sudo yum list installed | grep docker
sudo docker info
#运行测试容器hello-world
sudo docker run --rm hello-world
#修改/etc/docker/daemon.json后台配置文件
#设置默认存储驱动为overlay2
#这一步要在升级4.x内核后进行,因为4.x内核才支持overlay2存储驱动
#不升级内核,不能加:"storage-driver": "overlay2",或参照官网的存储驱动配置说明
#添加阿里云的镜像加速器
{
"storage-driver": "overlay2",
"registry-mirrors": [
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com"
]
}
四、CentOS7内核升级:
#导入ELRepo软件仓库的公共秘钥
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#安装ELRepo软件仓库的yum源
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#安装主线内核(ml=mainline)(4.14.11)
sudo yum --enablerepo=elrepo-kernel install -y kernel-ml
五、设置GRUB开机启动项:
#根据/boot/目录内的文件
#自动创建GRUB内核配置开机选单
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
#说明:/boot/grub2/grub.cfg文件不可手工编辑
#查看可选的GRUB内核配置开机选单
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
#说明:/etc/grub2.cfg文件是一个文件链接,
#实际链接到/boot/grub2/grub.cfg
#/etc/default/grub文件是可以编辑,
#保存了GRUB通用的变量设置
#查看编辑/etc/default/grub文件,
#确保GRUB_DEFAULT=saved
sudo vi /etc/default/grub
#假设我们需要运行的内核版本为第0项
#执行grub2-set-default0设置内核配置开机选单为第0项(第一个)
#执行grub2-editenv list确认设置成功(saved_entry=0)
sudo grub2-set-default 0
sudo grub2-editenv list
(完)
参考链接:
CentOS7中Docker-ce的卸载和安装
http://blog.csdn.net/csdn_duomaomao/article/details/78997138
CentOS7 升级内核及注意事项
http://blog.csdn.net/csdn_duomaomao/article/details/78967545
CentOS7设置GRUB系统内核开机选单
http://blog.csdn.net/csdn_duomaomao/article/details/78963761
永久禁用IPv6的方法
http://blog.csdn.net/csdn_duomaomao/article/details/79050398
CentOS 7.2启用iptables防火墙
http://www.linuxidc.com/Linux/2017-09/146813.htm
CentOS 7.0关闭默认防火墙启用iptables防火墙
http://www.linuxidc.com/Linux/2015-05/117473.htm
Questions about CentOS-7
https://wiki.centos.org/FAQ/CentOS7#head-a21a9e454157700367c9b7e9ccb1ff9954bec881
Red Hat Enterprise Linux Release Notes
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/
Docker 问答录(100 问)
CentOS 版本的发行注记
https://wiki.centos.org/zh/Manuals/ReleaseNotes
docker info报错docker bridge-nf-call-iptables is disabled解决办法
http://blog.csdn.net/xypds2010/article/details/52212323