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

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
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇