docker安装脚本

系统要求

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

卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,从1.13.x版本开始,版本分为企业版EE和社区版CE,

版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式。使用以下命令卸载旧版本:

$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate  docker-logrotate docker-selinux  docker-engine-selinux  docker-engine
安装依赖包:
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加国内yum 源
$ sudo yum-config-manager  --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

把软件仓库地址替换为 TUNA:
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
安装 Docker CE

更新 yum 软件源缓存,并安装 docker-ce。

$ sudo yum makecache fast
$ sudo yum install docker-ce
启动 Docker CE
$ sudo systemctl enable docker
$ sudo systemctl start docker
配置镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,建议安装 Docker 之后配置 国内镜像加速。

对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件),

{
  "registry-mirrors": ["https://u9nigs6v.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}

注意,如果不是https连接,将registry-mirrors换成insecure-registries。

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

之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
注意

需要注意的一点是docker还有另一种配置方式/etc/sysconfig/docker,如下。两个文件尽量不要同时使用,以免造成冲突。docker将不能启动。

cat /etc/sysconfig/docker
# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--disable-legacy-registry --log-opt max-size=2m --log-opt max-file=5 --log-level=warn'
DEFAULT_ULIMIT='--default-ulimit nofile=131072 --default-ulimit memlock=131941395333120 --default-ulimit core=-1 --default-ulimit nproc=-1 --default-ulimit stack=-1'
INSECURE_REGISTRY='--insecure-registry https://registry.access.redhat.com'

docker官方建议使用/etc/docker/daemon.json,原因如下:

  • JSON格式的配置文件,简单、清晰和集中;不像Command Options配置分散在多个文件和变量中

  • docker.service更加简单,不用EnvironmentFile导入环境变量,ExecStart后面也不用跟各种参数

  • 支持通过systemd动态daemon-reload加载配置,不用重启Docker(Docker v1.12.0开始引入)

https://forums.docker.com/t/daemon-json-vs-etc-sysconfig-docker/30205/3
https://supereagle.github.io/2017/02/21/docker-config/

测试 Docker 是否安装正确
$ docker run hello-world
docker属性
docker info

安装脚本

#!/bin/bash

# 脚本要是发生错误,就终止执行。
set -e

echo "# 卸载旧版本"
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate  docker-logrotate docker-selinux  docker-engine-selinux  docker-engine -y

echo "# 安装依赖包"
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

echo "# 添加国内yum 源"
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

echo "# 更新 yum 软件源缓存,并安装 docker-ce"
sudo yum makecache fast
sudo yum install docker-ce -y
mkdir -p /etc/docker

echo "#配置镜像加速"
cat  <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://u9nigs6v.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
EOF

echo "#启动 Docker CE"
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

echo "#测试 Docker 是否安装正确"
docker info

你可能感兴趣的:(docker)