(二)Docker 安装

201 阅读3分钟

简介

从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。

Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。

Docker支持以下的CentOS版本:

  • CentOS 7 (64-bit)
  • CentOS 6.5 (64-bit) 或更高的版本

要求

Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本

uname -r

CentOS7 Docker 安装

yum 安装

  1. 移除旧的版本
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
  1. 安装一些必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 删除软件源(可选)
# 手动删除文件即可
rm /etc/yum.repos.d/docker-ce.repo
# 更新缓存
sudo yum makecache fast
  1. 添加软件源信息
# 阿里(推荐)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 国内
sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
  1. 更新 yum 缓存
sudo yum makecache fast
  1. 安装 Docker-ce
sudo yum -y install docker-ce
  1. 启动 Docker 后台服务
sudo systemctl start docker
sudo systemctl enable docker
  1. 测试运行 hello-world
docker run hello-world 
  1. 卸载(可选)
 sudo yum remove docker-ce
 sudo rm -rf /var/lib/docker

脚本安装

  1. 使用 sudo 或 root 权限登录 Centos

  2. 确保 yum 包更新到最新

sudo yum update
  1. 执行 Docker 安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

执行这个脚本会添加 docker.repo 源并安装 Docker

  1. 启动 Docker 进程
sudo systemctl start docker
sudo systemctl enable docker
  1. 验证 docker 是否安装成功并在容器中执行一个测试的镜像
sudo docker run hello-world
sudo docker ps

离线安装

  1. 下载离线包 download.docker.com/linux/stati…

  2. 准备docker.service 系统配置文件

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
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
  1. 准备安装脚本 install.sh
#!/bin/sh
echo '解压tar包...'
tar -xvf $1
echo '将docker目录移到/usr/bin目录下...'
cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp docker.service /etc/systemd/system/
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service
echo 'docker安装成功...'
docker -v
  1. 准备卸载脚本 uninstall.sh
#!/bin/sh
echo '删除docker.service...'
rm -f /etc/systemd/system/docker.service
echo '删除docker文件...'
rm -rf /usr/bin/docker*
echo '重新加载配置文件'
systemctl daemon-reload
echo '卸载成功...'
  1. 安装

此时目录为:(只需要关注docker-17.03.2-ce.tgz、docker.service、install.sh、uninstall.sh即可)

执行脚本 sh install.sh docker-17.03.2-ce.tgz

脚本执行完毕后,执行 docker -v

发现此时docker已安装成功,可以用docker --help查看docker命令,从现在开始你就可以自己安装image和container了

镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决

国内镜像地址:

registry.docker-cn.com

hub-mirror.c.163.com

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

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

重启

systemctl daemon-reload
systemctl restart docker