# Docker+Harbor部署 **Repository Path**: shi-hejun/docker ## Basic Information - **Project Name**: Docker+Harbor部署 - **Description**: 构建Docker环境和harbor镜像仓库 - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-02-19 - **Last Updated**: 2025-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docker+Harbor部署 ## 介绍 Docker 是一个用于开发、部署和运行应用程序的开源平台,它利用容器化技术,将应用及其依赖项打包成独立的容器,实现了应用的高效部署与管理。以下从多个方面对其进行简单介绍: ### 核心概念 - 镜像(Image) - 镜像是一个只读的模板,类似于虚拟机的快照,包含了运行应用程序所需的所有文件系统、代码、运行时环境、库和依赖项等。例如,一个 Python 应用的 Docker 镜像会包含 Python 解释器、应用代码以及应用依赖的 Python 库。 - 可以通过 Dockerfile 来创建自定义镜像,Dockerfile 是一个文本文件,其中包含了一系列构建镜像所需的指令。 - 容器(Container) - 容器是镜像的一个运行实例。可以将容器看作是一个轻量级的、独立的虚拟机,它运行在宿主机上,但与宿主机以及其他容器相互隔离。 - 容器之间可以共享宿主机的操作系统内核,这使得容器的启动速度非常快,通常只需几秒钟,而且占用的系统资源也比传统虚拟机少很多。例如,在一台服务器上可以同时运行多个不同的 Docker 容器,每个容器运行一个独立的应用程序。 - 仓库(Repository) - 仓库是用于存储和分发 Docker 镜像的地方,类似于代码仓库。用户可以将自己创建的镜像推送到仓库中,也可以从仓库中拉取所需的镜像。 - Docker Hub 是 Docker 官方提供的公共仓库,其中包含了大量的各种类型的镜像,用户可以免费使用。此外,也可以搭建自己的私有仓库,如 Harbor,用于企业内部的镜像管理。 ### 工作原理 - 客户端 - 服务器架构 - Docker 采用客户端 - 服务器(C/S)架构。Docker 客户端(Docker CLI)负责接收用户输入的命令,如 `docker run`、`docker build` 等,并将这些命令发送给 Docker 服务器(Docker daemon)。 - Docker 服务器是一个长时间运行的后台进程,负责管理镜像、容器、网络和存储等资源。它接收客户端发送的命令,并执行相应的操作。 - 容器化技术 - Docker 利用 Linux 内核的一些特性,如命名空间(Namespaces)和控制组(Control Groups,简称 cgroups)来实现容器的隔离和资源管理。 - 命名空间用于隔离不同容器的系统资源,如进程、网络、文件系统等,使得每个容器都感觉自己拥有独立的系统环境。控制组则用于限制和监控容器对系统资源(如 CPU、内存、磁盘 I/O 等)的使用,防止某个容器占用过多的资源而影响其他容器的运行。 ### 优点 - 轻量级和快速启动 - 由于容器共享宿主机的操作系统内核,不需要像虚拟机那样模拟完整的操作系统,因此容器的启动速度非常快,占用的系统资源也更少。这使得在同一台服务器上可以运行更多的容器,提高了服务器的资源利用率。 - 环境一致性 - Docker 镜像包含了应用程序运行所需的所有依赖项,因此可以确保应用在不同的环境中(如开发环境、测试环境、生产环境)都能以相同的方式运行,避免了 “在我的机器上能运行,在你的机器上不行” 的问题。 - 可移植性 - Docker 容器可以在任何支持 Docker 的操作系统上运行,无论是物理机、虚拟机还是云平台。这使得应用程序的部署更加灵活和方便,可以轻松地在不同的环境之间迁移。 - 易于管理和扩展 - Docker 提供了丰富的命令行工具和 API,方便用户对容器进行创建、启动、停止、删除等操作。同时,通过使用 Docker Compose 或 Kubernetes 等工具,可以实现容器的集群管理和自动化扩展,根据应用的负载情况动态调整容器的数量。 Harbor 是由 VMware 公司开源的企业级 Docker 镜像仓库,它为企业用户提供了一个安全、可扩展、高性能的镜像存储和分发解决方案。以下从多个方面为你详细介绍: ### 核心功能 - 镜像存储与管理 - Harbor 允许用户高效地存储大量 Docker 镜像。用户可以方便地上传、下载、删除和查询镜像,并且能够对镜像进行版本管理,就像在代码仓库中管理代码版本一样,方便不同环境下使用合适版本的镜像。 - 它支持多租户管理,不同的用户或团队可以拥有独立的项目空间来存储和管理自己的镜像,彼此之间相互隔离,提高了镜像管理的安全性和组织性。 - 安全认证与授权 - Harbor 提供了完善的用户认证机制,支持本地用户认证、LDAP/AD 认证等多种方式,方便企业与现有的身份认证系统集成。只有经过授权的用户才能访问和操作镜像仓库。 - 可以对不同的用户或用户组设置细致的访问权限,例如只读、读写、删除等权限,确保只有授权人员能够对特定项目的镜像进行相应操作,保护企业的镜像资产安全。 - 镜像复制 - 支持镜像在不同 Harbor 实例之间进行复制,无论是在本地数据中心的多个 Harbor 仓库之间,还是在本地与云端 Harbor 仓库之间,都可以实现镜像的同步。这对于构建分布式的镜像存储架构、实现异地容灾和跨区域部署非常有用。 - 可以根据策略自动触发镜像复制,确保镜像在不同仓库之间保持一致。 - 漏洞扫描 - Harbor 集成了漏洞扫描功能,能够对存储的镜像进行安全漏洞检测。它会定期从公共漏洞数据库(如 CVE)获取最新的漏洞信息,并与镜像中的软件包版本进行比对,及时发现镜像中存在的安全隐患。 - 扫描结果会直观地展示给用户,用户可以根据扫描结果决定是否继续使用该镜像,或者采取相应的修复措施。 - 审计与日志 - 对用户在 Harbor 上的所有操作进行详细的审计和日志记录,包括用户登录、镜像上传、下载、删除等操作。这些日志信息可以帮助企业进行安全审计和合规性检查,追踪操作历史和问题排查。 ### 优点 - **企业级安全保障**:通过严格的访问控制、镜像漏洞扫描等功能,为企业的镜像资产提供全方位的安全保护,满足企业在数据安全和合规性方面的要求。 - **高性能与可扩展性**:采用分布式架构设计,能够处理大规模的镜像存储和高并发的访问请求。可以通过添加节点的方式轻松扩展存储和处理能力,适应企业业务的不断发展。 - **易于集成与管理**:Harbor 提供了友好的 Web 界面和丰富的 API,方便用户进行日常管理和操作。同时,它可以与 Docker、Kubernetes、Jenkins 等容器生态系统中的其他工具无缝集成,融入企业现有的 CI/CD 流程。 ## 安装教程 ### 更新yum源 ### 1. 备份原有的 Yum 源配置文件 为了防止在操作过程中出现问题,首先需要备份系统默认的 Yum 源配置文件,一般这些配置文件存放在 `/etc/yum.repos.d/` 目录下。可以使用以下命令进行备份: ```bash sudo cp -a /etc/yum.repos.d/ /etc/yum.repos.d.bak ``` ### 2. 选择合适的 Yum 源 常见的国内 Yum 源有阿里云、网易等,下面以阿里云 Yum 源为例介绍替换方法。 #### 2.1 下载阿里云 Yum 源配置文件 对于不同的系统版本,需要下载对应的配置文件,以下给出 CentOS 7 的操作命令: **CentOS 7** ```bash sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ``` ### 3. 清除 Yum 缓存 执行以下命令清除系统中已有的 Yum 缓存: ```bash sudo yum clean all ``` ### 4. 生成新的 Yum 缓存 ```bash sudo yum makecache ``` ### 5. 验证 Yum 源更新结果 可以通过执行 `yum update` 命令来检查是否能正常从新的 Yum 源获取软件包信息并更新系统: ```bash sudo yum update ``` 在执行此命令时,系统会列出可更新的软件包列表,若能正常显示,则说明 Yum 源更新成功。 ### CentOS 系统上构建 Docker 环境 #### 1. 卸载旧版本的 Docker(如果有) ```bash sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine ``` #### 2. 设置 Docker 软件源 ```bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ``` #### 3. 安装 Docker 引擎 ```bash sudo yum install docker-ce docker-ce-cli containerd.io ``` #### 4. 启动 Docker 服务并设置开机自启 ```bash sudo systemctl start docker sudo systemctl enable docker ``` #### 5. 验证 Docker 是否安装成功 ```bash docker -V ``` #### 6.由于docker的镜像仓库在国外。在拉取镜像时会有异常这里可以更换国内镜像源 编辑 Docker 配置文件,添加以下内容: ```bash cat > /etc/docker/daemon.json <