生产环境中 安装docker 和 docker Hub 镜像加速器列表以及设置docker swarm集群

近期文章:

一. docker 环境初始化

准备三台centos机器,开始安装docker

mater172.16.40.129
node1172.16.40.130
node2172.16.40.131
以下操作三台机器都执行

1.1、检查操作系统的版本

#要求系统版本要在centos7.5或以上 [root@master ~]# cat /etc/redhat-release                CentOS Linux release 7.9.2009 (Core)

1.2、配置主机名解析

[root@master ~]# cat >/etc/hosts<<EOF 172.16.40.129 master                    172.16.40.130 node1                 172.16.40.131 node2 EOF

1.3、时间同步

# 下面二选一  1、使用chronyd [root@master ~]# systemctl start chronyd [root@master ~]# systemctl enable chronyd #或者 2、ntpdate [root@master ~]# yum install -y ntp ntpdate [root@master ~]# ntpdate cn.pool.ntp.org  #编写计划任务 [root@master ~]# crontab -e  * */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org 重启crond服务使配置生效: [root@master ~]# systemctl restart crond

1.4、禁用iptables和firewalld服务

[root@master ~]# systemctl stop firewalld [root@master ~]# systemctl disable firewalld [root@master ~]# systemctl stop iptables [root@master ~]# systemctl disable iptables

1.5、禁用selinux

#临时禁用 [root@master ~]# setenforce 0  #永久 [root@master ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

1.6、禁用swap分区

swap分区指的是虚拟内存分区,它的作用是物理内存使用完,之后将磁盘空间虚拟成内存来使用,启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备

[root@master ~]# cat /etc/fstab #注释掉下面 #/dev/mapper/centos_172-swap swap          swap  defaults    0 0

1.7、开启包转发功能和修改内核参数

内核参数修改:br_netfilter模块用于将桥接流量转发至iptables链,br_netfilter内核参数需要开启转发。

[root@master ~]# modprobe br_netfilter [root@master ~]# cat >/etc/sysctl.d/docker.conf <<EOF                                                               net.bridge.bridge-nf-call-ipv6tables=1                                                                     net.bridge.bridge-nf-call-ipvtables=1                                                                     net.ipv4.ip_forword=1 EOF ​ # net.ipv4.ip_forward = 1: # 将Linux系统作为路由或者VPN服务就必须要开启IP转发功能。当linux主机有多个网卡时一个网卡收到的信息是否能够传递给其他的网卡 ,如果设置成1 的话 可以进行数据包转发,可以实现VxLAN 等功能。不开启会导致docker部署应用无法访问。

1.7.1 重新加载配置

[root@master ~]# sysctl -p /etc/sysctl.d/docker.conf

1.7.1 加载网桥过滤模块

[root@master ~]# modprobe br_netfilter 

1.7.2 查看网桥模块

[root@master ~]# lsmod |grep br_netfilter

1 8 安装基础软件包

[root@master ~]# yum install -y  wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel  python-devel epel-release openssh-server socat  ipvsadm conntrack

二. 安装docker-ce

2.1 配置docker-ce国内yum源(阿里云)

[root@master ~]# yum install -y yum-utils [root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.2 安装docker依赖包

[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

2.3 安装docker-ce

[root@master ~]# yum install docker-ce -y

2.4 启动docker

[root@master ~]# systemctl start docker && systemctl enable docker  [root@master ~]# systemctl status docker ● docker.service - Docker Application Container Engine    Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)    Active: active (running) since 五 2023-01-13 18:14:15 CST; 47min ago      Docs: https://docs.docker.com

看到running,表示docker正常运行

2.5 查看docker版本

[root@master ~]# docker version

2.6 配置docker镜像加速器

登陆阿里云镜像仓库  https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors  如果没有开通,可开通阿里云的镜像服务  修改修改/etc/docker/daemon.json  [root@master ~]# mkdir /etc/docker [root@master ~]# cat >/etc/docker/daemon.json<<EOF {   "registry-mirrors": ["https://dbxvt5s3.mirror.aliyuncs.com","https://registry.docker-cn.com"] } EOF

2.7 让配置生效

[root@master ~]# systemctl daemon-reload [root@master ~]# systemctl restart docker

2.8 docker Hub 镜像加速器列表

Docker 中国官方镜像    DaoCloud 镜像站  Azure 中国镜像  科大镜像站  阿里云 https://<your code>.mirror.aliyun.com 七牛云  网易云  腾讯云   以上操作三台机器都执行 


三. docker swarm

Docker Swarm是Docker的本机集群和编排解决方案,它包含在Docker Engine中,所以在安装Docker后,就已经有了

3.1 初始化swarm管理节点

[root@master ~]# docker swarm init #初始化一个新的swarm,并且当前的机器变为swarm manager

3.2 集群加入工作节点

在node1和node2的Docker主机上,执行以下命令来将它们作为worker节点加入到swarm中:

[root@node1 ~]# docker swarm join --token <token> <manager-ip>:2377 [root@node2 ~]# docker swarm join --token <token> <manager-ip>:2377  注: 这里的 <token> 是在初始化swarm时,docker swarm init 命令的输出中提供的。<manager-ip> 是swarm manager的IP地址。  你可以在manager节点上运行 docker swarm join-token worker 来获取加入swarm所需的完整命令和token。

3.3 查看集群节点

#在master机器执行,来查看swarm的状态和节点列表 [root@master ~]# docker node ls

3.4 docker swarm的基本操作

  • 创建服务
[root@master ~]# docker service create --name my-nginx --replicas 3 nginx #这会在Swarm中创建一个新的服务,并保证在任何时候都至少有三个Nginx容器在运行
  • 列出服务
[root@master ~]# docker service ls
  • 查看服务详情
[root@master ~]# docker service inspect --pretty my-nginx
  • 扩展服务
#增加服务的副本数量 docker service scale my-nginx=5
  • 更新服务的配置
#如更改容器镜像 [root@master ~]# docker service update --image nginx:1.17.8 my-nginx
  • 删除服务
[root@master ~]# docker service rm my-nginx

docker swarm将自动处理服务的调度和负载均衡,无需手动配置