docker 安装

准备

CentOS7.x系统自带的3.10.x内核存在一些Bug,Docker运行不稳定,建议升级内核

  • 下载内核源
[root@master ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
获取http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
警告:/var/tmp/rpm-tmp.ABHzQf: 头V4 DSA/SHA1 Signature, 密钥 ID baadae52: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:elrepo-release-7.0-3.el7.elrepo  ################################# [100%]
  • 安装最新版本内核
[root@master ~]# yum --enablerepo=elrepo-kernel install -y kernel-lt
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.sjtu.edu.cn
 * elrepo: mirrors.tuna.tsinghua.edu.cn
 * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
elrepo                                                                                                                                                                                                                    | 3.0 kB  00:00:00     
elrepo-kernel                                                                                                                                                                                                             | 3.0 kB  00:00:00     
(1/2): elrepo/primary_db                                                                                                                                                                                                  | 337 kB  00:00:00     
(2/2): elrepo-kernel/primary_db                                                                                                                                                                                           | 2.0 MB  00:00:12     
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-lt.x86_64.0.5.4.95-1.el7.elrepo 将被 安装
--> 解决依赖关系完成

依赖关系解决

=================================================================================================================================================================================================================================================
 Package                                                架构                                                版本                                                                源                                                          大小
=================================================================================================================================================================================================================================================
正在安装:
 kernel-lt                                              x86_64                                              5.4.95-1.el7.elrepo                                                 elrepo-kernel                                               50 M

事务概要
=================================================================================================================================================================================================================================================
安装  1 软件包

总下载量:50 M
安装大小:227 M
Downloading packages:
警告:/var/cache/yum/x86_64/7/elrepo-kernel/packages/kernel-lt-5.4.95-1.el7.elrepo.x86_64.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID baadae52: NOKEY=============================================================== ] 1.2 MB/s |  50 MB  00:00:00 ETA 
kernel-lt-5.4.95-1.el7.elrepo.x86_64.rpm 的公钥尚未安装
kernel-lt-5.4.95-1.el7.elrepo.x86_64.rpm                                                                                                                                                                                  |  50 MB  00:00:38     
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org 检索密钥
导入 GPG key 0xBAADAE52:
 用户ID     : "elrepo.org (RPM Signing Key for elrepo.org) <secure@elrepo.org>"
 指纹       : 96c0 104f 6315 4731 1e0b b1ae 309b c305 baad ae52
 软件包     : elrepo-release-7.0-3.el7.elrepo.noarch (installed)
 来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
  正在安装    : kernel-lt-5.4.95-1.el7.elrepo.x86_64                                                                                                                                                                                         1/1 
  验证中      : kernel-lt-5.4.95-1.el7.elrepo.x86_64                                                                                                                                                                                         1/1 

已安装:
  kernel-lt.x86_64 0:5.4.95-1.el7.elrepo                                                                                                                                                                                                         

完毕!
  • 查看可用内核
[root@master ~]# cat /boot/grub2/grub.cfg |grep menuentry
if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
menuentry 'CentOS Linux (5.4.95-1.el7.elrepo.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.el7.x86_64-advanced-8b7cd640-65a6-40a3-a483-a34ec6b66ce8' {
menuentry 'CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.el7.x86_64-advanced-8b7cd640-65a6-40a3-a483-a34ec6b66ce8' {
menuentry 'CentOS Linux (0-rescue-c5860b2961c54ddc9032f382e49d5efb) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-c5860b2961c54ddc9032f382e49d5efb-advanced-8b7cd640-65a6-40a3-a483-a34ec6b66ce8' {
  • 设置开机从新内核启动
[root@master ~]# grub2-set-default "CentOS Linux (5.4.95-1.el7.elrepo.x86_64) 7 (Core)"
  • 查看内核启动项
[root@master ~]# grub2-editenv list
saved_entry=CentOS Linux (5.4.95-1.el7.elrepo.x86_64) 7 (Core)
  • 重启系统使内核生效
reboot
  • 查看内核版本是否生效
uname -r

安装docker

  • 检查docker
which docker
yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux
  • 关闭防火墙

如果忘关防火墙了,导致docker运行的服务器无法访问,则先关闭防火墙,再重启docker即可。

systemctl stop firewalld
systemctl disable firewalld.service

第一种方式

  • 下载docker包
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.9-3.el7.x86_64.rpm
  • 安装docker
yum -y localinstall docker-ce-19.03.9-3.el7.x86_64.rpm

第二种方式

  • 添加仓库
yum -y install yum-utils
#官方源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#国内源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装docker
yum -y install docker-ce docker-ce-cli containerd.io
  • 安装指定版本

k8s报错:this Docker version is not on the list of validated versions: 20.10.3. Latest validated version: 19.03,那就是版本过高了,没有k8s要求就默认装了。

#列出所有可以安装的版本
[root@master ~]# yum list docker-ce.x86_64 --showduplicates | sort -r
已加载插件:fastestmirror, langpacks
已安装的软件包
可安装的软件包
 * updates: mirrors.ustc.edu.cn
Loading mirror speeds from cached hostfile
 * extras: mirrors.ustc.edu.cn
docker-ce.x86_64            3:20.10.3-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.3-3.el7                    @docker-ce-stable
docker-ce.x86_64            3:20.10.2-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.1-3.el7                    docker-ce-stable 
docker-ce.x86_64            3:20.10.0-3.el7                    docker-ce-stable 
......
# docker版本高了安装K8s的时候会报错,所以我这边安装了19.03
yum list docker-ce.x86_64 docker-ce-cli.x86_64 --showduplicates | sort -r | grep 19.03
[root@master ~]# yum list docker-ce.x86_64 docker-ce-cli.x86_64 --showduplicates | sort -r | grep 19.03
docker-ce.x86_64              3:19.03.9-3.el7                  docker-ce-stable 
docker-ce.x86_64              3:19.03.8-3.el7                  docker-ce-stable 
docker-ce.x86_64              3:19.03.7-3.el7                  docker-ce-stable 
docker-ce.x86_64              3:19.03.6-3.el7                  docker-ce-stable 
docker-ce.x86_64              3:19.03.5-3.el7                  docker-ce-stable 
......
docker-ce.x86_64              3:19.03.0-3.el7                  docker-ce-stable 
docker-ce-cli.x86_64          1:19.03.9-3.el7                  docker-ce-stable 
docker-ce-cli.x86_64          1:19.03.8-3.el7                  docker-ce-stable 
docker-ce-cli.x86_64          1:19.03.7-3.el7                  docker-ce-stable 
docker-ce-cli.x86_64          1:19.03.6-3.el7                  docker-ce-stable 
......
yum -y install docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io

下载安装包命令 yumdownloader docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io --resolve --destdir=docker
yum install --downloadonly --downloaddir=docker docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io

  • 安装docker-compoes
curl -SL https://ghfast.top/https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

修改docker目录

mkdir /etc/docker/ /data
cat > /etc/docker/daemon.json << EOF
{
    "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://h9vtw6kz.mirror.aliyuncs.com"
  ],
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "storage-driver": "overlay2",
    "storage-opts": [
  ],
    "bip": "10.0.0.1/24",
    "ipv6": false,
    "data-root": "/data/docker",
    "log-opts": {
    "max-size": "1m",
    "max-file": "3"
 }
}

EOF
systemctl enable docker
systemctl restart docker

如果已经安装docker参考以下步骤

  • 停止docker服务
systemctl stop docker
  • 找到docker存储目录,移动到需要更改的位置,我这边已经创建好了/data目录

建议使用cp,不建议mv

find / -name docker -type d
cp -r docker /data
  • cp 完成后删除原来的文件
rm -f docker
  • 两种方式
  1. 查找到docker.service服务文件,修改配置文件
find / -name docker.service -type f
vim docker.service

新增ExecStart=/usr/bin/dockerd --graph /data/docker,启动docker服务

systemctl enable docker
systemctl daemon-reload
systemctl start docker
  1. 重新建立软连接,以及重新reload一下
ln -s /data/docker docker #后面docker为最开始查找到的docker目录,最好写绝对路径
systemctl enable docker
systemctl daemon-reload
systemctl start docker

脚本

升级kernel:update_kernel.sh
部署docker:install_docker.sh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容