码蚁

打码改变人生

CentOS 7.0(1406)离线安装 Docker

Posted at — Jan 5, 2017

公司生产环境中是没有外网,只能离线安装 Docker,在此记录下。

yum 下载 RPM 包

要离线安装 Docker 系统要与外网下载的系统一致,小版本号也要保证一致,我这边掉进过这个坑了。

虽然 CentOS 软件源 Extras 中有 Docker,名为 docker,但是不建议使用系统源中的这个版本,它的版本相对比较陈旧,而且并非 Docker 官方维护的版本。因此,我们需要使用 Docker 官方提供的 CentOS 软件源,名为 docker-engine。

Docker 官方仓库:

$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

$ yum install --downloadonly --downloaddir=/root/docker docker-engine

CentOS 7.0(1406)安装的时候会报错,CentOS 7.2(1511)则没有这个错误可跳过下面步骤,报错信息:

Transaction check error:
  file /usr/lib/systemd/system/blk-availability.service from install of device-mapper-7:1.02.107-5.el7_2.1.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64
  file /usr/sbin/blkdeactivate from install of device-mapper-7:1.02.107-5.el7_2.1.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64
  file /usr/share/man/man8/blkdeactivate.8.gz from install of device-mapper-7:1.02.107-5.el7_2.1.x86_64 conflicts with file from package lvm2-7:2.02.105-14.el7.x86_64

解决办法:

# 先下载 lvm2 到 /root/lvm2
$ yum install --downloadonly --downloaddir=/root/lvm2 lvm2

# copy 到需要安装的机器后安装
$ rpm -ivh --force --nodeps device-mapper-1.02.107-5.el7_2.5.x86_64.rpm
$ rpm -ivh --force --nodeps device-mapper-libs-1.02.107-5.el7_2.5.x86_64.rpm
$ rpm -ivh --force --nodeps device-mapper-event-libs-1.02.107-5.el7_2.5.x86_64.rpm
$ rpm -ivh --force --nodeps device-mapper-event-1.02.107-5.el7_2.5.x86_64.rpm
$ rpm -ivh --force --nodeps lvm2-libs-2.02.130-5.el7_2.5.x86_64.rpm
$ rpm -ivh --force --nodeps libaio-0.3.109-13.el7.x86_64.rpm
$ rpm -ivh --force --nodeps device-mapper-persistent-data-0.6.2-1.el7_2.x86_64.rpm
$ rpm -ivh --force --nodeps lvm2-2.02.130-5.el7_2.5.x86_64.rpm

离线安装 RPM 包

依次安装以下包(此处安装包为 7.0_1406 系统,其他版本可能略有不同):

rpm -ivh --force --nodeps audit-libs-2.4.1-5.el7.x86_64.rpm
rpm -ivh --force --nodeps systemd-libs-219-19.el7_2.13.x86_64.rpm
rpm -ivh --force --nodeps systemd-219-19.el7_2.13.x86_64.rpm
rpm -ivh --force --nodeps kmod-20-8.el7_2.x86_64.rpm
rpm -ivh --force --nodeps dracut-033-360.el7_2.1.x86_64.rpm
rpm -ivh --force --nodeps libcgroup-0.41-8.el7.x86_64.rpm
rpm -ivh --force --nodeps libsemanage-2.1.10-18.el7.x86_64.rpm
rpm -ivh --force --nodeps policycoreutils-2.2.5-20.el7.x86_64.rpm
rpm -ivh --force --nodeps selinux-policy-3.13.1-60.el7_2.9.noarch.rpm
rpm -ivh --force --nodeps selinux-policy-targeted-3.13.1-60.el7_2.9.noarch.rpm
rpm -ivh --force --nodeps libsemanage-python-2.1.10-18.el7.x86_64.rpm
rpm -ivh --force --nodeps systemd-sysv-219-19.el7_2.13.x86_64.rpm
rpm -ivh --force --nodeps audit-libs-python-2.4.1-5.el7.x86_64.rpm
rpm -ivh --force --nodeps checkpolicy-2.1.12-6.el7.x86_64.rpm
rpm -ivh --force --nodeps libtool-ltdl-2.4.2-21.el7_2.x86_64.rpm
rpm -ivh --force --nodeps python-IPy-0.75-6.el7.noarch.rpm
rpm -ivh --force --nodeps libseccomp-2.2.1-1.el7.x86_64.rpm
rpm -ivh --force --nodeps setools-libs-3.3.7-46.el7.x86_64.rpm
rpm -ivh --force --nodeps policycoreutils-python-2.2.5-20.el7.x86_64.rpm
rpm -ivh --force --nodeps docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm
rpm -ivh --force --nodeps docker-engine-1.12.3-1.el7.centos.x86_64.rpm
rpm -ivh --force --nodeps audit-2.4.1-5.el7.x86_64.rpm
rpm -ivh --force --nodeps dracut-config-rescue-033-360.el7_2.1.x86_64.rpm
rpm -ivh --force --nodeps dracut-network-033-360.el7_2.1.x86_64.rpm
rpm -ivh --force --nodeps initscripts-9.49.30-1.el7_2.3.x86_64.rpm
rpm -ivh --force --nodeps libgudev1-219-19.el7_2.13.x86_64.rpm

验证安装是否成功:

$ docker info

启动 Docker 服务

启动
systemctl start docker.service
关闭
systemctl stop docker.service
开启自动
systemctl enable docker.service
取消开机自启
systemctl disable docker.service

建立 Docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER
comments powered by Disqus