目录
方案
A、B机器安装docker
设置阿里云镜像源
安装 Docker-CE并设置为开机自动启动
A机器准备数据
拷贝数据
B机器运行redis、mysql镜像
重启docker服务
准备两台机器:A机器(可以连接外网),B机器(内网机器、不可联网)
步骤一:A机器安装docker、这里采用离线或在线安装都可以
步骤二:A机器使用docker搭建私有仓库registry
步骤三:A机器使用docker在线pull需要安装的镜像(redis、mysql等)
步骤四:A机器使用docker提交镜像到私有仓库registry
步骤五:等A机器镜像提交完毕,使用docker将私有仓库registry打包成tar包
步骤六:拷贝仓库tar包到B机器,在B机器离线安装docker
步骤七:B机器使用docker离线pull私有仓库中的镜像,完成需求
##关闭防火墙
systemctl stop firewalld.service
setenforce 0
[root@centos3 ~]# cd /etc/yum.repos.d/
[root@centos3 yum.repos.d]# ls
11 local.repo
[root@centos3 yum.repos.d]# mv local.repo 11
[root@centos3 yum.repos.d]# ls
11
[root@centos3 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
##这不边 yum源用不起来 我用的是阿里的在线源下载
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
##安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
docker-ce-20.10.18
systemctl start docker.service
systemctl enable docker.service
docker info #查看docker版本
新建服务配置文件
vim /etc/systemd/system/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
添加文件权限
chmod +x /etc/systemd/system/docker.service
加载、启动、设置开机启动
systemctl daemon-reload # 重新加载单元
systemctl start docker # 启动docker
systemctl enable docker.service # 设置开机启动
下载docker registry仓库镜像
docker pull docker.io/registry
创建仓库目录
修改 /etc/docker/daemon.json文件、添加如下内容
重启docker服务
systemctl restart docker
运行registry镜像,并将/mnt/registry-data目录挂载到容器内的/var/lib/registry目录
docker run -d --name=registry -v /mnt/registry-data:/var/lib/registry -p 5000:5000 docker.io/registry
下载redis镜像
docker pull redis
修改redis镜像tag
docker tag redis 127.0.0.1:5000/redis
将redis上传到仓库
cd目录,查看redis是否被成功上传(mysql上传同上)
cd/mnt/registry-data/docker/registry/v2/repositories
使用docker将registry镜像打包成registry.tar,放到/mnt目录下
docker save -o /mnt/registry.tar docker.io/registry
将registry-data仓库目录打包成registry-data.tar.gz,放到/mnt目录下
cd /mnt
tar czvf registry-data.tar.gz registry-data # 打包
将A机器上的/mnt目录下面的registry.tar和registry-data.tar.gz拷贝到B机器的/mnt目录下、
修改 /etc/docker/daemon.json文件、添加如下内容
{
"insecure-registries":["127.0.0.1:5000"]
}
systemctl restart docker
导入registry镜像
docker load -i /mnt/registry.tar
解压registry-data仓库目录
tar xf /mnt/registry-data.tar.gz -C /mnt
运行registry镜像,并将/mnt/registry-data目录挂载到容器内的/var/lib/registry目录
docker run -d --name=registry -v /mnt/registry-data:/var/lib/registry -p 5000:5000 docker.io/registry
从本地仓库下载下载redis镜像
docker pull 127.0.0.1:5000/redis