首页 > 其他分享 >docker阶段04 Docker仓库管理(Harbor), Docker 的资源限制

docker阶段04 Docker仓库管理(Harbor), Docker 的资源限制

时间:2024-09-21 19:01:50浏览次数:7  
标签:镜像 04 Harbor harbor ubuntu -- Docker root docker

Docker 仓库管理

上传docker hub官方镜像仓库

#1.给本地镜像打标签
上传本地镜像前必须先给上传的镜像用docker tag 命令打标签
标签格式: docker.io/用户帐号/镜像名:TAG
#范例: 
[root@ubuntu1804 ~]#docker tag alpine:3.11 docker.io/wangxiaochun/alpine:3.11-v1

#2.登录
docker login [OPTIONS] [SERVER]    #服务器地址不写默认官方地址
#例:
docker login -u [email protected]
#输入密码

#3.上传
docker push ...

阿里云进入容器镜像服务,实例列表,个人版

公有地址
专有地址    阿里云上服务使用地址,阿里云内网

 

私有云单机仓库 Docker Registry

官方的,不好用,纯命令行界面,很鸡肋

 

Docker 之分布式仓库 Harbor

生产使用这个软件,有图形界面

Harbor 组成

 安装 Harbor

下载地址: https://github.com/vmware/harbor/releases
安装文档: 
https://github.com/goharbor/harbor/blob/master/docs/install-config/_index.md
https://goharbor.io/docs/2.10.0/install-config/
环境要求:Harbor docs | Harbor Installation Prerequisites (goharbor.io)

 下载Harbor安装包并解压缩

https://github.com/goharbor/harbor/releases
#下载harbor-offline-installer-v2.10.0.tgz
[root@ubuntu ~]#tar xf harbor-offline-installer-v2.10.0.tgz -C /usr/local/

[root@ubuntu ~]#cd /usr/local/harbor/
[root@ubuntu harbor]#cp harbor.yml.tmpl harbor.yml

[root@ubuntu harbor]#vim harbor.yml
hostname: 10.0.0.151
#如果不使用https,还需要将下面行注释掉
#https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
harbor_admin_password: 123456
data_volume: /data/harbor    #会自动创建

[root@ubuntu harbor]#./install.sh
#查看服务 (nginx端口映射80端口,宿主机不要占用80)
[root@ubuntu harbor]#docker-compose ps

#compose.yml文件中服务都是自启动的,所以Harbor可以自启动
#启动停止用docker-compose命令
docker-compose start    #启动
#这里停止,因为服务做了文件挂载持久化,用down也可以。stop也行

#默认用户名admin 
密码: 123456

#里面可以创建项目,每个项目下有自己的镜像
#创建用户,用于连接上传镜像,创建项目给该用户用
新建项目:访问级别  如果是公开,上传要输密码,下载不需要    #这里创建example项目
        项目配额限制: 默认不限制
        镜像代理:上传的镜像传到别的仓库,自己相当于nginx,这里不选
新建用户: 开发者能上传下载镜像        #这里创建wang用户

#写service文件,调用更简单
[root@harbor ~]#vim /lib/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /usr/local/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /usr/local/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target

[root@harbor ~]#systemctl daemon-reload 
[root@harbor ~]#systemctl enable harbor

#上传镜像操作
#打镜像标签
[root@harbor ~]#sdocker tag mynginx:v2.0 10.0.0.151/example/mynginx:v2.0
#修改docker配置文件,访问仓库走http,不走https
[root@ubuntu1804 ~]#vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"],
  "insecure-registries": ["10.0.0.151:80"]  #说明: ":80"可省略
}
[root@ubuntu1804 ~]#systemctl restart docker.service
#可以验证是否生效
[root@ubuntu1804 ~]#docker info

#登录
[root@harbor ~]#docker login 10.0.0.202 -u wang -p Magedu@123
#上传
[root@harbor ~]#docker push 10.0.0.151/example/mynginx:v2.0

#网页example项目里就能看到该镜像了

#另一台机器拉取镜像(也要修改docker配置insecure-registries,访问仓库走http)
[root@harbor ~]#docker pull 10.0.0.151/example/mynginx:v2.0

实现 Harbor 高可用

另一台机器上也部署harbor
创建一样的项目,用户

系统管理添加仓库管理(要管理员账号),再点复制管理,触发模式选事件触发(镜像发生变化就触发)
第一次在复制管理里手动点击复制

另一台机器同样添加仓库管理,再点复制管理

#注意镜像仓库里显示的是文件夹,里面可以有对应各种版本的镜像。删除可以删镜像也可以删到文件夹
#删除这个文件夹时,另一个harbor会把里面的镜像都删了,但文件夹不删

配置 Nginx 做为反向代理

#配置Nginx反向代理
[root@ubuntu2004 ~]#cat /etc/nginx/conf.d/harbor.wang.org.conf
upstream harbor {
   ip_hash;        #harbor内部登录验证,保证登录是同一电脑
   server harbor1.wang.org:80;
   server harbor2.wang.org:80;
}
server {
   listen 80;
   server_name harbor.wang.org;
   client_max_body_size 10g;    #限制nginx传输数据大小
   location / {
       proxy_pass http://harbor;
   }
}

#客户端docker配置
[root@rocky8 ~]#cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"],
   "insecure-registries": ["harbor.wang.org"]    
}
[root@rocky8 ~]#systemctl restart docker

#客户端docker配置名称解析
[root@rocky8 ~]#vim /etc/hosts
10.0.0.100 harbor.wang.org
#如果harbor配置中的hostname: 指定harbor1.wang.org和harbor2.wang.org名称,还需要加下面解
析
10.0.0.101 harbor1.wang.org
10.0.0.102 harbor2.wang.org

harbor可以设置清理服务,定期对镜像进行清理

 

Harbor 安全 Https 配置 (了解,内网安全可用不用https)

harbor对于https需要配置

 

Docker 的资源限制

Stress-ng 压力测试工具

[root@ubuntu ~]#apt update && apt -y install stress-ng

#查看cpu状态,top命令,然后输入1查看每个cpu情况
[root@ubuntu ~]#top

#开1个进程,把1个cpu打满
[root@ubuntu ~]#stress-ng -c 1
#开2个进程,把2个cpu打满
[root@ubuntu ~]#stress-ng -c 2

#查看内容
[root@ubuntu ~]#free -h

#消耗内存,-m开几个进程,一个消耗256MB内存
[root@ubuntu ~]#stress-ng -m 1
#基于该工具做成容器
[root@ubuntu ~]#docker pull lorel/docker-stress-ng    #这里docker不兼容换一个
[root@ubuntu ~]#docker pull alexeiled/stress-ng

# run for 60 seconds with 4 cpu stressors, 2 io stressors and 1 vm stressor using 1GB of virtual memory
docker run -it --rm alexeiled/stress-ng --cpu 4 --io 2 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief

#启动测试 使用256m内存
[root@ubuntu ~]#docker run --rm --name demo1 alexeiled/stress-ng -m 1
#查看容器消耗
[root@ubuntu ~]#docker stats demo1
#查看容器消耗(--no-stream表示一次性)
[root@ubuntu ~]#docker stats --no-stream demo1

#启动测试 docker容器限制1g
[root@ubuntu ~]#docker run --rm --name demo1 -m 1g alexeiled/stress-ng -m 10

#禁用swap
#方式一
[root@ubuntu ~]#vim /etc/fstab    #把swap行注释
#/swap.img       none    swap    sw      0       0
[root@ubuntu ~]#swapoff /swap.img
#方式二
[root@ubuntu ~]#systemctl mask swap.target    #禁用
[root@ubuntu ~]#swapoff -a        #关闭
[root@ubuntu ~]#free -h        #这时候没有swap了
#重启也没有swap了
[root@ubuntu ~]#reboot

内存相关选项

选项:
-m    容器可以使用的最大物理内存量,硬限制,此选项最小允许值为 4m (4MB),此项较常用

容器的 CPU 限制

选项:
--cpus    可以写小数如1.5,使用率在多核可能分散到多核,比如1在4核下可能每核使用25%
--cpuset-cpus    指定容器运行CPU编号,也就是所谓的CPU绑定。如果多CPU,可用0,3或范围0-2
#绑定cpu用的较少,成本过高
--cpu-shares    设置容器之间使用cpu的比例权重,cpu-share的值越高的容器,分得更多cpu使用
#启动测试 使用256m内存
[root@ubuntu ~]#docker run --rm --name demo1 --cpus 0.5 alexeiled/stress-ng -c 1
#查看容器消耗
[root@ubuntu ~]#docker stats demo1

#启动测试 使用第一个cpu
[root@ubuntu ~]#docker run --rm --name demo1 --cpus 0.5 --cpuset-cpus 0 alexeiled/stress-ng -c 1
#查看跑在哪个cpu上(会出现两个,一个父进程,实际工作的是子进程)
[root@ubuntu ~]#ps axo pid,cmd,psr |grep stress-ng

 

标签:镜像,04,Harbor,harbor,ubuntu,--,Docker,root,docker
From: https://www.cnblogs.com/ludingchao/p/18424399

相关文章

  • Dockerfile的详解与案例
    《Dockerfile详解与案例》一、Dockerfile简介Dockerfile是一个用来构建Docker镜像的文本文件,它包含了一系列指令,用于描述如何创建一个Docker镜像。通过Dockerfile,你可以定义镜像的基础环境、安装软件包、设置环境变量等操作,从而实现快速、可重复地构建容器镜像。......
  • docker阶段03 docker容器内hosts文件, DNS, 查docker空间占用, 部署自动化运维平台spu
    容器内部的hosts文件容器会自动将容器的ID加入自已的/etc/hosts文件中,并解析成容器的IP范例:修改容器的hosts文件[root@ubuntu1804~]#dockerrun-it--rm--add-hostwww.wangxiaochun.com:6.6.6.6--add-hostwww.wang.org:8.8.8.8busybox/#cat/etc/hosts127.0.0......
  • 【C++ 差分数组 前后缀分解】P7404家庭菜园
    本文涉及知识点C++差分数组C++前后缀分解P7404家庭菜园出自洛谷,我简述一下。已知数组a,长度为n(1<=n<=2e5),1<=a[i]<=1e9。一次操作如下:将a[i…j]全+1。问最少操作多少次,使得a成为山形数组,即存在k,a[0…k]严格递增,a[k…]严格递减。前后缀分解+差分数组(错误解法)n=a.......
  • Docker 与 GitHub:完美结合实现容器化部署与持续集成
    Docker与GitHub:完美结合实现容器化部署与持续集成使用Docker和GitHub,开发者可以将代码构建、测试和部署流程自动化,从而提高开发效率,确保应用程序的一致性与可靠性。本文将介绍如何使用Docker和GitHubActions实现容器化部署与持续集成。目录概述Docker基础知识Docker镜......
  • 在 Ubuntu 20.04 服务器上安装 Python 3 并设置编程环境的方法
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介Python编程语言越来越受到初学者和经验丰富的开发人员的青睐。Python灵活多变,在脚本编写、自动化、数据分析、机器学习和后端开发等方面具有优势。Python首次发布于......
  • 安装帝国cms时输入安装地址,出现404错误
    当你在安装帝国CMS时输入安装地址却遇到404错误,这意味着服务器无法找到你所请求的安装脚本页面。这个问题可能是由多种因素引起的,以下是一些常见的解决方法:1.检查安装包是否完整确保你下载的帝国CMS安装包是完整的,并且所有文件都已正确上传到服务器。解决方法:重新下载安装包......
  • 【2024潇湘夜雨】WIN10_Pro_22H2.19045.4955软件选装纯净特别版9.20
    【系统简介】=============================================================1.本次更新母盘来自WIN10_Pro_22H2.19045.4955.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为19045.4955。......
  • 828华为云征文|部署 Docker 的图形化管理工具 Portainer
    828华为云征文|部署Docker的图形化管理工具Portainer一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1重置密码2.2服务器连接2.3安全组配置2.4Docker环境搭建三、Flexus云服务器X实例部署Portainer3.1Portainer介绍3.2Portainer部署3.3Portaine......
  • 在一台服务器docker下载mysql和redis镜像,保存到本地,然后在另外一台服务上导入镜像
    要在一台服务器上下载MySQL和Redis的Docker镜像并保存到本地,然后在另一台服务器上导入镜像,您可以按照以下步骤进行操作:步骤1:在第一台服务器上下载MySQL和Redis镜像下载MySQL镜像:dockerpullmysql:latest下载Redis镜像:dockerpullredis:latest步骤2:......
  • 电气自动化入门04:三相交流异步电动机基础知识
    视频链接:3.1电工知识:三相交流异步电动机基础知识_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1PJ41117PW?p=5&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5一、三相交流异步电动机基础知识11.三相交流异步电动机工作原理    是感应电动机的一种,是靠同时接......