FYF
» HerBert
Toggle navigation
FYF
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
docker
8、DG
9、集群相关
HCCDP
实验题
About Me
归档
标签
1、安装docker
无
2026-06-01 19:29:52
5
0
0
admin
[TOC] ###安装前环境准备 ```bash # LINUX准备 # 装好系统后,配置/etc/hosts echo "192.168.2.210 yun-node01" >> /etc/hosts echo "192.168.2.211 yun-node02" >> /etc/hosts echo "192.168.2.212 yun-node03" >> /etc/hosts echo "192.168.2.213 yun-ha01" >> /etc/hosts echo "192.168.2.214 yun-ha02" >> /etc/hosts # 配置网络 cat >> /etc/sysconfig/network << EOF NETWORKING=yes EOF cat /etc/sysconfig/network # 配置DNS echo "nameserver 192.168.1.250" >> /etc/resolv.conf ping www.baidu.com # 配置LVM和文件系统 pvcreate /dev/sdb vgcreate datavg /dev/sdb lvcreate -n datalv -L 500000M datavg mkfs.xfs /dev/datavg/datalv cat >> /etc/fstab << EOF /dev/datavg/datalv /data xfs defaults 0 0 EOF cat /etc/fstab swapoff -a sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab # 创建目录 mkdir -p /data mkdir -p /data/docker mkdir -p /data/soft # 配置系统限制 cat >> /etc/security/limits.conf << EOF soft nproc 65535 hard nproc 65535 soft nofile 65535 hard nofile 65535 soft stack 65535 hard stack 65535 soft memlock unlimited hard memlock unlimited EOF cat /etc/security/limits.conf # 配置内核参数 cat > /etc/sysctl.d/sysctl.conf << EOF fs.file-max = 2097152 fs.nr_open = 2097152 vm.swappiness = 0 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 10 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv4.neigh.default.gc_stale_time = 120 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.tcp_tw_recycle = 0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 net.ipv4.ip_forward = 1 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.netfilter.nf_conntrack_max = 2310720 fs.inotify.max_user_watches = 89100 fs.may_detach_mounts = 1 net.bridge.bridge-nf-call-arptables = 1 vm.overcommit_memory = 1 vm.panic_on_oom = 0 EOF # 配置nproc限制 echo "* - nproc 65535" > /etc/security/limits.d/90-nproc.conf # 配置时区 timedatectl set-timezone Asia/Shanghai timedatectl set-local-rtc 0 systemctl restart rsyslog systemctl restart crond # 禁用SELinux echo "SELINUX=disabled" > /etc/selinux/config echo "#SELINUXTYPE=targeted" >> /etc/selinux/config cat /etc/selinux/config setenforce 0 # 停止并禁用防火墙和不必要的服务 systemctl stop firewalld.service systemctl disable firewalld.service systemctl stop postfix systemctl disable postfix systemctl stop dnsmasq systemctl disable dnsmasq # 配置本地YUM源 cd /etc/yum.repos.d mkdir bk mv *.repo bk/ cat > /etc/yum.repos.d/itpux.repo << EOF [EL8-1] name=Linux-8-DVD1 baseurl=file:///mnt/AppStream gpgcheck=0 enabled=1 [EL8-2] name=Linux-8-DVD2 baseurl=file:///mnt/BaseOS gpgcheck=0 enabled=1 EOF mount /dev/cdrom /mnt # 安装所需软件包 dnf install -y libaio-devel libnsl flex bison ncurses-devel glibc-devel patch readline-devel net-tools tar bzip2 python3 cmake make gcc zlib gcc-c++ perl zlib-devel tcl openssl openldap pam yum-utils device-mapper-persistent-data lvm2 conntrack ipset iptables curl sysstat libseccomp wget lsof telnet epel-release psmisc vim nfs-utils network-scripts curl pvsadm # 加载内核模块 cat > /etc/modules-load.d/ipvs.conf << EOF ip_vs ip_vs_lc ip_vs_wlc ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_rr ip_vs_wrr ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack ip_tables ip_set xt_set ipt_set ipt_rpfilter ipt_REJECT ipip EOF systemctl restart systemd-modules-load.service lsmod | grep -e ip_vs -e nf_conntrack # 配置SSH无密码登录 ssh-keygen -t rsa for ip in 192.168.2.210 192.168.2.211 192.168.2.212 192.168.2.213 192.168.2.214; do ssh-copy-id $ip done # 配置rsyslogd和systemd-journald mkdir /var/log/journal mkdir /etc/systemd/journald.conf.d cat > /etc/systemd/journald.conf.d/99-prophet.conf << EOF [Journal] Storage=persistent Compress=yes SyncIntervalSec=5m SystemMaxUse=10G SystemMaxFileSize=200M MaxRetentionSec=2week ForwardToSyslog=no EOF systemctl restart systemd-journald # 安装chrony并配置时间同步 yum -y install chrony cp /etc/chrony.conf /etc/chrony.conf.bak cat >> /etc/chrony.conf << EOF server 127.127.1.0 allow 192.168.2.0/24 local stratum 10 EOF for ip in 192.168.2.211 192.168.2.212 192.168.2.213 192.168.2.214; do ssh $ip "cp /etc/chrony.conf /etc/chrony.conf.bak" ssh $ip "cat >> /etc/chrony.conf << EOF server 192.168.2.210 allow 192.168.2.0/24 local stratum 10 EOF" done systemctl start chronyd systemctl enable chronyd chronyc sources -v # 关闭NUMA和透明大页 cp /boot/grub2/grub.cfg{,.bak} grub2-mkconfig -o /boot/grub2/grub.cfg cp /etc/default/grub /etc/default/grub.bak fline_num=$(cat -n /etc/default/grub | grep 'GRUB_CMDLINE_LINUX' | awk '{print $1}') sed -i --follow-symlinks "s/numa=off//g" /etc/default/grub sed -i --follow-symlinks "s/transparent_hugepage=never//g" /etc/default/grub sed -i --follow-symlinks "${fline_num}s/\"$/ numa=off\"/g" /etc/default/grub sed -i --follow-symlinks "${fline_num}s/\"$/ transparent_hugepage=never\"/g" /etc/default/grub cat /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg # 设置环境变量 echo "PATH=/data/docker/bin:\$PATH" >> ~/.bash_profile echo "export NODE_IPS=(192.168.2.210 192.168.2.211 192.168.2.212 192.168.2.213 192.168.2.214)" >> ~/.bash_profile echo "export NODE_IPS2=(192.168.2.213 192.168.2.214)" >> ~/.bash_profile echo "export DOCKER_DIR=/data/docker" >> ~/.bash_profile ``` 根据你提供的命令片段,以下是整理后的脚本,用于在多个节点上部署Docker: ###安装docker软件 ```bash # 解压Docker tar包 cd /data/soft tar -xvf docker-20.10.16.tgz # 加载环境变量 source ~/.bash_profile # 遍历节点IP列表 for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" # 在远程节点上创建目录 ssh root@${node_ip} "mkdir -p /data/docker/bin/" ssh root@${node_ip} "mkdir -p /data/docker/data/" # 将Docker二进制文件复制到远程节点 scp /data/soft/docker/* root@${node_ip}:/data/docker/bin/ # 设置远程节点上Docker二进制文件的执行权限 ssh root@${node_ip} "chmod +x /data/docker/bin/*" done ``` ###创建docker服务 ```bash cat > docker.service << "EOF" [Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.io [Service] WorkingDirectory=##DOCKER_DIR## Environment="PATH=/data/docker/bin:/bin:/sbin:/usr/bin:/usr/sbin" EnvironmentFile=-/run/docker ExecStart=/data/docker/bin/dockerd $DOCKER_NETWORK_OPTIONS ExecReload=/bin/kill -s HUP $MAINPID Restart=on-failure RestartSec=5 LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Delegate=yes KillMode=process [Install] WantedBy=multi-user.target EOF # 替换占位符 ##DOCKER_DIR## 为实际的 Docker 工作目录路径 sed -i -e "s|##DOCKER_DIR##|${DOCKER_DIR}|" docker.service # 遍历节点IP列表并分发 docker.service 文件 for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp docker.service root@${node_ip}:/etc/systemd/system/ # 在远程节点上创建必要的目录结构 ssh root@${node_ip} "mkdir -p /etc/docker/ ${DOCKER_DIR}/{data,bin}" done # 创建 Docker 配置文件 docker-daemon.json cat > docker-daemon.json <<EOF { "registry-mirrors": ["https://e5kcafnr.mirror.aliyuncs.com"], "insecure-registries": ["192.168.2.213:8880","192.168.2.214:8880"], "max-concurrent-downloads": 20, "max-concurrent-uploads": 10, "debug": true, "data-root": "/data/docker/data", "log-opts": { "max-size": "100m", "max-file": "5" } } EOF # 分发 docker-daemon.json 文件到所有节点 for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp docker-daemon.json root@${node_ip}:/etc/docker/daemon.json done ``` ###启动docker ```bash # 启动 Docker 服务 for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" ssh root@${node_ip} "systemctl daemon-reload && systemctl enable docker && systemctl restart docker" done # 检查服务运行状态 for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" ssh root@${node_ip} "systemctl status docker | grep Active" done # 检查 Docker 配置信息 docker -v docker version ``` ###安装docker-compose ```bash # 进入软件目录 cd /data/soft # 下载 Docker Compose 二进制文件 curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose # 赋予执行权限 chmod +x docker-compose # 分发二进制文件到所有节点 for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp /data/soft/docker-compose root@${node_ip}:/data/docker/bin/docker-compose ssh root@${node_ip} "chmod +x /data/docker/bin/*" ssh root@${node_ip} "source ~/.bash_profile && docker-compose version" done ```
上一篇:
1、删除实例方案
下一篇:
1、改ip
0
赞
5 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网