Centos 安装Docker(含在线和离线)
本文最后更新于 766 天前,其中的信息可能已经有所发展或是发生改变。

Centos 安装Docker(含在线和离线)

本次是以Centos7 安装,其他系统请参考官方文档(英文):https://docs.docker.com/engine/install/centos/

系统环境:

系统要求:

Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。

查看系统的内核及其版本:

查看系统的内核:

uname -r

查看系统版本:

cat /etc/redhat-release or cat /etc/os-release

[root@gzbsc001 ~]# uname -r
3.10.0-1160.36.2.el7.x86_64
[root@gzbsc001 ~]# 
[root@gzbsc001 ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

[root@gzbsc001 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

总结就是系统环境:docker最低支持centos7且在64位平台上,内核版本在3.10以上,其他可以先不管…..

在线安装步骤:

1.卸载旧的版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.使用 yum 安装

执行以下命令安装依赖包:

sudo yum install -y yum-utils gcc

3.设置镜像的仓库

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

# 设置阿里云的Docker镜像仓库
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 官方源
# $ sudo yum-config-manager \
#     --add-repo \
#     https://download.docker.com/linux/centos/docker-ce.repo

4.更新yum软件包索引

yum makecache fast

5.安装docker相关的配置

sudo yum install docker-ce docker-ce-cli containerd.io

指定版本:

在上面安装前,查询要安装的版本

yum list docker-ce.x86_64 --showduplicates | sort -r

这里一般需要安装指定版本的话,要安装 docker-ce docker-ce-cli

这里示例需安装 18.09.x 版本的docker

yum list docker-ce.x86_64 docker-ce-cli.x86_64 --showduplicates | sort -r | grep 18.09

yum install -y docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io

yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io

出现了completed即安装成功。

6.启动Docker

systemctl start docker
# 查看当前版本号,是否启动成功
docker version
# 设置开机自启动
systemctl enable docker

7.下载hello-world镜像进行测试

下载的hello world镜像

docker run hello-world

查看下载的hello world镜像

docker images

8.建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

1.建立 docker 组:

sudo groupadd docker

2.将当前用户加入 docker 组:

sudo usermod -aG docker $USER

$USER为您的当前用户..比如现在登录是glj,则将glj用户加入docker用户组.–>sudo usermod -aG docker glj

Centos 离线安装步骤:

生产环境中一般都是没有公网资源的,所以怎么在生产服务器上离线部署Docker?

tgz安装包安装

1.下载官方安装包

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

2.上传到服务器/usr/local/下,并且解压

tar -zxvf docker-20.10.9.tgz

3.将解压出来的docker文件复制到 /usr/bin/ 目录下

cp docker/* /usr/bin/

4.进入/etc/systemd/system/目录,并创建docker.service文件
cd /etc/systemd/system/

touch docker.service

vi docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[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 --selinux-enabled=false --insecure-registry=ip
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# 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
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# 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
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

注意

如果使用 ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=ip

需要把 --insecure-registry=ip 此处改为你自己服务器ip

5.给docker.service文件添加执行权限

chmod +x /etc/systemd/system/docker.service

6.重新加载配置文件(每次有修改docker.service文件时都要重新加载下),并且启动docker

重新加载配置文件:systemctl daemon-reload

启动docker:systemctl start docker

设置开机启动:systemctl enable docker.service

7.测试docker

docker -v

离线YUM本地文件安装(需要同系统,无安装过docker的服务器+装有离线yum源):

1.下载yum的安装包

sudo yum install -y --downloadonly --downloaddir=$PWD/devel yum-utils device-mapper-persistent-data lvm2

2.安装yum依赖:

sudo yum install -y devel/*.rpm

3.设置镜像的仓库

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

# 设置阿里云的Docker镜像仓库
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 官方源
# $ sudo yum-config-manager \
#     --add-repo \
#     https://download.docker.com/linux/centos/docker-ce.repo

yum makecache fast
4.下载docker安装包:

yum install -y --downloadonly --downloaddir=$PWD/docker docker-ce docker-ce-cli containerd.io

image-20211122182817386

5.上传到离线服务器安装,启动测试docker

安装:

sudo yum install -y devel/*.rpm
sudo yum install -y docker/*.rpm
systemctl enable docker
systemctl start docker

测试:

docker -v

修改Docker默认存储路径(重要!否则)

Docker默认的镜像和容器存储位置在/var/lib/docker中,如果仅仅是做测试,我们可能没有必要修改,但是当大量使用的时候,我们可能就要默认存储的位置了。

1.停止Docker服务

systemctl stop docker.service

systemctl stop docker.socket

2.修改默认存储路径的三种方式:

1.修改docker.service配置文件方式

1.1 修改docker.service配置文件,在EXECStart的后面增加 –graph=/data01/docker(您要更换的存储路径)。

[patrol@owy-bd-c16-21 ~]$ cat /usr/lib/systemd/system/docker.service
...
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph=/data01/docker
...

1.2 将当前Docker存储目录复制到/data目录下

cp -R /var/lib/docker/ /data01

1.3 重启docker

systemctl daemon-reload

systemctl restart docker

1.4 查询是否切换成功

docker info

image-20211124113527018

2.修改 /etc/docker/daemon.json 配置文件方式(我常用的方式)

2.1 修改/etc/docker/daemon.json

打开 /etc/docker/daemon.json 输入以下内容(如果没有找到就创建一个)

{
    "graph":"/data01/docker"
}

2.2 将当前Docker存储目录复制到/data目录下

cp -R /var/lib/docker/ /data01

2.3 重启docker

systemctl restart docker

2.4 查询是否切换成功

docker info

3.软链接方式(这个通常已经是后期的方式了…)

移动整个/var/lib/docker目录到目的路径:/data01

mv /var/lib/docker /data01/docker

ln -s /data01/docker /var/lib/docker

重启Docker时发现存储目录依旧是/var/lib/docker,但是实际上是存储在数据盘的,你可以在数据盘上看到容量变化。

系统调优

1.关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

2.关闭swap分区(k8s需要强制,如果不安装可以忽略)

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

3.关闭防火墙(可忽略..)

systemctl stop firewalld && systemctl disable firewalld

yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

4.性能调优(可忽略..)

cat >> /etc/sysctl.conf<<EOF
# 不使用交换分区 如果是k8s 必须开启
# vm.swappiness = 0
# 开启sysq功能
kernel.sysrq = 1

net.ipv4.neigh.default.gc_stale_time = 120

# see details in https://help.aliyun.com/knowledge_detail/39428.html
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2

# see details in https://help.aliyun.com/knowledge_detail/41334.html
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.ipv4.ip_forward=1

EOF

然后加载参数:sysctl -p

配置镜像加速

国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:

  1. 阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
  2. 网易加速器:http://hub-mirror.c.163.com
  3. 官方中国加速器:https://registry.docker-cn.com
  4. ustc 的镜像:https://docker.mirrors.ustc.edu.cn
  5. 百度云加速器: https://mirror.baidubce.com

1.查看是否在 docker.service 文件中配置过镜像地址。

systemctl cat docker | grep '\-\-registry\-mirror'

如未输出,那么创建一个daemon.json文件,并写入内容(如果文件不存在请新建该文件):

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://8i25ptuf.mirror.aliyuncs.com",
    "https://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.baidubce.com"
  ],
   "exec-opts": ["native.cgroupdriver=systemd"],
   "live-restore":true,
   "log-driver":"json-file",
   "log-opts": {"max-size":"200m", "max-file":"3"},
   "max-concurrent-downloads": 10,
   "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

阿里云加速的url为系统分配你们使用我的也没用…可抛弃

2. 检查加速器是否生效

执行 docker info,如果从结果中看到了如下内容,说明配置成功。

 Registry Mirrors:
  https://8i25ptuf.mirror.aliyuncs.com/
  https://hub-mirror.c.163.com/
  https://mirror.baidubce.com/

Docker卸载步骤(可忽略):

1. 卸载依赖

yum remove docker-ce docker-ce-cli containerd.io

2.删除资源目录

/var/lib/docker是docker的默认工作路径

rm -rf /var/lib/docker

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇