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