7.Docker安装&配置加速

Docker安装

https://docs.docker.com/get-docker/

基础依赖环境
CPU 64 bits
内核版本 Linux Kernel 3.10及以上版本(支持cgroups and namespaces)

Centos 7默认yum源extras中、1.13版本

推荐版本Centos7.4及以上版本

Yum安装

Centos:

# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker软件包源
wget -O /etc/yum.repos.d/ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
sed -i "s@download.docker.com/@mirrors.tuna.tsinghua.edu.cn/docker-ce/@g" /etc/yum.repos.d/docker-ce.repo
# 安装Docker CE
yum install docker-ce -y
# 启动Docker服务并设置开机启动
systemctl enable docker && systemctl restart docker

Ubuntu:

# 移除原有docker
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
apt-cache madison docker-ce
docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
sudo apt-get -y install docker-ce=[VERSION]
sudo apt-get install docker-ce=18.06.3~ce~3-0~ubuntu

二进制安装

# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#下载Docker软件包
wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.3.tgz
tar -xvf docker-19.03.3.tgz
mv docker/* /usr/bin
#创建systemd unit文件
cat > docker.service <<"EOF"
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

mv docker.service /usr/lib/systemd/system
#启动 docker
systemctl daemon-reload && systemctl enable docker && systemctl restart docker

docker版本信息查询

# docker version
Client: Docker Engine - Community
 Version:           19.03.3
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        a872fc2f86
 Built:             Tue Oct  8 00:58:10 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.3
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       a872fc2f86
  Built:            Tue Oct  8 00:56:46 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

# docker info
Client:
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 19.03.3	#服务端版本
 Storage Driver: overlay2	#存储引擎	
  Backing Filesystem: extfs	#后端文件系统,即服务器的磁盘文件系统
  Supports d_type: true	#是否支持d_typr
  Native Overlay Diff: true	#是否支持差异数据存储
 Logging Driver: json-file	#日志类型
 Cgroup Driver: cgroupfs	#cgroup类型
 Plugins:	#插件
  Volume: local	#本地卷
  Network: bridge host ipvlan macvlan null overlay	#overlay跨主机通信
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog	#日志类型
 Swarm: inactive	#是否支持swarm
 Runtimes: runc		#已安装的容器运行时
 Default Runtime: runc	#默认使用容器运行时
 Init Binary: docker-init	#初始化容器的守护进程,即pid为1
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb	#版本
 runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f	#runc版本
 init version: fec3683	#init版本
 Security Options:	#安全选项
  seccomp	#审计(操作)https://docs.docker.com/enginx/security/seccomp/
   Profile: default	#默认的配置文件
 Kernel Version: 3.10.0-957.el7.x86_64	#宿主机内核版本
 Operating System: CentOS Linux 7 (Core)	#宿主机系统
 OSType: linux	#宿主机操作系统类型
 Architecture: x86_64	#宿主机架构
 CPUs: 4	#宿主机CPU数量
 Total Memory: 3.84GiB	#宿主机内存数量
 Name: k8s-master	#宿主机hostname
 ID: RFHV:S3R3:TNJQ:QPHW:IJUW:CQEJ:ITPT:BEQG:KWEZ:HUXR:NAUH:CGOF
 Docker Root Dir: /var/lib/docker	#宿主机数据保存目录;可单独进行数据盘挂载,用来单独保存容器数据
 Debug Mode: false	#是否开启Debug
 Registry: https://index.docker.io/v1/	#镜像仓库
 Labels:	#其他表情
 Experimental: false	#是否测试版
 Insecure Registries:	#非安全镜像
  127.0.0.0/8
 Registry Mirrors:
  http://f1361db2.m.daocloud.io/
 Live Restore Enabled: false	#是否开启活动重启(重启docker-daemon不关闭容器)

安装问题

不支持swap限制告警

vim /etc/default/groub
#在GRUB_CMDLINE_LINUX行内添加
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
#保存关闭文件
#Update GRUB.
sudo update-grub
reboot

启动docker 端口映射时IPV4无法使用

vim /etc/sysctl.conf
#添加如下代码:   
net.ipv4.ip_forward=1
#重新network服务
systemctl restart network
sysctl -p
#查看修改结果(ip_forward=1表示成功)
sysctl net.ipv4.ip_forward

ping 其它 Node 上的 Pod IP

  • docker 需要以 root 用于运行;
  • docker 从 1.13 版本开始,可能将 iptables FORWARD chain的默认策略设置为DROP,从而导致 ping 其它 Node 上的 Pod IP 失败,遇到这种情况时,需要手动设置策略为 ACCEPT
$ sudo iptables -P FORWARD ACCEPT
  • 并且把以下命令写入 /etc/rc.local 文件中,防止节点重启iptables FORWARD chain的默认策略又还原为DROP
/sbin/iptables -P FORWARD ACCEPT

配置 docker 加速文件

Docker cn加速

Daocloud加速配置地址

https://www.daocloud.io/mirror#accelerator-doc
#配置镜像加速
mkdir -p /etc/docker
cd /etc/docker
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}


#手工添加
cat > daemon.json <<EOF
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"],
    "insecure-registries": ["docker02:35000"],#内网dockerhub地址
#    "max-concurrent-downloads": 20,
#    "live-restore": true,
#    "max-concurrent-uploads": 10,
#    "debug": true,
#    "data-root": "${DOCKER_DIR}/data",
#    "exec-root": "${DOCKER_DIR}/exec",
#    "log-opts": {
#      "max-size": "100m",
#      "max-file": "5"
}
EOF
#重启服务
systemctl restart docker

阿里云加速器

注册阿里云账号,专用加速器地址获得路径:

https://cr.console.aliyun.com/#/accelerator

添加加速器到配置文件

sudo tee /etc/docker/daemon.json <<-‘EOF‘
{
  "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
EOF

阿里云页面有操作步骤

启动docker服务

#重载docker启动配置
systemctl daemon-reload 
#将docker设为开机自启
systemctl start docker.service
#启动docker服务
systemctl enable docker.service

检查服务运行状态

#确保状态为 `active (running)`
systemctl status docker|grep Active
#否则查看日志,确认原因
journalctl -u docker
#检查 docker0 网桥
/usr/sbin/ip addr show flannel.1 && /usr/sbin/ip addr show docker0
#查看 docker 的状态信息
ps -elfH|grep docker
#查看 docker 的详细信息
docker info
posted @ 2020-06-28 09:32  Gmiao  阅读(273)  评论(0编辑  收藏  举报