离线版centos8安装docker笔记

嗨嗨哈哈,已经很久没有坐下来胡编乱造一点笔记了,平时云服务器搞惯了,一个命令就安装好了docker了的,但这次生不逢时的新机房就没那么幸运了,有多不逢时超乎想象,不仅仅服务器没有外网,就连周围方圆一公里手机网络都没有,要查一个资料只能步行公里开外去搜寻网络。

不打无准备之战:我就是一名菜鸟,加上这样的环境,岂不是雪上加霜,为了能够顺利的完成部署工作,我也是拼了,哈哈哈哈,网上找了很多关于离线docker的安装资料,各种花式玩法真是百家争鸣,搜索珍藏了1 mole的资料,忐忑的去现场实施了。

看到服务器配置的第一眼,哇靠,这配置真奢侈啊,妥妥的土豪,你没看错,这只是冰山一角。就问你一句话,奢不奢侈。

离线版centos8安装docker笔记

初出茅庐,手忙脚乱:怀着忐忑的心开始第一次docker离线安装之旅,第一次安装稳稳的宣布失败,根据错误飞奔到公里开外去找度大娘,找完度大娘又满怀憧憬的去修复,修复旧的问题又有新的问题,这样周而复始了N个回合,docker还是顽固的起不起来。该下班了,来日再战。

重整旗鼓,来日再战:自己电脑安装一个centos8虚拟机环境,持续搜索,尝试多次,测试成功了,整理好思路,饱饱睡一觉,来日再战。

依葫画瓢,一战成功:第二天回到机房,找了一台新服务器,按照昨晚的成功经验,一战成功。同样的方法继续搞昨天未成功的服务器,还是宣告失败,成功的回不去了。还好我有一个习惯,新环境按照,我都喜欢操作一步记录一步,找到昨天的安装笔记,一步一操作回撤,最后成功回炉再造。

哈哈哈,唧唧歪歪的说了半天,还没有进入到今天的主题,嘿嘿,你们是不是为我的啰里啰唆感到着急,嗯嗯,好下面我把成功安装的笔记整理一下发出来,供有需要的你做一个参考。

1. 下载docker离线安装包

Docker离线版安装包下载很简单,直接根据下面的地址选择自己合适的版本下载即可:

https://download.docker.com/linux/static/stable/x86_64/

但是在具体版本选择的时候给点建议:不要选择太低的版本,低版本无论是性能还是其他都比理想,版本太新也不知道稳定性是否有问题,哈哈哈,是不是觉得我太保守啦,嗯嗯嗯,我的出发点就是稳定是第一要义,我建议选择19以上版本,以上纯属个人狭隘观点,如有冒犯多多包涵。

我习惯了一直用的是docker-19.03.6.tgz,这次也就选择它了。

2. 安装docker

2.1安装包上传

将上一步骤准备好的docker安装包上传到离线服务器,我习惯上传到目录:/home/installpack,具体目录木有什么要求,根据自己爱好来操作。

离线版centos8安装docker笔记

2.2安装包解压

首先需要进入到安装包,并执行解压,当然你用决定路径,进入安装包就多此一举了哈,我不嫌麻烦,老老实实一步一步来。分别执行以下命令

sql;gutter:true; cd /home/installpack tar xzvf docker-19.03.6.tgz</p> <pre><code> 执行完毕以后,你会看到一个docker文件夹,那就大功告成,这一步我相信大家想错都难噢,不会给你错的机会。 ![离线版centos8安装docker笔记](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/381957-20211228083817187-1404911933.png) ### 2.3安装 安装也很简单了,只需执行以下两个命令即可: ;gutter:true;
cp docker/* /usr/bin/
dockerd &

这一步也许你就没那么幸运了,如果是第一次安装,我想你还是会一如既往的顺,只要不报错,说明你就成功了。

2.4测试

测试是否成功安装,也就一句话的事,执行以下命令即可:

sql;gutter:true; docker info</p> <pre><code> 显示如下界面,那就真的恭喜您,第一步安装成功,黎明就在眼前了。 当然你也不需要太关心这一些内容是说明意思,或者很简单的看安装成功没得,只要没有红色的字出现就是万事大吉。 如果错了,也不要慌,下面还有呢 ![离线版centos8安装docker笔记](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/381957-20211228083817705-2033739091.png) ### 2.5报错回撤 无论是安装过程中报错还是测试结果报错,那都是错,如果错了请按照以下步骤来完成回撤。 首先想一想,是否还在网上找了其他大师的教程操作,如果找了,那么你首先要想一想做了哪一些操作,并全部还原回去,尤其是修改了某一些配置文件,是不是想起老师常说的好记性不如烂笔头是很有道理的啦。 接下来就做本次安装文件删除即可,分别执行以下命令: ;gutter:true;
rm -rf /var/run/docker
rm -rf /var/lib/docker
rm -rf /var/run/docker.pid
rm -rf /var/run/docker.sock

停止docker相关的进程
ps -aux | grep docker
kill掉查询出来的全部进程

解除docker相关进程占用端口
netstat -nplt | grep docker

完成以上操作后,又执行一遍安装+测试的命令即可,如果重复执行多次不爽,那我建议你可以拿出问题修复杀手锏了:重启服务器

3. 设置docker为系统服务

3.1创建配置containerd服务

在etc目录下创建containerd文件夹,并在containerd文件夹下创建containerd.service文件。相关命令如下:

sql;gutter:true; mkdir /etc/containerd touch /usr/lib/systemd/system/containerd.service vi /usr/lib/systemd/system/containerd.service</p> <pre><code> 其中containerd.service文件的内容填写如下内容(先不关心里面配置的什么,先跑起来才是王道,后面有时间在慢慢研究): ;gutter:true;
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target
[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Delegate=yes
KillMode=process
LimitNOFILE=1048576
Having non-zero Limit*s causes performance problems due to accounting overhead
in the kernel. We recommend using cgroups to do container-local accounting.

LimitNPROC=infinity
LimitCORE=infinity
[Install]
WantedBy=multi-user.target

启动containerd服务,命令如下:

sql;gutter:true; 重新加载配置信息 systemctl daemon-reload</p> <h1>设置containerd.service为开机启动</h1> <p>systemctl enable containerd.service</p> <h1>启动containerd服务</h1> <p>systemctl start containerd.service</p> <h1>查看containerd服务启动状态</h1> <p>systemctl status containerd.service</p> <pre><code> 依次执行以上命令,最后看到绿色的【active (running)】,那恭喜您containerd服务配置启动成功。如果服务启动失败,还是终极杀手锏来解决:先尝试重启docker,如还是不行在尝试重启服务器,反正我是没有重启 ![](https://img2020.cnblogs.com/blog/381957/202112/381957-20211228083818148-951520400.png) ##### 3.2创建配置docker.socket服务 </code></pre> <p>在/usr/lib/systemd/system文件夹创建docker.socket文件,命令如下:</p> <pre><code> ;gutter:true;
groupadd docker
touch /usr/lib/systemd/system/docker.socket
vi /usr/lib/systemd/system/docker. socket

其中docker.socket文件的内容填写如下内容(先不关心里面配置的什么,先跑起来才是王道,后面有时间在慢慢研究):

sql;gutter:true; [Unit] Description=Docker Socket for the API PartOf=docker.service [Socket] ListenStream=/var/run/docker.sock SocketMode=0660 SocketUser=root 如果出现错误:chown socket at step GROUP: No such process, 可以修改下面的 SocketGroup=root 或创建 docker 用户组(命令 groupadd docker) SocketGroup=docker [Install] WantedBy=sockets.target</p> <pre><code> 启动containerd服务,查看是否正常,命令如下: </code></pre> <p>重新加载配置信息 systemctl daemon-reload</p> <h1>设置containerd.service为开机启动</h1> <p>systemctl enable containerd.service</p> <h1>启动containerd服务</h1> <p>systemctl start containerd.service</p> <h1>查看containerd服务启动状态</h1> <p>systemctl status containerd.service</p> <pre><code> 依次执行以上命令,最后看到绿色的【active (running)】,那恭喜您containerd服务配置启动成功。如果服务启动失败,还是终极杀手锏来解决:先尝试重启docker,如还是不行在尝试重启服务器,反正我是没有重启 ![](https://img2020.cnblogs.com/blog/381957/202112/381957-20211228083818148-951520400.png) ### 3.3创建配置docker.service服务 </code></pre> <p>在/usr/lib/systemd/system文件夹创建docker.service文件,命令如下:</p> <pre><code> ;gutter:true;
touch /usr/lib/systemd/system/docker.service
vi /usr/lib/systemd/system/docker.service

其中docker.service文件的内容填写如下内容(先不关心里面配置的什么,先跑起来是王道,后面有时间在慢慢研究):

sql;gutter:true; [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com BindsTo=containerd.service After=network-online.target firewalld.service containerd.service Wants=network-online.target Requires=docker.socket [Service] Type=notify the default is not to use systemd for cgroups because the delegate issues still exists and systemd currently does not support the cgroup feature set required for containers run by docker ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.</p> <p>Both the old, and new location are accepted by systemd 229 and up, so using the old location to make them work for either version of systemd.</p> <p>StartLimitBurst=3 Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.</p> <p>Both the old, and new name are accepted by systemd 230 and up, so using the old name to make this option work for either version of systemd.</p> <p>StartLimitInterval=60s Having non-zero Limit*s causes performance problems due to accounting overhead in the kernel. We recommend using cgroups to do container-local accounting.</p> <p>LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity Comment TasksMax if your systemd version does not support it.</p> <p>Only systemd 226 and above support this option.</p> <p>TasksMax=infinity set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes kill only the docker process, not all processes in the cgroup KillMode=process [Install] WantedBy=multi-user.target</p> <pre><code> 启动docker.service服务,命令如下: ;gutter:true;
#解除
systemctl unmask docker.service
systemctl unmask docker.socket

重新加载配置信息
systemctl daemon-reload

#设置docker为开机启动
systemctl enable docker

#启动docker服务
systemctl start docker

#查看docker服务启动状态
systemctl status docker

依次执行以上命令,最后看到绿色的【active (running)】,那恭喜您docekr.service服务配置启动成功。如果服务启动失败,还是终极杀手锏来解决:先尝试重启docker,如还是不行在尝试重启服务器,反正我是重启服务器才成功的。

离线版centos8安装docker笔记

当看到docker正常启动的那一刻,这次环境搭建之旅忐忑的心才算落地,实话。

4. 安装总结

走到这一步,恭喜您离线版docker搭建完成,简单回顾一下本次安装体会:

戒急戒躁:不要急于求成,跟着文档一个萝卜一个坑的走好

善于笔记:好记性不如烂笔头,记录自己的每一步操作,便于事后的回撤和总结

本次整理没有其他目的,就是一个环境部署笔记总结,正好如果您也在找,也许可以帮助到你一点什么呢,岂不是一件快事。

好了,本次记录就在此see good by。后面有时间在将docker中的相关镜像迁移也做一个整理分享。

END
为了更高的交流,欢迎大家关注我的公众号,扫描下面二维码即可关注,谢谢:

离线版centos8安装docker笔记

Original: https://www.cnblogs.com/xiaoXuZhi/p/centos_doceker.html
Author: 程序员修炼之旅
Title: 离线版centos8安装docker笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612745/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球