Centos7中离线安装DockerCE最新版
来源地址:https://www.cnblogs.com/songxingzhu/p/10651197.html
一、简述
离线在Centos7中部署DockerCE。
二、步骤
(1)在有外网的计算A上执行:
新建一台CentOS7 mini虚拟机,联网下载所有所需的rpm包和其依赖
1、配置安装源存放路径
mkdir -p /root/docker-ce-local && cd /root/docker-ce-local
2、获取createrepo安装包
yum install --downloadonly --downloaddir=/root/docker-ce-local createrepo
3、获取系统更新yum源
yum update --downloadonly --downloaddir=/root/docker-ce-local
4、卸载旧版本
yum remove docker docker-common docker-selinux docker-engine
5、获取docker-ce所需依赖
yum install --downloadonly --downloaddir=/root/docker-ce-local yum-utils device-mapper-persistent-data lvm2
yum -y install yum-utils //安装包括yum-config-manager工具
6、设置docker-ce在线存储库
yum -y install yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
7、更新yum源索引
yum makecache fast
8、获取docker-ce及相关rpm安装源
yum install --downloadonly --downloaddir=/root/docker-ce-local docker-ce
9、查看安装时docker所需要的密钥并下载
more /etc/yum.repos.d/docker-ce.repo
cd /root/docker-ce-local/
wget https://download.docker.com/linux/centos/gpg
10、先下载,后安装createrepo
yum install --downloadonly --downloaddir=/root/docker-ce-local createrepo
yum install --downloadonly --downloaddir=/root/docker-ce-local deltarpm libxml2-python python-deltarpm
yum install createrepo
11、初始化源文件的repodata
createrepo -pdo /root/docker-ce-local /root/docker-ce-local
createrepo --update /root/docker-ce-local
12、将文件夹打包为yum-local.tgz
cd /root
tar -zcvf centos-local.tgz docker-ce-local/
(2)在目标计算机B上执行:
13、在目标计算机上将tgz包上传至/root路径下,并解压centos-local.tgz文件
cd /root
tar -xvzf centos-local.tgz
14、安装createrepo
cd /root/docker-ce-local
下载libxml2-2.9.1-6.el7_2.3.x86_64.rpm 地址:
https://centos.pkgs.org/7/centos-x86_64/libxml2-2.9.1-6.el7_2.3.x86_64.rpm.html
rpm -qa | grep libxml2 | xargs rpm -e --nodeps
rpm -qa | grep deltarpm| xargs rpm -e --nodeps
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh libxml2-2.9.1-6.el7_2.3.x86_64.rpm
rpm -ivh libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
//注:createrepo版本可能不一样,根据自己下载的包的版本安装
15、备份安装源 将所有的安装源移动到备份文件夹中
cd /etc/yum.repos.d/
mkdir repobak
mv CentOS* repobak/
16、新增docker-ce-local.repo源文件,写入以下内容
# vi /etc/yum.repos.d/docker-ce-local.repo
[docker-ce-local]
name=Local Yum
baseurl=file:///root/docker-ce-local/
gpgcheck=1
gpgkey=file:///root/docker-ce-local/gpg
enabled=1
17、生成源索引及缓存
createrepo /root/docker-ce-local
yum makecache
18、安装docker-ce
yum install docker-ce
//如果报错,则添加--nogpgcheck跳过公钥检查
yum install docker-ce --nogpgcheck
19、启动并测试
systemctl start docker.service
docker version
//验证结果
[root@node114 docker-ce-local]# systemctl start docker.service
[root@node114 docker-ce-local]# docker version
Client:
Version: 18.09.6
API version: 1.39
Go version: go1.10.8
Git commit: 481bc77156
Built: Sat May 4 02:34:58 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.6
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 481bc77
Built: Sat May 4 02:02:43 2019
OS/Arch: linux/amd64
Experimental: false
[root@node114 docker-ce-local]#
这是下载的离线包文件centos-local.tgz
链接:https://pan.baidu.com/s/1KkD2pSasVEuszI1r2I4TLA
提取码:y4u3
问题集:
1 重启计算机后用docker version报错问题
报错内容如下:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决办法:service docker restart
原因可能是上一次没有正常退出docker,所以docker没有正常启动,在相应的/var/run/路径下找不到docker进程。
2关机后或容器关闭后重启容器的方法:
数据还在原处
通过 docker ps -a 看到关闭的容器
docker start your_container_ID
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52ecb0aa3b1b supermap/iportal "/bin/sh -c /opt/run…" 3 weeks ago Exited (137) 2 days ago iportalserver
9f1c40dd51cf supermap/iserver "/bin/sh -c /opt/run…" 3 weeks ago Exited (137) 2 days ago supermapiserver
712a3f0e5035 8ef3 "container-entrypoin…" 3 weeks ago Exited (0) 2 days ago MYSQL56docker
5c58116a7eb7 nginx "nginx -g 'daemon of…" 3 weeks ago Exited (0) 2 days ago test
[root@node114 ~]# docker start 712a3f0e5035
712a3f0e5035
[root@node114 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52ecb0aa3b1b supermap/iportal "/bin/sh -c /opt/run…" 3 weeks ago Exited (137) 2 days ago iportalserver
9f1c40dd51cf supermap/iserver "/bin/sh -c /opt/run…" 3 weeks ago Exited (137) 2 days ago supermapiserver
712a3f0e5035 8ef3 "container-entrypoin…" 3 weeks ago Up 6 seconds 0.0.0.0:3307->3306/tcp MYSQL56docker
5c58116a7eb7 nginx "nginx -g 'daemon of…" 3 weeks ago Exited (0) 2 days ago test