Centos 安装Docker(含在线和离线) – 记忆角落

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

/ 0评 / 0

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

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

出现了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

配置镜像加速

国内从 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://mirror.baidubce.com"
  ]
}
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/

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 daemon-reload

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

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.关闭防火墙

3.性能调优

cat >> /etc/sysctl.conf<<EOF
vm.swappiness = 0
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卸载步骤(可忽略):

1. 卸载依赖

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

2.删除资源目录

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

rm -rf /var/lib/docker

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注