欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

大师架构系列-Docker搭建与配置优化

程序员文章站 2022-03-09 22:51:03
...

以Centos8安装为例

更新Centos Yum源为阿里云源,提高下载速度

# 更换组件源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

# 生成缓存
yum makecache

安装Docker前准备工作

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

关闭防火墙与增强型安全功能
systemctl stop firewalld.service
systemctl disable firewalld.service

采用iptables
yum install iptables iptables-services

# Disable SELINUX
setenforce 0
sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config

因为容器组件依赖版本的问题,大概率会出现以下问题

Problem: package docker-ce-3:19.03.4-3.el7.x86_64 requires containerd.io >= 1.2.2-3 那就先装新版的 containerd.io

解决办法:

大师架构系列-Docker搭建与配置优化

 

# 打开docker官方依赖包地址
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/

# 找到最新版本的组件,有件复制地址进行安装
yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm

准备工作准备完毕,现在可以执行Docker安装

# 安装Docker
yum install docker-ce docker-ce-cli

# 安装完成后检验
docker --version

# 启动Docker
sudo systemctl start docker
 
开机自启
sudo systemctl enable docker

为了加速Docker构建,可以进行如下操作

# 在/etc/docker/目录下新建配置文件daemon.json
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://k2hk3nbm.mirror.aliyuncs.com"]
}
EOF

# 阿里云镜像地址可以从阿里云控制台获取

配置完重启动Docker
sudo systemctl restart docker

docker-compose安装

# 可以在以下地址,查看docker-compose最新版本
https://github.com/docker/compose/releases/

因为github地址经常很慢,所以选择国内源进行安装
curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

替换链接中1.27.4为最新的版本号即可

增加执行权限
chmod +x /usr/local/bin/docker-compose

安装完成校验
docker-compose -v
# docker-compose version 1.27.4, build 40524192

 

系统配置转发

编辑文件/etc/sysctl.conf,增加以下内容

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward = 1

 

问题处理:

ERROR: for redis  Cannot start service redis: driver failed programming external connectivity on endpoint env-redis (ab47b52ebf9ce02553fdf6beae167b041f89a4ec68b6aae5a306c5367b8d7612):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.18.0.2:6379 ! -i br-27901d413de9: iptables: No chain/target/match by that name.

处理办法:

systemctl restart docker

问题处理:

Could not connect to Redis at 10.211.55.4:6379: Connection refused

处理办法:

端口监听,可能只监听了本地127.0.0.1,应该改成0.0.0.0

 

如果需要连接Github拉取代码进行构建,可以通过ssh连接的方式

# 使用如下命令生成** XXX等请替换成个人邮箱
ssh-****** -t rsa -b 4096 -C “aaa@qq.com"

然后一路回车到结束

# 复制公钥到Github并在SSH里配置
cat ~/.ssh/id_rsa.pub

# 配置完成后,通过以下命令进行验证,输入yes
ssh -T aaa@qq.com