Docker镜像构建_Docker Compose编排实践_Docker Harbor仓库的集成
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">Docker镜像的创建</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">构建镜像的命令</a></li><li><a href="#_lab2_0_1">多阶段构建优化镜像大小</a></li><li><a href="#_lab2_0_2">使用现有容器创建镜像</a></li><li><a href="#_lab2_0_3">导入导出镜像文件</a></li><li><a href="#_lab2_0_4">镜像构建的最佳实践</a></li><li><a href="#_lab2_0_5">Dockerfile操作常用指令</a></li><li><a href="#_lab2_0_6"> 小 结 </a></li></ul><li><a href="#_label1">Docker Compose编排</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_7">基本结构</a></li><li><a href="#_lab2_1_8">常用命令</a></li><li><a href="#_lab2_1_9">高级配置技巧</a></li><li><a href="#_lab2_1_10">实际应用示例</a></li><li><a href="#_lab2_1_11">性能优化建议</a></li><li><a href="#_lab2_1_12">YAML文件格式及编写注意事项</a></li><ul class="third_class_ul"><li><a href="#_label3_1_12_0">基本语法示例</a></li><li><a href="#_label3_1_12_1">编写注意事项</a></li></ul><li><a href="#_lab2_1_13">验证与工具</a></li><ul class="third_class_ul"><li><a href="#_label3_1_13_2">示例:完整配置文件</a></li><li><a href="#_label3_1_13_3">数据类型明确</a></li></ul></ul><li><a href="#_label2">Docker-Harbor私有仓库部署与管理</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_14">环境准备</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_15">下载 Harbor 安装包</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_16">配置 Harbor</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_17">启动 Harbor</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_18">访问 Harbor 控制台</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_19">推送镜像到 Harbor</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_20">管理 Harbor</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_21">高可用部署</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_22">常见问题处理</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_23">Harbor简介</a></li><ul class="third_class_ul"><li><a href="#_label3_2_23_4">核心功能</a></li><li><a href="#_label3_2_23_5">架构组成</a></li><li><a href="#_label3_2_23_6">部署方式</a></li><li><a href="#_label3_2_23_7">应用场景</a></li></ul><li><a href="#_lab2_2_24">部署Harbor服务</a></li><ul class="third_class_ul"></ul></ul><li><a href="#_label3">总结</a></li><ul class="second_class_ul"></ul></ul></div><p>在现代化的软件开发和部署流程中,容器化技术已成为提升效率、简化环境管理的重要工具。Docker 作为容器化的核心平台,通过镜像封装应用及其依赖,确保跨环境的一致性。Docker Compose 则进一步简化多容器应用的编排,通过声明式配置实现服务的快速部署与协同。而 Docker Harbor 作为企业级镜像仓库,提供了安全、高效的镜像存储与管理能力,支持团队协作和持续集成。</p><p>本内容旨在系统介绍 Docker 镜像的构建方法、Docker Compose 的编排实践,以及 Harbor 仓库的集成使用,帮助开发者掌握从开发到生产的完整容器化流程,提升 DevOps 实践的成熟度。</p>
<p class="maodian"><a name="_label0"></a></p><h2>Docker镜像的创建</h2>
<p>Docker 镜像的创建通常通过编写 <code>Dockerfile</code> 文件并执行构建命令完成。<code>Dockerfile</code> 是一个文本文件,包含一系列指令,用于定义镜像的构建步骤。</p>
<p>编写一个简单的 <code>Dockerfile</code> 示例:</p>
<div class="jb51code"><pre class="brush:bash;">FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3
COPY ./app /app
WORKDIR /app
CMD ["python3", "app.py"]
</pre></div>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>构建镜像的命令</h3>
<p>使用 <code>docker build</code> 命令根据 <code>Dockerfile</code> 构建镜像。通过 <code>-t</code> 参数指定镜像名称和标签:</p>
<div class="jb51code"><pre class="brush:bash;">docker build -t my-python-app:latest .
</pre></div>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>多阶段构建优化镜像大小</h3>
<p>对于需要编译或依赖复杂的环境,可以使用多阶段构建减少最终镜像体积:</p>
<div class="jb51code"><pre class="brush:bash;">FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:latest
COPY --from=builder /app/myapp /myapp
CMD ["/myapp"]
</pre></div>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>使用现有容器创建镜像</h3>
<p>通过 <code>docker commit</code> 可以将运行中的容器保存为新镜像。适用于调试或临时修改后的保存:</p>
<div class="jb51code"><pre class="brush:bash;">docker commit <container-id> my-new-image
</pre></div>
<p class="maodian"><a name="_lab2_0_3"></a></p><h3>导入导出镜像文件</h3>
<p>镜像可以保存为 <code>.tar</code> 文件便于迁移或分享:</p>
<div class="jb51code"><pre class="brush:bash;">docker save -o my-image.tar my-image:tag
docker load -i my-image.tar
</pre></div>
<p class="maodian"><a name="_lab2_0_4"></a></p><h3>镜像构建的最佳实践</h3>
<p>保持镜像精简,选择合适的基础镜像(如 Alpine Linux)。合并多个 <code>RUN</code> 指令减少镜像层数。使用 <code>.dockerignore</code> 文件排除不必要的文件。定期清理无用镜像释放空间:</p>
<div class="jb51code"><pre class="brush:bash;">docker image prune -a
</pre></div>
<p class="maodian"><a name="_lab2_0_5"></a></p><h3><span>Dockerfile </span> <span>操作常用指令</span></h3>
<div><p><strong>FROM</strong><br />指定基础镜像,所有Dockerfile必须以该指令开头。例如:</p>
<div class="jb51code"><pre class="brush:bash;">FROM ubuntu:20.04
</pre></div>
<p><strong>RUN</strong><br />执行命令并创建新的镜像层,常用于安装软件包:</p>
<div class="jb51code"><pre class="brush:bash;">RUN apt-get update && apt-get install -y curl
</pre></div>
<p><strong>COPY vs ADD</strong><br />两者均用于复制文件,但<code>COPY</code>更透明:</p>
<div class="jb51code"><pre class="brush:bash;">COPY ./app /usr/src/app
</pre></div>
<p><code>ADD</code>支持自动解压和URL下载(通常不推荐)。</p>
<p><strong>WORKDIR</strong><br />设置工作目录,后续指令均在此路径下执行:</p>
<div class="jb51code"><pre class="brush:bash;">WORKDIR /app
</pre></div>
<p><strong>ENV</strong><br />设置环境变量,可被后续指令和容器运行时引用:</p>
<div class="jb51code"><pre class="brush:bash;">ENV NODE_ENV=production
</pre></div>
<p><strong>EXPOSE</strong><br />声明容器运行时监听的端口(实际映射需通过<code>-p</code>参数):</p>
<div class="jb51code"><pre class="brush:bash;">EXPOSE 8080
</pre></div>
<p><strong>CMD</strong><br />指定容器启动时的默认命令(可被<code>docker run</code>覆盖):</p>
<div class="jb51code"><pre class="brush:bash;">CMD ["python", "app.py"]
</pre></div>
<p><strong>ENTRYPOINT</strong><br />配置容器启动时的入口命令(通常与<code>CMD</code>配合使用):</p>
<div class="jb51code"><pre class="brush:bash;">ENTRYPOINT ["nginx"]
CMD ["-g", "daemon off;"]
</pre></div>
<p><strong>VOLUME</strong><br />创建挂载点,用于持久化数据:</p>
<div class="jb51code"><pre class="brush:bash;">VOLUME /data
</pre></div>
<p><strong>USER</strong><br />指定运行指令的用户身份:</p>
<div class="jb51code"><pre class="brush:bash;">USER node
</pre></div>
<p class="maodian"><a name="_lab2_0_6"></a></p><h3><span> 小</span> <span>结 </span></h3>
<div><span>Docker </span> <span>镜像的创建方式多种多样,常用的有: </span></div>
<div><span><strong>基于现有镜像创建</strong></span> <span>:通过修改容器并提交为新的镜像。 </span></div>
<div><span><strong>基于本地模板创建</strong></span> <span>:从模板文件导入创建镜像。 </span></div>
<div><span><strong>基于</strong></span> <span><strong> Dockerfile </strong></span> <span><strong>创建</strong></span> <span>:通过编写</span> <span> Dockerfile </span> <span>来定制镜像,支持自动化构建。</span></div></div>
<p class="maodian"><a name="_label1"></a></p><h2>Docker Compose编排</h2>
<p>Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,通过 YAML 文件配置服务、网络和卷,简化容器化应用的部署与管理。</p>
<p class="maodian"><a name="_lab2_1_7"></a></p><h3>基本结构</h3>
<p>Docker Compose 的核心是 <code>docker-compose.yml</code> 文件,其结构通常包含以下部分:</p>
<div class="jb51code"><pre class="brush:bash;">version: "3.8"# 指定 Compose 文件版本
services: # 定义服务容器
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
volumes: # 定义数据卷
db_data:
networks: # 定义网络
app_network:
driver: bridge
</pre></div>
<p class="maodian"><a name="_lab2_1_8"></a></p><h3>常用命令</h3>
<p>启动服务(后台运行):</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose up -d
</pre></div>
<p>停止服务并删除容器:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose down
</pre></div>
<p>查看运行状态:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose ps
</pre></div>
<p>查看服务日志:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose logs -f
</pre></div>
<p class="maodian"><a name="_lab2_1_9"></a></p><h3>高级配置技巧</h3>
<p>环境变量支持:</p>
<div class="jb51code"><pre class="brush:bash;">services:
app:
environment:
- DEBUG=${DEBUG_LEVEL}# 从 .env 文件或主机环境读取
</pre></div>
<p>依赖管理:</p>
<div class="jb51code"><pre class="brush:bash;">services:
web:
depends_on:
- db
- redis
</pre></div>
<p>资源限制:</p>
<div class="jb51code"><pre class="brush:bash;">services:
worker:
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
</pre></div>
<p class="maodian"><a name="_lab2_1_10"></a></p><h3>实际应用示例</h3>
<p>以下是一个典型 Web 应用配置(包含前端、后端和数据库):</p>
<div class="jb51code"><pre class="brush:bash;">version: "3.8"
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
volumes:
- ./frontend:/app
depends_on:
- api
api:
build: ./backend
ports:
- "5000:5000"
environment:
DB_URL: postgres://user:pass@db:5432/app
depends_on:
- db
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
volumes:
db_data:
</pre></div>
<p class="maodian"><a name="_lab2_1_11"></a></p><h3>性能优化建议</h3>
<ul><li>使用 <code>docker-compose build --parallel</code> 加速多服务构建</li><li>合理配置 <code>restart</code> 策略(如 <code>restart: unless-stopped</code>)</li><li>对生产环境使用 <code>docker-compose.prod.yml</code> 覆盖开发配置</li><li>通过 <code>docker-compose config</code> 验证配置文件语法</li></ul>
<p class="maodian"><a name="_lab2_1_12"></a></p><h3>YAML文件格式及编写注意事项</h3>
<p>YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,常用于配置文件、数据交换等场景。其核心特点包括:</p>
<ul><li>使用缩进表示层级关系(空格缩进,禁止用制表符)。</li><li>支持键值对、列表、标量(字符串、数字等)等数据结构。</li><li>注释以 <code>#</code> 开头。</li></ul>
<p class="maodian"><a name="_label3_1_12_0"></a></p><h4>基本语法示例</h4>
<div class="jb51code"><pre class="brush:bash;"># 键值对
key: value
# 列表
fruits:
- apple
- banana
# 嵌套结构
person:
name: "Alice"
age: 30
</pre></div>
<p class="maodian"><a name="_label3_1_12_1"></a></p><h4>编写注意事项</h4>
<h5>缩进与空格</h5>
<ul><li>同一层级元素必须对齐,缩进使用空格(通常2或4个)。</li><li>冒号 <code>:</code> 后需加空格(如 <code>key: value</code>)。</li></ul>
<h5>字符串处理</h5>
<h5>避免常见错误</h5>
<h5>高级特性(谨慎使用)</h5>
<p class="maodian"><a name="_lab2_1_13"></a></p><h3>验证与工具</h3>
<p class="maodian"><a name="_label3_1_13_2"></a></p><h4>示例:完整配置文件</h4>
<ul><li>普通字符串无需引号,但含特殊字符(如 <code>:</code>、<code>#</code>)时需用引号包裹:
<div class="jb51code"><pre class="brush:bash;">message: "Hello: World"
</pre></div></li><li><p>多行字符串可用 <code>|</code>(保留换行)或 <code>></code>(折叠换行):</p>
<div class="jb51code"><pre class="brush:bash;">description: |
This is a
multi-line text.
</pre></div>
<p class="maodian"><a name="_label3_1_13_3"></a></p><h4>数据类型明确</h4></li><li>布尔值建议用 <code>true</code>/<code>false</code>,而非字符串 <code>"true"</code>。</li><li>数字直接书写(如 <code>42</code>),科学计数法需注意(如 <code>1e5</code>)。</li><li>缩进不一致导致解析失败。</li><li>键名重复(部分解析器会覆盖而非报错)。</li><li>未转义特殊字符(如 <code>@</code>、<code>%</code> 可能被误认为特殊指令)。</li><li>锚点 <code>&</code> 和别名 <code>*</code> 可复用代码块,但过度使用会降低可读性。</li><li>合并键 <code><<</code> 需确保解析器支持。</li><li>使用在线工具(如 <a href="https://yamllint.com/" rel="external nofollow" title="YAML Lint">YAML Lint</a>)验证语法。</li><li>编辑器中安装插件(如 VSCode 的 YAML 扩展)实时检查。</li></ul>
<div class="jb51code"><pre class="brush:bash;"># 数据库配置
database:
host: "localhost"
port: 5432
credentials:
username: admin
password: "secure@123"
# 功能开关
features:
logging: true
analytics: false
# 白名单
allowed_ips:
- 192.168.1.1
- 10.0.0.1
</pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>Docker-Harbor私有仓库部署与管理</h2>
<p class="maodian"><a name="_lab2_2_14"></a></p><h3>环境准备</h3>
<p>确保已安装 Docker 和 Docker Compose,操作系统建议使用 Linux(如 Ubuntu/CentOS)。Harbor 需要至少 4GB 内存和 50GB 存储空间。</p>
<p class="maodian"><a name="_lab2_2_15"></a></p><h3>下载 Harbor 安装包</h3>
<p>从 GitHub 下载最新版本的 Harbor 离线安装包:</p>
<div class="jb51code"><pre class="brush:bash;">wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgz
tar -xzvf harbor-offline-installer-v2.7.0.tgz
cd harbor
</pre></div>
<p class="maodian"><a name="_lab2_2_16"></a></p><h3>配置 Harbor</h3>
<p>修改 <code>harbor.yml</code> 配置文件,设置主机名、端口、数据目录等关键参数:</p>
<div class="jb51code"><pre class="brush:bash;">hostname: registry.yourdomain.com
http:
port: 80
https:
port: 443
certificate: /path/to/cert.pem
private_key: /path/to/key.pem
data_volume: /data/harbor
</pre></div>
<p class="maodian"><a name="_lab2_2_17"></a></p><h3>启动 Harbor</h3>
<p>执行安装脚本并启动服务:</p>
<div class="jb51code"><pre class="brush:bash;">./install.sh
</pre></div>
<p>安装完成后,通过 <code>docker-compose ps</code> 检查所有容器是否正常运行。</p>
<p class="maodian"><a name="_lab2_2_18"></a></p><h3>访问 Harbor 控制台</h3>
<p>浏览器访问 <code>http://<your-hostname></code>,默认管理员账号为 <code>admin</code>,密码在 <code>harbor.yml</code> 中配置(默认为 <code>Harbor12345</code>)。</p>
<p class="maodian"><a name="_lab2_2_19"></a></p><h3>推送镜像到 Harbor</h3>
<p>登录 Docker 并推送镜像:</p>
<div class="jb51code"><pre class="brush:bash;">docker login registry.yourdomain.com
docker tag your-image:tag registry.yourdomain.com/project/your-image:tag
docker push registry.yourdomain.com/project/your-image:tag
</pre></div>
<p class="maodian"><a name="_lab2_2_20"></a></p><h3>管理 Harbor</h3>
<ul><li><strong>用户与权限</strong>:通过控制台创建用户、项目并分配角色(如管理员、开发者)。</li><li><strong>垃圾回收</strong>:定期执行垃圾回收清理无用镜像:<div class="jb51code"><pre class="brush:bash;">docker-compose exec -it harbor-registry registry garbage-collect /etc/registry/config.yml
</pre></div></li><li><strong>备份与恢复</strong>:使用官方工具备份数据目录和数据库。</li></ul>
<p class="maodian"><a name="_lab2_2_21"></a></p><h3>高可用部署</h3>
<p>生产环境建议配置:</p>
<ul><li>使用外部数据库(PostgreSQL)和 Redis</li><li>启用 HTTPS 并配置负载均衡</li><li>设置多个实例通过共享存储(如 NFS)实现数据同步</li></ul>
<p class="maodian"><a name="_lab2_2_22"></a></p><h3>常见问题处理</h3>
<ul><li><strong>证书错误</strong>:确保客户端信任 Harbor 的 CA 证书。</li><li><strong>存储不足</strong>:扩展数据目录或配置外部存储(如 S3)。</li><li><strong>性能优化</strong>:调整 <code>registry</code> 组件的缓存参数。</li></ul>
<p>通过以上步骤,可以完成 Docker Harbor 私有仓库的部署与日常管理。定期检查日志和更新版本以确保安全性与稳定性。</p>
<p class="maodian"><a name="_lab2_2_23"></a></p><h3>Harbor简介</h3>
<p>Harbor 是一个开源的容器镜像仓库管理工具,由 VMware 公司开发并贡献给 Cloud Native Computing Foundation (CNCF)。它提供了企业级的镜像存储、安全扫描、权限管理和复制功能,适用于 Kubernetes 和 Docker 环境。</p>
<p class="maodian"><a name="_label3_2_23_4"></a></p><h4>核心功能</h4>
<p><strong>镜像管理</strong><br />支持 Docker 镜像的存储、分发和管理,提供多版本控制和垃圾回收机制。</p>
<p><strong>安全扫描</strong><br />集成 Clair 等工具,支持镜像漏洞扫描,确保镜像安全性。</p>
<p><strong>权限控制</strong><br />基于角色的访问控制(RBAC),支持多租户管理,可细化到项目级别的权限分配。</p>
<p><strong>复制功能</strong><br />支持跨多个 Harbor 实例的镜像复制,适用于多数据中心或混合云场景。</p>
<p class="maodian"><a name="_label3_2_23_5"></a></p><h4>架构组成</h4>
<p><strong>核心组件</strong></p>
<ul><li><strong>Proxy(Nginx)</strong>:处理外部请求的路由和负载均衡。</li><li><strong>Registry</strong>:存储容器镜像,基于 Docker Distribution 实现。</li><li><strong>Core</strong>:提供 API 服务、用户认证和项目管理。</li><li><strong>Database(PostgreSQL)</strong>:存储用户、项目等元数据。</li><li><strong>Job Service</strong>:处理异步任务(如镜像复制、垃圾回收)。</li></ul>
<p><strong>可选组件</strong></p>
<ul><li><strong>Chart Museum</strong>:管理 Helm Chart。</li><li><strong>Notary</strong>:提供镜像签名和验证功能。</li></ul>
<p class="maodian"><a name="_label3_2_23_6"></a></p><h4>部署方式</h4>
<p><strong>单机部署</strong><br />通过 Docker Compose 快速启动,适合测试或小规模环境。</p>
<p><strong>高可用部署</strong><br />支持 Kubernetes 集群部署,结合外部数据库和存储(如 S3、Ceph)实现高可用。</p>
<p class="maodian"><a name="_label3_2_23_7"></a></p><h4>应用场景</h4>
<ul><li><strong>CI/CD 流水线</strong>:作为镜像仓库与 Jenkins、GitLab CI 等工具集成。</li><li><strong>混合云环境</strong>:通过镜像复制实现跨云镜像同步。</li><li><strong>安全合规</strong>:满足企业级镜像扫描和审计需求。</li></ul>
<p class="maodian"><a name="_lab2_2_24"></a></p><h3>部署Harbor服务</h3>
<p><strong>安装 Docker 和 Docker Compose</strong></p>
<p>确保系统已安装 Docker 和 Docker Compose。Docker 版本需不低于 17.06.0,Docker Compose 版本不低于 1.18.0。</p>
<p>安装 Docker:</p>
<div class="jb51code"><pre class="brush:bash;">yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker
</pre></div>
<p>安装 Docker Compose:</p>
<div class="jb51code"><pre class="brush:bash;">curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
</pre></div>
<p><strong>下载 Harbor 离线安装包</strong></p>
<p>从 <a href="https://github.com/goharbor/harbor/releases" rel="external nofollow" title="Harbor 官方 GitHub">Harbor 官方 GitHub</a> 下载最新版本的离线安装包:</p>
<div class="jb51code"><pre class="brush:bash;">wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
tar xvf harbor-offline-installer-v2.5.0.tgz
cd harbor
</pre></div>
<p><strong>配置 Harbor</strong></p>
<p>修改 <code>harbor.yml</code> 配置文件,主要调整以下参数:</p>
<div class="jb51code"><pre class="brush:bash;">hostname: your.domain.com# 替换为实际域名或 IP
http:
port: 80
https:
port: 443
certificate: /path/to/cert.pem
private_key: /path/to/key.pem
harbor_admin_password: Harbor12345# 管理员初始密码
database:
password: root123# 数据库密码
data_volume: /data# 数据存储路径
</pre></div>
<p>若使用 HTTP 协议,需注释 HTTPS 相关配置并启用 HTTP:</p>
<div class="jb51code"><pre class="brush:bash;"># https:
# port: 443
# certificate: /path/to/cert.pem
# private_key: /path/to/key.pem
</pre></div>
<p><strong>安装 Harbor</strong></p>
<p>执行安装脚本:</p>
<div class="jb51code"><pre class="brush:bash;">./install.sh
</pre></div>
<p>安装完成后,可通过浏览器访问 <code>http://your.domain.com</code>,使用默认用户名 <code>admin</code> 和配置文件中设置的密码登录。</p>
<p><strong>管理 Harbor 服务</strong></p>
<p>停止 Harbor 服务:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose down -v
</pre></div>
<p>重启 Harbor 服务:</p>
<div class="jb51code"><pre class="brush:bash;">docker-compose up -d
</pre></div>
<p>卸载 Harbor(保留数据):</p>
<div class="jb51code"><pre class="brush:bash;">./install.sh --uninstall
</pre></div>
<p>彻底卸载(删除数据):</p>
<div class="jb51code"><pre class="brush:bash;">./install.sh --with-notary --with-trivy --with-chartmuseum --delete-data
</pre></div>
<p><strong>配置 TLS 证书</strong></p>
<p>若需启用 HTTPS,将证书和私钥文件放置到指定路径,并在 <code>harbor.yml</code> 中配置正确路径。证书可通过 Let's Encrypt 或自签名生成。</p>
<p class="maodian"><a name="_label3"></a></p><h2>总结</h2>
<p>通过 Docker 镜像构建,应用及其运行环境被封装为可移植的单元,确保开发、测试和生产环境的一致性。Docker Compose 以简洁的 YAML 配置定义多容器应用,实现服务依赖管理、网络配置和资源分配的自动化。结合 Harbor 仓库,团队能够安全地存储、分发镜像,并通过访问控制、漏洞扫描等功能增强供应链安全。</p>
<p>掌握这三项技术,不仅能优化本地开发与测试流程,还能为大规模部署提供可靠基础。未来可进一步探索 Kubernetes 编排、CI/CD 流水线集成等进阶实践,构建更高效的云原生架构。</p>
<p>到此这篇关于Docker镜像构建_Docker Compose编排实践_Docker Harbor仓库的集成的文章就介绍到这了,更多相关Docker与Docker Compose以及Docker Harbor内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]