前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[置顶] 离线版centos8安装docker笔记

[置顶] 离线版centos8安装docker笔记

作者头像
小小许
发布2022-01-07 14:22:17
1.7K0
发布2022-01-07 14:22:17
举报
文章被收录于专栏:angularejs学习篇

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

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

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

  初出茅庐,手忙脚乱:怀着忐忑的心开始第一次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,具体目录木有什么要求,根据自己爱好来操作。

2.2安装包解压

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

代码语言:javascript
复制
cd /home/installpack
tar xzvf docker-19.03.6.tgz

  执行完毕以后,你会看到一个docker文件夹,那就大功告成,这一步我相信大家想错都难噢,不会给你错的机会。

2.3安装

安装也很简单了,只需执行以下两个命令即可:

代码语言:javascript
复制
cp docker/* /usr/bin/
dockerd &

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

2.4测试

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

代码语言:javascript
复制
docker info

  显示如下界面,那就真的恭喜您,第一步安装成功,黎明就在眼前了。

  当然你也不需要太关心这一些内容是说明意思,或者很简单的看安装成功没得,只要没有红色的字出现就是万事大吉。

  如果错了,也不要慌,下面还有呢

2.5报错回撤

  无论是安装过程中报错还是测试结果报错,那都是错,如果错了请按照以下步骤来完成回撤。

  首先想一想,是否还在网上找了其他大师的教程操作,如果找了,那么你首先要想一想做了哪一些操作,并全部还原回去,尤其是修改了某一些配置文件,是不是想起老师常说的好记性不如烂笔头是很有道理的啦。

  接下来就做本次安装文件删除即可,分别执行以下命令:

代码语言:javascript
复制
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文件。相关命令如下:

代码语言:javascript
复制
	mkdir /etc/containerd
	touch /usr/lib/systemd/system/containerd.service
	vi /usr/lib/systemd/system/containerd.service

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

代码语言:javascript
复制
[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服务,命令如下:

代码语言:javascript
复制
# 重新加载配置信息
systemctl daemon-reload

#设置containerd.service为开机启动
systemctl enable containerd.service

#启动containerd服务
systemctl start containerd.service

#查看containerd服务启动状态
systemctl status containerd.service

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

3.2创建配置docker.socket服务
代码语言:javascript
复制
在/usr/lib/systemd/system文件夹创建docker.socket文件,命令如下:
代码语言:javascript
复制
groupadd docker
touch /usr/lib/systemd/system/docker.socket
vi /usr/lib/systemd/system/docker. socket 

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

代码语言:javascript
复制
[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

  启动containerd服务,查看是否正常,命令如下:

代码语言:javascript
复制
# 重新加载配置信息
systemctl daemon-reload

#设置containerd.service为开机启动
systemctl enable containerd.service

#启动containerd服务
systemctl start containerd.service

#查看containerd服务启动状态
systemctl status containerd.service

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

3.3创建配置docker.service服务

代码语言:javascript
复制
在/usr/lib/systemd/system文件夹创建docker.service文件,命令如下:
代码语言:javascript
复制
touch /usr/lib/systemd/system/docker.service
vi /usr/lib/systemd/system/docker.service

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

代码语言:javascript
复制
[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.
# 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.
StartLimitBurst=3
# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# 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.
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.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
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

  启动docker.service服务,命令如下:

代码语言:javascript
复制
#解除
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,如还是不行在尝试重启服务器,反正我是重启服务器才成功的。

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

4. 安装总结

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 下载docker离线安装包
  • 2. 安装docker
    • 2.1安装包上传
      • 2.2安装包解压
        • 2.3安装
          • 2.4测试
            • 2.5报错回撤
            • 3. 设置docker为系统服务
              • 3.1创建配置containerd服务
                • 3.3创建配置docker.service服务
                • 4. 安装总结
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档