docker(2)——docker仓库之Registry、harbor仓库

2023-05-16

一.什么是仓库

        Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。

        Docker运行中使用的默认仓库是 Docker Hub 公共仓库。

二、Docker Hub

docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。

https://hub.docker.com 可以去注册一个!再看它的官方文档去了解了解。

三、本地仓库搭建及其Registry 工作原理

1.先清理之前的实验

[root@server1 ~]# docker images | grep webserver | awk '{system("docker rmi "$1":"$2"")}'
[root@server1 ~]# docker ps -a

[root@server1 ~]# docker images

 2.搭建本地仓库

(1)下载registry镜像

 (2)运行registry容器并开放5000端口

 docker run -d --name registry -p 5000:5000 registry    ##启动本地仓库,端口映射为5000

(3)仓库作用:先上传镜像到本地仓库(本地镜像在命名时需要加上仓库的ip和端口)

[root@server1 ~]# docker tag busybox:latest localhost:5000/busybox:latest

[root@server1 ~]# docker push localhost:5000/busybox:latest  上传

上传成功后本地路径中也产生了文件,
删除之后,重新加载,之前的内容依然存在

3.Registry 工作原理

一次docker pull 或 push 背后发生的事情:

 

         index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registy下载镜像,在下载过程中 registhy会去index校验客户端token的合法性,不同镜像可以保存在不同的registy服务上,其索引信息都放在index服务上。

Docker Registry有三个角色,分别是index、registry和registryclient.

  • index   负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。

 Web UI、元数据存储、认证服务、符号化。

  • registry      是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过index Auth service的Token的方式进行认证。

  • Registry Client       Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

 用户要获取并下载镜像:

 

  用户要上传镜像到registry中:

 用户要从index或registry中删除镜像

在这里插入图片描述

 4. 配置docker镜像加速器

注册阿里云帐号。
登陆之后,   产品与服务—>容器镜像服务—>镜像加速器

使用阿里云的加速器:

[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# ls
key.json
[root@server1 docker]# vim daemon.json  编辑镜像加速器配置
[root@server1 docker]# cat daemon.json 
{
  "registry-mirrors": ["https://qjjesv8p.mirror.aliyuncs.com"]
}
[root@server1 docker]# 
[root@server1 docker]# systemctl daemon-reload
[root@server1 docker]# systemctl restart docker
[root@server1 docker]# docker info

[root@server1 docker]# docker ps
[root@server1 docker]# docker ps -a
[root@server1 docker]# cd
[root@server1 ~]# docker pull mysql

[root@server1 ~]# docker images

 

 将mysql镜像删除,然后使用docker官方的加速器:

[root@server1 ~]# cd -
/etc/docker
[root@server1 docker]# ls
daemon.json  key.json
[root@server1 docker]# cat daemon.json 
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
[root@server1 docker]# systemctl daemon-reload
[root@server1 docker]# systemctl restart docker
[root@server1 docker]# docker info
[root@server1 docker]# cd
[root@server1 ~]# docker pull mysql

5.搭建私有仓库

[root@server1 ~]# ls
anaconda-screenshots  docker                             openssl11-libs-1.1.1g-3.el7.x86_64.rpm
base-debian10.tar     openssl11-1.1.1g-3.el7.x86_64.rpm
[root@server1 ~]# yum install openssl11-1.1.1g-3.el7.x86_64.rpm openssl11-libs-1.1.1g-3.el7.x86_64.rpm
[root@server1 ~]# mkdir certs
[root@server1 ~]# ls
anaconda-screenshots  certs   openssl11-1.1.1g-3.el7.x86_64.rpm
base-debian10.tar     docker  openssl11-libs-1.1.1g-3.el7.x86_64.rpm
[root@server1 ~]# openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/westos.org.key -addext "subjectAltName = DNS:reg.westos.org" -x509 -days 365 -out certs/westos.org.crt

[root@server1 ~]# docker run -d --restart=always --name registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGIDTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -p 443:443 registry   
283a5253fbd5e92bf99953630e763c50ce80b7d4a95efb50e9e4f6b61c894c9b
[root@server1 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                             NAMES
283a5253fbd5   registry   "/entrypoint.sh /etc…"   8 seconds ago   Up 7 seconds   0.0.0.0:443->443/tcp, :::443->443/tcp, 5000/tcp   registry
[root@server1 ~]# vim /etc/hosts
[root@server1 ~]# docker images
REPOSITORY                        TAG       IMAGE ID       CREATED        SIZE
localhost:5000/busybox            latest    beae173ccac6   5 days ago     1.24MB
mysql                             latest    3218b38490ce   2 weeks ago    516MB
registry                          latest    b8604a3fe854   7 weeks ago    26.2MB
centos                            latest    5d0da3dc9764   3 months ago   231MB
nginx                             1.18      c2c45d506085   8 months ago   133MB
yakexi007/game2048                latest    19299002fdbe   5 years ago    55.5MB
yakexi007/mario                   latest    9a35a9e43e8c   6 years ago    198MB
gcr.io/distroless/base-debian10   latest    d48fcdd54946   52 years ago   19.2MB
[root@server1 ~]# docker tag localhost:5000/busybox:latest reg.westos.org/busybox:latest
[root@server1 ~]# docker push reg.westos.org/busybox:latest ##上传失败
[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# ls
daemon.json  key.json
[root@server1 docker]# mkdir certs.d
[root@server1 docker]# ls
certs.d  daemon.json  key.json
[root@server1 docker]# cd certs.d/
[root@server1 certs.d]# mkdir reg.westos.org
[root@server1 certs.d]# cd reg.westos.org/
[root@server1 reg.westos.org]# cp /root/certs/westos.org.crt ca.crt
[root@server1 reg.westos.org]# ls
ca.crt
[root@server1 reg.westos.org]# pwd
/etc/docker/certs.d/reg.westos.org
[root@server1 reg.westos.org]# cd
[root@server1 ~]# docker push reg.westos.org/busybox:latest 

[root@server1 ~]# mkdir auth 
[root@server1 ~]# yum install -y httpd-tools
[root@server1 ~]# htpasswd -cB auth/htpasswd admin
New password: 
Re-type new password: 
Adding password for user admin
[root@server1 ~]# cat auth/htpasswd 
admin:$2y$05$DOHbuVGTTS/iMhRq9xBT9uNQd.0m6HqoOwr82qwGvIiPEyAVivx9S
[root@server1 ~]# htpasswd -B auth/htpasswd gyy
New password: 
Re-type new password: 
Adding password for user gyy
[root@server1 ~]# cat auth/htpasswd 
admin:$2y$05$DOHbuVGTTS/iMhRq9xBT9uNQd.0m6HqoOwr82qwGvIiPEyAVivx9S
gyy:$2y$05$PI.LrvlfgP4laHopOlJLoe6XsBPdht6/v5Xmax4AIwTVkT5MI0Wom
[root@server1 ~]# docker rm -f registry 
registry
[root@server1 ~]# 

 [root@server1 ~]# docker run -d --restart=always --name registry -v /root/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/westos.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/westos.org.key -p 443:443 -v /root/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry
[root@server1 ~]# docker ps
[root@server1 ~]# docker images

[root@server1 ~]# docker volume ls

 清除没有在使用的卷:
 

[root@server1 ~]# docker push reg.westos.org/busybox:latest    ##没有认证
[root@server1 ~]# docker login reg.westos.org
[root@server1 ~]# docker push reg.westos.org/busybox:latest   ##再次上传
[root@server1 ~]# curl -u admin:westos -k https://reg.westos.org/v2/_catalog  ##查看是否上传成功

四、 docker-harbor仓库

先把旧的registry删除

[root@server1 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                                             NAMES
2d26479b98f3   registry   "/entrypoint.sh /etc…"   31 minutes ago   Up 31 minutes   0.0.0.0:443->443/tcp, :::443->443/tcp, 5000/tcp   registry
[root@server1 ~]# docker rm -f registry 

 1.软件包

docker-compose-linux-x86_64-v2.0.1

harbor-offline-installer-v2.3.4.tgz

[root@server1 ~]# mv docker-compose-linux-x86_64-v2.0.1 /usr/local/bin/docker-compose
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose
[root@server1 ~]# tar zxf harbor-offline-installer-v2.3.4.tgz 
[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
[root@server1 harbor]# cp harbor.yml.tmpl harbor.yml
[root@server1 harbor]# vim harbor.yml

hostname: reg.westos.org

certificate: /data/certs/westos.org.crt
private_key: /data/certs/westos.org.key

harbor_admin_password: westos

[root@server1 harbor]# mkdir /data
[root@server1 harbor]# cd
[root@server1 ~]# mv certs/ /data/
[root@server1 ~]# cd /data/
[root@server1 data]# ls
certs
[root@server1 data]# cd certs/
[root@server1 certs]# ls
westos.org.crt  westos.org.key
[root@server1 certs]# 

2.修改配置信息

 [root@server1 harbor]# vim harbor.yml 

hostname: reg.westos.org

certificate: /data/certs/westos.org.crt
private_key: /data/certs/westos.org.key

harbor_admin_password: westos

 3.安装

[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
common.sh  harbor.v2.3.4.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare
[root@server1 harbor]# ./install.sh ##出错

 [root@server1 harbor]# netstat -antlp  ##查看端口

 查看当前正在运行的进程:

 查看镜像:

 [root@server1 harbor]# docker-compose ps   ##docker-compose必须在harbor目录下运行

4.登陆网页

 访问https://172.25.52.1/   ——>登陆

5. 获取认证

docker logout reg.westos.org  ##退出之前的认证
docker login reg.westos.org
Username: admin
Password:
是登陆web页面的账号密码。

[root@server1 ~]# docker tag reg.westos.org/busybox:latest reg.westos.org/library/busybox:latest
[root@server1 ~]# cat auth/htpasswd 
admin:$2y$05$DOHbuVGTTS/iMhRq9xBT9uNQd.0m6HqoOwr82qwGvIiPEyAVivx9S
gyy:$2y$05$PI.LrvlfgP4laHopOlJLoe6XsBPdht6/v5Xmax4AIwTVkT5MI0Wom
[root@server1 ~]# docker logout reg.westos.org   ##退出之前的认证
Removing login credentials for reg.westos.org
[root@server1 ~]# cd docker/
[root@server1 docker]# ls
CentOS-Base.repo  Dockerfile  Dockerfile.old  index.html  nginx-1.20.2.tar.gz
[root@server1 docker]# cd
[root@server1 ~]# cd .docker/
[root@server1 .docker]# ls
config.json
[root@server1 .docker]# cat config.json 
[root@server1 .docker]# docker login reg.westos.org  ##重新进行认证
[root@server1 .docker]# cd
[root@server1 ~]# docker push reg.westos.org/library/busybox:latest ##上传

 再次上传一个nginx镜像:

 在前端访问:https://172.25.52.1

 项目——>library——>镜像仓库

 可以在日志中查看上传和下载信息等

6.添加默认仓库路径(客户端)

首先需要在server2中下载安装docker-ce,然后进行配置

[root@server2 ~]# cd /etc/yum.repos.d/
[root@server2 yum.repos.d]# ls
Centos-Base.repo  docker-ce.repo  dvd.repo  redhat.repo
[root@server2 yum.repos.d]# yum install -y docker-ce
[root@server2 yum.repos.d]# sysctl --system
[root@server2 yum.repos.d]# systemctl enable --now docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@server2 yum.repos.d]# docker info

 在server1中:

[root@server1 sysctl.d]# cd /etc/docker/
[root@server1 docker]# ls
certs.d  daemon.json  key.json
[root@server1 docker]# scp -r certs.d/ server2:/etc/docker/                                                            
[root@server1 docker]# scp -r daemon.json server2:/etc/docker/

添加默认仓库路径 

 docker info  查看到新的添加的镜像路径

测试:

[root@server2 docker]# docker pull busybox  ##拉取镜像

[root@server2 docker]# docker pull nginx:1.18

 可以在日志中看到

7.重新下载配置

[root@server1 ~]# cd harbor/
[root@server1 harbor]# docker-compose stop
[root@server1 harbor]# docker-compose down
[root@server1 harbor]# ./install.sh --with-notary --with-trivy --with-chartmuseum

内容信任 ,镜像扫描
相当于:配置中加入了漏洞扫描,内容信任等选项。  在打开的网页中选择漏洞扫描

这里主要是作为后期的优化

 

 

 进行镜像扫描:

  扫描后的镜像如下图:

 

 当扫描之后没有漏洞就可以进行签名(上图中的nginx镜像为1.18版本,版本过旧有漏洞)

启用docker内容信任,网页选择内容信任

 部署根证书:

mkdir ~/.docker/tls/reg.westos.org:4443 -p
cd ~/.docker/tls/reg.westos.org:4443
cp /etc/docker/certs.d/reg.westos.org/ca.crt .

启用docker内容信任:

export DOCKER_CONTENT_TRUST=1
 export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443

 上传之前上传的镜像:

 [root@server1 ~]# docker push reg.westos.org/library/nginx:1.18

 显示已经存在,需要我们输入root key和 repository key   当我们只修改标签的时候,我们只用输入repository key

密码  westos007

在前端访问查看签名:

[root@server1 ~]# docker tag  nginx:latest reg.westos.org/library/nginx:latest
[root@server1 ~]# docker push reg.westos.org/library/nginx:latest   ##只修改标签,只用输入repository key

 网页访问,签名成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker(2)——docker仓库之Registry、harbor仓库 的相关文章

  • Docker - 如何在 postgres 容器中运行 psql 命令?

    我想在 postgres 映像中使用 psql 以便对数据库运行一些查询 但不幸的是 当我附加到 postgres 容器时 我收到错误 psql 命令未找到 对我来说 如何在容器中运行 postgresql 查询或命令是一个谜 如何在pos
  • 确定 docker 镜像的操作系统分布

    我需要确定任何 docker 映像的操作系统发行版名称 我可以标记ubuntu 最新 as 图片1 最新 但我应该能够在启动时获取 image1 latest 的分发信息 为了实现这一点 我使用下面提到的命令来确定操作系统版本 docker
  • 向 docker 镜像添加新的入口点

    最近 我们决定将我们的一项服务迁移到 docker 容器 该服务是另一家公司的产品 他们为我们提供了 docker 镜像 但是 我们需要在容器入口点中执行一些额外的配置步骤 我尝试的第一件事是从基础映像创建一个 DockerFile 然后添
  • Docker Hub API v2 令牌身份验证问题

    目前 我正在开发一个非常轻量级版本的 Docker 容器编排器 并且我必须能够从公共 Docker Hub 注册表获取图像摘要 我想使用 Docker Registry API v2 来实现此目的 我正在尝试使用以下 API 调用获取授权令
  • 应用程序移至 Docker 生产环境时 Flask-WTF CSRF 验证失败

    我刚刚为我一直在开发的 Flask 应用程序设置了生产环境 这个堆栈是 Windows Server 2012 R2 Hyper V VM Running Ubuntu 14 04 Docker 1 5 Running Containers
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • 无法使用 docker build 运行 gradle 包装器

    我有这个小构建 FROM eclipse temurin 17 jdk as build java COPY java project root project WORKDIR root project RUN chmod x gradle
  • 无法从我的电脑上使用 traefik 后面的 gitlab 进行 git 克隆

    这是我的 gitlab 和 traefik 配置 version 3 7 services gitlab web image gitlab gitlab ce latest restart always hostname gitlab ro
  • docker build 如何知道 Dockerfile RUN 或 COPY 行是否可以使用缓存?

    如果我的 Python 项目的 Dockerfile 如下所示 FROM python 3 7 Set env variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 S
  • Docker Compose 无法连接到数据库

    我使用 Nestjs 作为后端 并使用 typeorm 作为 ORM 我尝试在 docker compose 文件中定义我的数据库和应用程序 如果我将数据库作为容器运行 并从本地计算机运行应用程序 那么它运行良好 我的程序连接并创建表等 但
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 在 Docker 中保护私有 PyPi 的凭据

    我正在构建 Docker 映像 需要运行 pip install 与带有凭据的私有 PyPi 保护凭证的最佳方法是什么 即使我删除它们 使用各种文件配置选项 pip conf requirements txt netrc 仍然是一个漏洞 因
  • 如何检查Docker中是否安装了python包?

    我使用Dockerfile成功构建了一个容器 但是 我的代码在容器中不起作用 如果我手动安装所有软件包 它确实有效 我假设我搞砸了一些导致 docker 没有正确安装软件包的事情 所以 我想检查Docker容器中是否安装了python包 最
  • 如何使环境变量可用于 docker-compose 中的 Docker RUN 命令?

    我有一个 Dockerized 应用程序 我想在代理和非代理主机环境中运行 我试图通过将普通环境变量 例如 http proxy 复制到容器中 当且仅当它们存在于主机中时 来解决此问题 我可以通过跑步完成 90 的任务 set grep i
  • Netstat不显示docker暴露的端口

    因为某些原因netstat没有列出 docker 暴露的端口 按照建议here https stackoverflow com questions 36454955 docker and netstat netstat is not sho
  • 如何迭代所有注册表项?

    我正在尝试迭代所有注册表项以查找 包含 并删除 jre1 5 0 14 值 有办法做到吗 下面的代码只是在特定键下找到jre1 5 0 14 我确实想迭代所有的键 顺便说一句 if 子句获取是否等于 jre1 5 0 14 但如果它包含 j
  • 如何通过 PowerShell 获取注册表项的所有权?

    我尝试通过 PowerShell 获取注册表项的所有权 但它悄无声息地失败了 我正在使用以下代码 get the username of the current user uname System Security Principal Wi
  • 如何使用 Docker for Mac 向 docker awslogs 驱动程序提供凭证?

    我正在尝试使用泊坞窗awslogs 驱动程序 https docs docker com engine admin logging awslogs 并收到以下错误 docker 来自守护程序的错误响应 无法初始化日志记录 驱动程序 NoCr
  • 命名卷在 docker 中如何工作?

    我正在努力理解以下 docker 示例中的命名卷到底是如何工作的docs https docs docker com compose compose file volume configuration reference version 3
  • 读取存储在注册表中的 GUID 值

    我尝试读取存储为的 GUID 值binaryDelphi 注册表中的值 当我用BintoHex读取它时 但结果是相反的 看来我必须交换字节 但我认为 BinToHex 可以做到 我参考了这个线程 但找不到正确的解决方案 如何在 Delphi

随机推荐

  • 【ROS基础指令】ROS基础指令、基本知识快速查询

    ROS学习 ROS相关指令积累1 ros基础指令2 ros常用工具指令关于rviz关于rqt关于gazebo关于launch关于run关于PX4 如何自定义数据类型仿真 ROS相关指令积累 1 ros基础指令 功能指令初始化创建工作空间ca
  • 【cartographer_slam源码阅读】4-6激光雷达数据的转换

    HandleLaserScanMessage 函数 作用 xff1a 利用 ToPointCloudWithIntensities函数 将ros中的数据转换为carto中定义的数据类型 xff1b 传入 HandleLaserScan 函数
  • prometheus二次开发之HTTP api(一)

    Prometheus在 api v1的路径下开放了HTTP接口 xff0c 用户可以通过这些接口进行二次开发 这篇笔记挑选了此次监控平台可能会用到的接口进行解析 1 请求 amp 响应格式 1 JSON响应格式 以JSON格式进行响应 若A
  • prometheus二次开发之HTTP api(二)

    接以上prometheus二次开发之HTTP api xff08 一 xff09 xff1a https blog csdn net weixin 44723434 article details 104282636 最近做监控方案发现可能
  • 从 JavaScript 中的数组中删除空对象

    从数组中删除空对象 xff1a 使用 Array filter 方法遍历数组 将每个对象传递给 Object keys 方法并检查键的长度是否不等于 0 filter 方法将返回一个不包含空对象的新数组 span class token k
  • 耦合,紧耦合,松耦合,解耦

    一 耦合 耦合是两个或多个模块之间的相互关联 在软件工程中 xff0c 两个模块之间的耦合度越高 xff0c 维护成本越高 因此 xff0c 在系统架构的设计过程中 xff0c 应减少各个模块之间的耦合度 xff0c 以提高应用的可维护性
  • 实习日记之SNMPV3不难

    SNMPv3 的连接 snmpwalk v 3 u a a MD5 A Qaz1234567 x AES X Qaz1234567 l authPriv 10 0 31 132 1 3 6 1 2 1 6 前面 v 3 xff0c 意思是在
  • 一些控制算法学习

    pid LQR xff08 LQG xff09 xff0c 鲁棒控制 xff08 H无穷 xff09 xff0c 自适应控制 xff08 包含滑膜 xff0c 反步法 xff0c mrac模型参考 xff0c L1自适应 xff09 xff
  • Qt和其它GUI库的对比

    Windows 下的 GUI 库 Windows 下的 GUI 解决方案比较多 xff1a 基于 C 43 43 的有 Qt MFC WTL wxWidgets DirectUI Htmlayout xff1b 基于 C 的有 WinFor
  • stm32初学 Keil debug断点调试的步骤

    网上没搜到 xff0c 自己简单写一个 xff0c 希望对大家有用 1 在debug模式下 xff0c 将需要观察的变量选中 xff0c 右键Add to添加到 Watch 1中 原本Watch应该位置在右下角见图二 xff0c 是我拖到了
  • 关于a++和++a

    作者 xff1a Huya天涯过客 写此博文的初衷是想将自己的心得体会与Java初学者进行分享 xff0c 已在该领域纵横多年的技术大佬请自行跳过 刚学到数据类型以及变量赋值的同学们肯定会接触到自增运算符这个知识点 xff0c 绝对有很多人
  • Nuttx学习笔记(一)——Nuttx系统开发环境搭建

    最近刚开始接触Nuttx xff0c 在配置环境的时候踩了一些坑 xff0c 写下这篇博客记录一下 本人搭建开发环境的时候 xff0c 参考了官方文档和YouTube上的一个大佬的视频 xff0c 链接如下 xff1a 官方文档 http
  • Linux驱动_驱动设计的思想(面向对象、设备树)

    一 Linux驱动 驱动设计的思想 xff08 面向对象 分层 分离 xff09 总则 xff1a Linux驱动 61 驱动框架 43 硬件操作 61 驱动框架 43 单片机 1 面向对象就是用结构体表示某个对象 2 分层 3 分离 事实
  • 2惠普暗影精灵恢复出厂设置

    因为之前把电脑送去惠普售后店维修了 xff08 寻找惠普官方售后店的方法 xff1a 关注微信公众号惠普服务 xff09 xff0c 拿回来的时候系统被店里的人重装了 xff0c 不但C盘只剩下十几G的空间 xff0c 而且多了阴魂不散的3
  • Ubuntu18.04屏幕自动旋转解决方法

    Ubuntu屏幕突然自己旋转 xff0c 大概率是因为开了重力感应 xff0c 电脑倾角变动后 xff0c 屏幕跟随旋转 首先先把屏幕转回来 终端输入 xrandr span class token operator span q 查看连接
  • 傅里叶与图像特征简介

    傅里叶变换在图像处理中有着广泛的应用 xff0c 主要应用方向有 xff1a 图像增强与去噪 边缘检测 特征提取 图像压缩等 其核心思想是使用傅里叶变换将图像由空间域转换至频率域 xff0c 通过对频率域进行不同的运算操作 xff0c 实现
  • openCPU开发demo详解包括线程调度、队列等的使用

    OpenCPU开发例程的详细解释 xff0c 包括各种功能的测试 xff0c 如线程 队列等 源代码为osi demo c 初步学习 xff0c 可能有误 xff0c 仅供参考 demo详解 代码部分系统函数fibo textTrace 输
  • 如何在ros上编写一个简单的node并进行通信

    如何在ros上编写一个简单的node并进行通信 这里采用ros教程的例子 xff0c 稍作修改 与C 43 43 不同的是 xff0c python不需要在package中加入message runtime以及message generat
  • ros编写自己的msg(Python)

    这里 xff0c 假设我们的包名叫做test py 我们写自己的msg文件在该包的msg文件夹下 test msg float32 data 然后 xff0c 我们编写自己的talker py文件如下 usr bin env python
  • docker(2)——docker仓库之Registry、harbor仓库

    一 什么是仓库 Docker 仓库是用来包含镜像的位置 xff0c Docker提供一个注册服务器 xff08 Register xff09 来保存多个仓库 xff0c 每个仓库又可以包含多个具备不同tag的镜像 Docker运行中使用的默