离线安装 Docker + Docker registry(Docker仓库)

news2024/12/28 5:49:39

概述

通过私有yum仓库安装docker

具体内容:

1. 构建私有镜像仓库

2. 准备rpm包

3. 安装部署

4. ansible 安装 + 卸载

5. shell 脚本安装 + 卸载

6. 网页连接

7. 构建docker 私有仓库

1. 构建私有镜像仓库

构建简单的yum私有仓库请参考如下文档

http://t.csdn.cn/22bmb

2. 准备rpm包

在构建docker私有镜像过程中,需要不断检测rpm的依赖关系。

详情请参考如下文档:

(46条消息) Linux 无网环境下离线安装rpm_HJJ-DREAMER的博客-CSDN博客

Packages for Linux and Unix - pkgs.org

# 查看系统版本,下载对应系统安装包
cat /etc/redhat-release
 
# 安装 yum 管理工具集
yum -y install yum-utils
 
# 添加 软件源信息
# 例如:
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://url/software.repo
 
# 更新yum 仓库
yum clean all && yum makecache fast && yum repolist
# 或者 var/ftp/localrepo 是私有仓库地址
createrepo --update /var/ftp/localrepo && yum clean all && yum makecache && yum repolist
 
# 免安装下载rpm包
# 例如:
# yum install docker-ce --downloadonly --downloaddir=/var/ftp/localrepo/docker
yum install docker-ce --downloadonly --downloaddir=/foo
 
# 后期可以将所有的依赖和rpm包通过tar 压缩打包转存
tar -czvf software-rpm.tar.gz software

 阶段结果:

3. 安装部署

Install Docker Engine on CentOS | Docker Documentation文档进行安装部署

 install

# Uninstall old versions
sudo yum remove -y docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# install
yum install docker-ce -y

# 启动服务
systemctl start docker
docker version

# 检测
docker run hello-world

报错 daemon 配置

假如没有设置daemon.json的镜像加速器,则会以下错误。

error parsing HTTP 408 response body 错误问题

过一段时间就可以重新执行成功

# 查看配置文件夹
ls /etc/docker/

# 配置镜像加速器
cat > /etc/docker/daemon.json << EOF
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://hub-mirror.c.163.com"],
    "insecure-registries":[]
}
EOF

# 重启服务
systemctl daemon-reload
systemctl restart docker

# 查看配置是否成功
docker info

 镜像加速器 · Docker -- 从入门到实践 (docker-practice.github.io)

docker国内镜像加速 - 知乎 (zhihu.com)

名字连接
docker中国区官方镜像加速:https://registry.docker-cn.com
网易镜像加速:http://hub-mirror.c.163.com
中国科技大学镜像加速:https://docker.mirrors.ustc.edu.cn
腾讯云镜像加速:https://mirror.ccs.tencentyun.com
阿里云镜像加速:https://ung2thfc.mirror.aliyuncs.com

4. ansible 安装

---
- name: update the ftp.repo
  hosts: k8s
  tasks:
    - name: scp the ftp.repo
      copy:
        src: /etc/yum.repos.d/ftp.repo
        dest: /etc/yum.repos.d/ftp.repo
        mode: "0644"
- name: install docker-ce
  hosts: k8s
  tasks:
    - name: update yum repo
      shell: yum clean all && yum makecache && yum repolist
    - name: stop the docker server
      systemd:
        name: docker
        state: stopped
      ignore_errors: True
    - name: remove the docker server
      yum:
        state: absent
        name: "{{ item }}"
      loop:
        - docker-ce
        - docker
        - docker-client
        - docker-client-latest
        - docker-common
        - docker-latest
        - docker-latest-logrotate
        - docker-logrotate
        - docker-engine
    - name: install the docker-ce
      yum:
        name: docker-ce
        state: present
    - name: update the daemon.json
      copy:
        src: ./daemon.json
        dest: /etc/docker/
        mode: "0644"
    - name: enable the docker server
      systemd:
        name: docker
        state: started
        enabled: yes
    - name: docker info
      shell: docker version && docker info

结果有2次

ansible-playbook ./docker-install/dockerinstall.yml

5. shell 脚本安装

#!/bin/bash
# init the env
function INIT_THE_ENV() {
    # 更新 yum 源
    yum clean all >> /dev/null && yum makecache fast >> /dev/null && yum repolist >> /dev/null
    
    # grep -o 表示:仅显示匹配到的字符串
    status=`systemctl status docker | grep -o  "running"`
    echo "docker status is $status"

    # 服务运行状态判断
    if [ $status = "running" ] 
    then
        echo "disable the docker server"
        systemctl disable --now docker
    else
        echo "dockers server is disable"
        # 否则继续执行程序
        continue
    fi

    # 卸载程序
    yum remove -y docker-ce \
                  docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine >> /dev/null

}

# install docker-ce
function INSTALL_THE_SRV() {

    yum install docker-ce -y  >> /dev/null

    systemctl start docker 
    status=`systemctl status docker | grep -o  "active (running)"`
    echo "docker is $status"
} 


echo "===init the env==="
INIT_THE_ENV

echo "===install docker==="
INSTALL_THE_SRV

6. 网页连接

docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

Index of /docker-ce/linux/centos/7.9/x86_64/stable/Packages/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

Install Docker Engine on CentOS | Docker Documentation

Packages for Linux and Unix - pkgs.org

Index of linux/centos/7/x86_64/stable/Packages/ (docker.com)

7. docker 私有仓库构建

yum install -y docker-distribution
systemctl enable --now docker-distribution

curl http://127.0.0.1:5000/v2/_catalog

 ansible 统一配置

# 更新daemon.json
ansible k8s -m copy -a "src=/home/junjie/ansible/docker-install/daemon.json dest=/etc/docker/daemon.json mode=0644"
# 重启服务
ansible k8s -m systemd -a "name=docker daemon_reload=yes state=restarted"
#测试访问
ansible k8s -m shell -a "curl http://reporsitory:5000/v2/_catalog"
ansible k8s -m shell -a "curl http://192.168.164.16:5000/v2/_catalog"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用chatGPT写chatGPT教学方案

最近从机器学习的原理、数学推理、主流模型架构、chatGPT的Prompt策略&#xff0c;也实际体验了各种AIGC工具&#xff0c;算是较为系统的学习了chatGPT的前世今身&#xff0c;想着有很多人应该跟我一样&#xff0c;没有编程基础、也没有成为chatGPT专家的希望&#xff0c;仅仅通…

LeetCode_Day3 | 反转链表/移除链表的元素/设计个链表

LeetCode_链表 203.移除链表元素1. 题目描述2. 直接使用原表删除1. 思路2. 代码实现 3. 使用虚拟头节点删除1. 思路2. 代码实现 707.设计链表1.题目描述2.单链表&#xff1a;虚拟头节点设计1. 思路2. 代码实现及部分逻辑解释3. 需要注意的点 206.反转链表1.题目描述2. 双指针法…

BIO阻塞模型

作者&#xff1a;V7 博客&#xff1a;https://www.jvmstack.cn 一碗鸡汤 少年辛苦终身事&#xff0c;莫向光阴惰寸功。 —— 杜荀鹤 同步阻塞IO 在介绍阻塞和非阻塞之前先说明一下同步和异步。我们可以将同步和异步看做是发起IO请求的两种方式。同步IO指的是用户空间&…

项目美术部门敏捷开发流程及工具

前言 在项目开发中&#xff0c;针对美术部门的特性和工作风格&#xff0c;合理使用多种工具进行项目管理和进度控制非常必要。如果项目执行中有异地协作、美术内/外包、多项目并行的情况&#xff0c;正确的规划和管理的优势会更加凸显。 而合理使用整套的综合管理工具会让项目…

Day969.如何拆分代码 -遗留系统现代化实战

如何拆分代码 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于如何拆分代码的内容。 当完成了项目的战略设计&#xff0c;大体设计出目标架构&#xff0c;又根据系统的现状&#xff0c;决定采用“战术分叉”的方式进行微服务拆分之后&#xff0c;接下来的难点就变成…

用GPT-4 写2022年天津高考作文能得多少分?

正文共 792 字&#xff0c;阅读大约需要 3 分钟 学生必备技巧&#xff0c;您将在3分钟后获得以下超能力&#xff1a; 积累作文素材 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Linda ●图片由Lexica …

vue工程搭建

1&#xff1a;查看vue及npm版本&#xff1a; 2&#xff1a;执行npm init nuxt-app <project-name>语句&#xff1a; 若出现npm ERR! code ENOLOCAL 请执行如下语句&#xff1a; npm cache verify npm cache clean --force npm i -g npm npm install -g cnpm --regis…

数据库(mysql语句)循环语句

例题1&#xff1a; 20到50之间能被5除余1的所有自然数的和 EDECLARE i int DECLARE s int SET s0 SET i20 白WHILE i <50 BEGIN IF(i%51) SET s s i SET ii1 END PRINT20到50之间能被5除余1的所有自然数的和是cast(s as varchar(20)) 例题2&#xff1a; 实现如下图 代码…

设计模式之门面模式(Facade Pattern 外观模式)

一、模式定义 门面模式(Facade Pattern)&#xff1a;外部与一个子系统的通信必须通过一个统一的外观对象进行&#xff0c;为子系统中的一组接口提供一个一致的界面&#xff0c;外观模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。门面模式又称为外观…

中国南方Oracle用户组沙龙活动:大环境下的Oracle数据库的机遇与挑战

2023年03月12日(周日)在杭州索菲特西湖大酒店 (浙江省杭州市上城区西湖大道333 号)&#xff0c;中国南方Oracle用户组创始人之一&#xff1a;周亮&#xff08;zhou liang&#xff09;组织举办了主题为《大环境下的Oracle数据库的机遇与挑战》活动&#xff0c;大约有50名左右的人…

YMatrix 5.0 故障自动转移功能新实现,运维更方便!

前言 分布式数据库一般都实现了数据多副本的存储以保证数据的高可用性。在多副本存储的基础上&#xff0c;通过切换活跃的存储副本来实现故障转移&#xff0c;是常见的做法。 YMatrix 5.0 实现了在数据库集群所有数据分片上的故障自动转移&#xff0c;完全实现了数据库集群的…

一文带你深入了解分布式数据的复制原理!!

在分布式数据系统中&#xff0c;复制是一种重要的能力。简单来说&#xff0c;复制就是将数据的副本存储在多个位置&#xff0c;通常是在不同的服务器或节点上。这样做有几个关键的优点&#xff1a; 使得数据与用户在地理上接近&#xff08;从而减少延迟&#xff09;&#xff0…

渗透测试--3.1嗅探欺骗攻击

目录 1.中间人攻击 2. 社会工程学攻击 SET使用实例——建立克隆钓鱼网站收集目标凭证 SET工具集之木马欺骗实战反弹链接 后渗透阶段 钓鱼邮件 总结 1.中间人攻击 中间人攻击&#xff08;Man-in-the-middle attack&#xff0c;简称MITM&#xff09;是一种常见的网络攻击…

一文带你完整了解数据的编码!!

数据编码是将数据转换为计算机可读取和处理的二进制格式的过程。在数据存储中&#xff0c;正确的数据编码非常重要&#xff0c;因为它能够保证数据的完整性、可靠性和可读性。 数据编码可以确保数据在存储过程中不会发生错误。通过使用适当的数据编码规则&#xff0c;可以防止…

三十二、自定义镜像

1 、Docker镜像的原理 Docker镜像本质是什么? Docker中一个centos镜像为什么只有200MB&#xff0c;而一个centos操作系统的iso文件要几个G? Docker中一个tomcat镜像为什么有500MB&#xff0c;而一个tomcat安装包只有10多MB? 操作系统组成部分: 计算机组成原理 进程调度子…

OPPO 关停“造芯”业务 ZEKU:一场大胆的尝试的结束

前言 近期&#xff0c;OPPO 关停了其“造芯”业务 ZEKU&#xff0c;结束了其自主研发处理器的尝试。本文将对这一事件进行探讨&#xff0c;分析其背后的原因及其对整个行业的影响。 1. ZEKU的成立与使命 在2019年&#xff0c;OPPO旗下的ZEKU研究所成立&#xff0c;标志着OPP…

Redis缓存穿透、缓存雪崩和缓存击穿

缓存穿透 缓存穿透&#xff0c;是指查询一个缓存和数据库中都没有的数据。正常的使用缓存流程大致是&#xff0c;数据查询先进行缓存查询&#xff0c;如果key不存在或者key已经过期&#xff0c;再对数据库进行查询&#xff0c;并把查询到的对象&#xff0c;放进缓存。如果数据库…

Centos和Windows之间通过主机名实现相互访问

一、业务需求 在内网环境中,我们想直接通过特定的主机名称去访问我们的服务器,而不用去记忆服务器的IP地址,且不想通过nginx等代理工具或域名配置内容来操作。 二、分析 通常我们可以直接在浏览器中输入【localhost】后按下回车键后就可以访问我们的主机80端口的内容了;那…

计算机网络大作业(Wireshark抓包分析)

实验要求 wireshark的深入学习与掌握&#xff0c;如过滤器的使用&#xff0c;归纳方法通过实验阐述ARP的工作原理利用实验结果分析 ICMP 协议的报文结构字段定义基于实验数据深入分析 TCP 协议的连接过程原理&#xff0c;报文的分片等功能从校园网发起向外网中某 Web 服务器的…

基于正点原子电机实验的pid调试助手代码解析(速度环控制)

这里写目录标题 下位机与PID调试助手传输的原理代码讲解(基于正点原子)解析数据接受和数据发送的底层函数数据接受数据帧格式环形数组以及怎么找到它的帧头位置crc校验 数据发送数据上传函数 通过前两节文章&#xff0c;我已经了解了基本的pid算法&#xff0c;现在在完成了电机…