培训第三十九天(了解docker-compose,docker-compose编排容器,配置harbor服务)

一、回顾

1、拉取私有仓库镜像

 # 配置dockerdocker pull 10.0.0.10:5000/centosnginx:v0

2、容器网络类型

 brideg(net) default# docker启动之后会生成新的虚拟网卡,网卡的名称docker0# 网段默认是172.17.0.1# 所有的容器都桥接docker0,通过桥接共享网络brctrl showyum -y install bridge-utilshost# 使用方便,直接使用宿主机的ip# 无法并发运行多个同类的容器docker run -it --network bridge|host|none   centos:latest /bin/bashnone

3、跨主机容器网络(两台不同主机上的容器的连接)

 # A主机上的a1容器可以访问B主机上的b1容器# flanneld技术# 使用flanneld分配网段,被分配的网段都可以ping通# 步骤node11dockeretcd(数据库,被flanneld保存网络地址网段等信息)yum -y install etcd# 1、配置文件/etc/etcd/etcd.conf# 修改了发布服务的端口和介绍请求的端口4001,2379ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379,http://10.0.0.11:4001"# 2、启动服务systemctl start etcd# 3、测试服务netstat -lntup | grep 2379netstat -lntup | grep 4001etcdctl set a 123etcdctl get a# 4、检查安全etcdctl -C http://10.0.0.10:4001 cluster-healthflanneldyum -y install flanneld# 5、配置连接数据库vim /etc/sysconfig/flanneld FLANNEL_ETCD_ENDPOINTS="http://10.0.0.11:2379"# 在启动之前要在etcd数据库中添加指定网段172.20.0.0/16etcdctl mk /atomic.io/network/config '{ "Network" : "172.20.0.0/16" }'# 6、启动服务,在启动flanneld服务的时候,会先读取etcd中的network信息,确定要创建的网段systemctl start flanneld# 7、查看分配的网段ifconfig|ip a s查看新的flannel0网卡# 8、如果不配置docker的daemon.json文件,那么默认docker容器的IP地址是172.17.0.1,需要修改daemon.json并且重启docker服务,让docker0这个网卡的网段和flannel0网卡的网段一致cat /run/flannld/subnet.envvim /etc/docker/daemon.json{...,"bip" : "172.20.x.x","mtu" : 1472}# 9、重启docker服务,查看docker0的网段systemctl restart dockerifconfig docker0node22# 1、安装docker# 2、安装flanneldyum -y install flanneld# 3、配置/etc/sysconfig/flanneld,从node11中的etcd数据库中读取网络信息# 4、启动flanneld# 5、ip a s flannel0 分配了一个新的网段# 6、修改node22下面的daemon 添加两个key bip mtu# 7、重启docker服务# 8、docker0的ip地址和flannel0的ip地址保持一致

二、使用docker-compose编排容器

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

1、Docker-compose 定义

1)docker compose 是 docker 官⽅的开源项⽬,负责实现对 docker 容器集群的快速编排(容器,依赖,⽹络,挂载。。)

2)compose 是 docker 公司推出的⼀个⼯具软件,可以管理多个 docker 容器组成的应⽤

3) 需要定义⼀个 YAML 格式的配置⽂件 docker-compose.yml,写 好多个容器之间的调⽤关系

4)使⽤ compose 的步骤

使⽤ Dockerfile 定义各个微服务应⽤并构建出对应的镜像⽂件Dockerfile 的使⽤,以便可以在任何地⽅复制。

使⽤ docker-compose.yml 定义⼀个完整的业务单元,安排好整体应⽤中的各个容器服务。

最后,执⾏ docker-compose up 命令来启动并运⾏整个应⽤程序,完成⼀键部署。

2、Docker-compose 产⽣背景

1)使⽤ Dockerfile 定义镜像⽂件,再⼿动构建、运⾏容器等操作,⽽微服务架构⼀般包含若⼲个微服务,且每个微服务⼀般都会部署多个实例,所以,若每个微服务都需要⼿动启停,那么维护量会⾮常庞⼤,并且⼯作效率也会很低。

2)⽽ compose 是⽤于定义和运⾏多容器 docker 应⽤程序的⼯具。通过 compose,可以使⽤ YML ⽂件来配置应⽤程序需要的所有服务。

3)仅需使⽤⼀个命令,就可以从 YML ⽂件配置中创建并启动所有 服务。

4)Compose 可以基于 Compose ⽂件帮我们快速的部署分布式应 ⽤,⽆需⼿动⼀个个创建和运⾏容器。

5)Compose ⽂件是⼀个⽂本⽂件,通过指令定义集群中的每个容 器如何运⾏。

3、Docker-compose 核⼼概念

Docker-compose 将管理的容器分为三层:⼯程(project)、 服务(service)、容器(container)

1、⼯程:运⾏ compose 的⽬录下所有的⽂件,包括 docker-compose.yml、extends ⽂件、环境变量⽂件等组成⼀个⼯程, 若⽆特殊指定⼯程,⼯程名即为当前⽬录名。⼯程的默认配置⽂件为 docker-compose.yml,可通过环境变量 COMPOSE_FILE 或 -f 参数⾃定义配置⽂件,其定义了多个有依赖关系的服务及每个服务运⾏的容器。

2、 服务:⼀个⼯程中包含多个服务,每个服务中定义了容器运⾏的 镜像、参数、依赖等。⼀个服务中可包括多个容器实例。

3、容器:被 docker-compose 管理或部署的容器集群,调⽤ docker 服务提供的 API 来对容器进⾏管理,只要操作的平台⽀持 docker API,即可在其上进⾏ compose 的容器编排。

4、YAML ⽂件的格式和语法

1)YAML ⽂件格式

yaml 是⼀种标记语⾔很直观的数据序列化格式,可读性很⾼。 类似于 xml 描述性语⾔,语法⽐xml简单的很多。

yaml 数据结构通过缩进进⾏表示,连续的项⽬通过减号来表示,键值对⽤冒号分隔,数组⽤中括号括起来,hash⽤花括号括起来。

yaml ⽂件的基本格式由⼀系列键值对构成。每个键值对都⽤冒号“: ”分隔

 key: value

在 yaml 中,键和值之间只需要⼀个空格,这是为了保证 yaml ⽂件的可读性和⼀致性

对于字符串值,可以使⽤单引号或者双引号将其括起来,这样可以避免出现特殊字符或空格等问题

 name: 'Meng Mr' age: "34"

如果值包含特殊字符(如冒号或短横线),则应该使⽤引号将其括起来

 description: "This is a YAML file: good for configuation files."
2)YAML 注意事项

不⽀持制表符 tab 键缩进,需要使⽤空格缩进。

通常开头缩进 2 个空格。

字符后缩进 1 个空格,如:冒号,逗号,横杠。

⽤ # 表示注释。

如果包含特殊字符⽤单引号引起来。

布尔值(true、false、yes、no、on、off)必须使⽤“”引号括起来,这样分析器会将它们解释为字符串。

3)列表和数组

在yaml中,可以使⽤“-”符号表示⼀个列表和数组

 fruits:    # fruits是⼀个键,它对应⼀个列表,包含三个元素:apple、banana、orange- apple   # fruits为⼀个⼤项,下⾯的⼩项只需要缩进⼏个空格,与其他项⽬对⻬即可- banana- orange
4)嵌套数据结构

yaml⽀持嵌套数据结构,可以⽤缩进来表示不同层级之间的关系, 可使⽤ # 号表示注释信息。

 person:   name: 'Meng Mr'   # 两个空格,name和age是person的⼀级⼦节点age: "34"address:          # address是person的⼆级⼦节点street: '123 Main St'   # address节点包含了street、city、state和zip四个⼀级⼦节点city: 'Anytown'state: 'CA'zip: '12345'
5)Docker-compose 安装

使用pip工具-------安装docker-compose

pip是python的包管理工具,和yum是redhat的关系是一样的

 # 由于要使用python环境运行docker-compose,所以需要验证python[root@docker1 ~]# python --versionPython 2.7.5[root@docker1 ~]# pip-bash: pip: 未找到命令# 安装pip,python的包管理工具(需要使用pip下载安装docker-compose)[root@docker1 ~]# yum -y install python2-pip# 查看所有已经安装过的python第三方库,发现pip版本太低[root@docker1 ~]# pip listpip (8.1.2)# 升级pip版本[root@docker1 ~]# pip install --upgrade pip安装失败[root@docker1 ~]# pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simpleSuccessfully installed pip-20.3[root@docker1 ~]# pip listpip                          20.3# 使用pip安装docker-compose[root@docker1 ~]# pip install docker-compose --ignore-installed requests -i https://mirrors.aliyun.com/pypi/simple[root@docker1 ~]# pip listdocker-compose      1.26.2# 配置docker[root@docker1 ~]# sh docker.sh [root@docker1 ~]# docker --versionDocker version 26.1.4, build 5650f9b
6)docker-compose 命令解析
1、⽂件内常⽤指令字段
(1)version

指定了Docker compose编排⽂件的版本 Docker Compose ⽬前有三个版本,分别为 Version1、 Version2和Version3。

Version1 是较早的版本,它将来会被弃⽤。

Version2 是⽬前的稳定版本,⽀持更多的指令。

Version3 在功能上与 Version2 类似,但进⾏了⼀些改进和 扩展,例如增加了对 Docker BuildKit 的⽀持,可以加速构建过程。

 version:'3'
(2)service

指定了在 docker compose 编排中要运⾏的服务,每个服务都有⼀ 个名称,并指定要使⽤的镜像和容器的配置选项。

 services: mysql: #服务名# 再往下可以对该服务进⾏定义,⽐如指定映射端⼝,指定使⽤的镜像等,但要注意缩进格式。
(3)image

指定要使用的docker镜像

 services:mysql: # 服务名image: mysql:5.5 # 指定mysql镜像,如果主机内不存在该镜像,会从登录的docker镜像仓库内拉取,⼀般都是从dockerhub上拉取
(4)build

允许在 docker compose 编排中指定 dockerfile 的位置。

 services:mysql: # 服务名build: /docker/mysql # 这⾥为⽤户微服务⽂件夹,⾥⾯存放的是该服务代码jar包和Dockerfile⽂件
(5)environment

指定了要设置的环境变量。

 services:mysql: # 服务名environment: # 下⾯是MySQL环境变量的例⼦MYSQL_ROOT_PASSWORD:   000000 # 设置MySQL的root⽤户的密码MYSQL_DATABASE: database # 指定要创建的数据库名称MYSQL_USER: user # 指定要创建的MySQL⽤户名MYSQL_PASSWORD: 123 # 指定要创建的MySQL⽤户的密码
(6)volumes

挂载宿主机路径或命名卷

1、指定路径挂载

 services:mysql: # 服务名volumes:- ./mysql/data:/var/lib/mysq # 直接指定路径挂载

2、⽣成 volume 卷挂载

 [root@doc ~]# docker volume create mysql # ⽣成名为mysql的volume卷[root@doc ~]# vim docker-compose.ymlservices:mysql: # 服务名volumes:- mysql:/var/lib/mysq # 指定volume卷挂载

3、共享⽬录挂载

 [root@doc ~]# vim docker-compose.ymlversion: '2' # 使⽤共享⽬录挂载只有‘2’版本⽀持service:mysql: # 服务名volumes:- /var/lib/mysql # 将这个⽬录作为共享⽬录nginx:volumes:- /usr/local/nginx/htmlphp:volumes_from: # 共享⽬录来⾃- mysql # 挂载的共享⽬录,挂载后会在容器内⽣成与被挂载的⽬录同名的路径- nginx # 共享挂载可以是⼀个列表
(7)port

指定了要宿主机映射到容器的端⼝,端⼝不能低于 60(宿主机端 ⼝:容器端⼝),如果选择的端⼝号低于 60,可能会与系统保留的知名端⼝冲突。

 services:mysql: # 服务名ports:- 3306:3306 # 宿主机端⼝:容器端⼝
(8)expose

⽤于在 docker 容器内部暴露端⼝的选项。

 services:mysql: # 服务名expose:- 3306
(9)networks

加⼊⽹络,引⽤顶级 networks 条⽬.

 networks: # 与services同级dev: # ⾃定义或已存在的⽹络设备名driver: bridge # 设备类型:⽹桥external: true # 外部存在:是
(10)hostname

设定容器主机名

 services:mysql: # 服务名hostname: mysql
(11)command

指定容器启动时要运⾏的命令,覆盖构建时的默认命令

 services:mysql: #服务名command: --character-set·server=utf8
2、docker compose 命令选项
(1)build:重新构建服务
(2) ps:列出容器
(3) up:启动所有docker-compose服务
(4) up -d:启动所有docker-compose服务启动并后台运⾏
(5) exec:进⼊容器实例内部
(6)scale:指定⼀个服务器启动数量
(7)top:显示容器进程
(8)logs:查看容器输出⽇志
(9)down:停⽌并删除容器、⽹络、卷、镜像
(10)stop:停⽌服务
(11) start:启动服务
(12) restart:重启服务
(13)config:检查配置
(14)config -q:检查配置,有问题才有输出
(15) --version:查看版本

5、docker-compose 实例

 # 准备docker环境[root@docker03 ~]#  vim /etc/docker/daemon.json"insecure-registries" : ["http://10.0.0.52"],[root@docker03 test]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd[root@docker03 test]# systemctl daemon-reload[root@docker03 test]# systemctl start docker[root@docker03 ~]# mkdir test[root@docker03 ~]# cd test# 创建docker-compose实例[root@docker03 test]# mkdir html[root@docker03 test]# echo "我是被编排的nginx" > ./html/index.html[root@docker03 test]# lsdocker-compose.yml  html[root@docker03 test]# vim docker-compose.ymlversion: "3" #⽂件版本services:nginx:   #服务名container_name: c1 #容器名image: "nginx:latest"ports:- "80:80" #端⼝映射volumes:- /root/test/html/:/usr/share/nginx/html/ #挂载# 启动compose集群# 要在 docker-compose.yml ⽂件所在的⽬录下才能通过 docker compose 命令启动容器。[root@docker03 test]# docker compose up -d   # 启动⼯程后会根据指定的容器名称,⽣成对应的容器WARN[0000] /root/test/docker-compose.yml: `version` is obsolete [+] Running 8/8✔ nginx Pulled                                                                               30.4s ✔ e4fff0779e6d Pull complete                                                                9.5s ✔ 2a0cb278fd9f Pull complete                                                               19.8s ✔ 7045d6c32ae2 Pull complete                                                               19.8s ✔ 03de31afb035 Pull complete                                                               19.8s ✔ 0f17be8dcff2 Pull complete                                                               19.9s ✔ 14b7e5e8f394 Pull complete                                                               19.9s ✔ 23fa5a7b99a6 Pull complete                                                               19.9s [+] Running 2/2✔ Network test_default  Created                                                               0.3s ✔ Container c1          Started                                                               0.8s# 访问测试[root@docker03 test]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZEnginx        latest    5ef79149e0ec   2 weeks ago   188MB[root@docker03 test]# docker psCONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                               NAMES46d8b91c4a5e   nginx:latest   "/docker-entrypoint.…"   6 minutes ago   Up 6 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   c1[root@docker03 test]# curl 10.0.0.52我是被编排的nginx# 浏览器访问

三、配置harbor

Harbor 是一个用于存储和管理 Docker 镜像等容器镜像的企业级 Registry 服务器。

1、上传harbor文件,解压

 [root@docker1 ~]# tar zxf harbor-offline-installer-v2.11.1.tgz [root@docker1 ~]# lsanaconda-ks.cfg  docker.sh  harbor  harbor-offline-installer-v2.11.1.tgz  v[root@docker1 ~]# cd harbor[root@docker1 harbor]# lscommon.sh  harbor.v2.11.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

2、修改配置文件

 # 配置文件# harbor的配置文件是harbor.yml但是解压后的目录中只有harbor.yml.tmpl# 需要复制一份修改名字即可[root@docker1 harbor]# cp harbor.yml.tmpl harbor.yml[root@docker1 harbor]# ls common.sh  harbor.v2.11.1.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare[root@docker1 harbor]# vim harbor.yml# 改为本机ip地址5 hostname: 10.0.0.516 7 # http related config8 http:9   # port for http, default is 80. If https enabled, this port will redirect to https port10   port: 8011# 将有关https的部分全部注释掉12 # https related config13 # https:14   # https port for harbor, default is 44315   # port: 44316   # The path of cert and key files for nginx17   # certificate: /your/certificate/path18   # private_key: /your/private/key/path19   # enable strong ssl ciphers (default: false)20   # strong_ssl_ciphers: false43 # The initial password of Harbor admin# 查看默认的用户名和密码46 harbor_admin_password: Harbor12345

3、部署容器环境

 # 修改daemon.json文件[root@docker1 harbor]# vim /etc/docker/daemon.json{"registry-mirrors" : ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"host" : ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],"insecure-registries" : [# 本机ip地址(仓库),使用80端口"http://10.0.0.51"],"bip" : "172.20.13.1/24","mtu" : 1472}# 开启容器[root@docker1 harbor]# systemctl start docker# 修改docker文件[root@docker1 harbor]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd# 重新加载daemon文件[root@docker1 harbor]# systemctl daemon-reload# 重启docker[root@docker1 harbor]# systemctl restart docker

4、使用自带脚本检查并初始化配置harbor

 # 检查环境是否合适[root@docker1 harbor]# ./prepareprepare base dir is set to /root/harborUnable to find image 'goharbor/prepare:v2.11.1' locallySuccessfully called func: create_root_cert# 查看端口是否被占用并关闭防火墙[root@docker1 harbor]# netstat -lntup | grep 5000[root@docker1 harbor]# netstat -lntup | grep 80[root@docker1 harbor]# systemctl stop firewalld# 开始初始化配置harbor环境[root@docker1 harbor]# ./install.sh [+] Running 10/10? Network harbor_harbor        Created                                                        0.1s ? Container harbor-log         Started                                                        0.7s ? Container registry           Started                                                        3.3s ? Container harbor-portal      Started                                                        3.3s ? Container redis              Started                                                        3.3s ? Container harbor-db          Started                                                        3.3s ? Container registryctl        Started                                                        3.3s ? Container harbor-core        Started                                                       13.9s ? Container nginx              Started                                                       22.9s ? Container harbor-jobservice  Started                                                       22.8s✔ ----Harbor has been installed and started successfully.----

5、查看容器运行情况

  # 查看被创建的容器,都是正在开启的状态,等一会让他全部开启[root@docker1 harbor]# docker ps -aCONTAINER ID   IMAGE                                 COMMAND                   CREATED          STATUS                                  PORTS                                   NAMES14b077f4d919   goharbor/nginx-photon:v2.11.1         "nginx -g 'daemon of…"   40 seconds ago   Up 14 seconds (health: starting)        0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginxc041eb8edf2b   goharbor/harbor-jobservice:v2.11.1    "/harbor/entrypoint.…"   40 seconds ago   Restarting (2) Less than a second ago                                           harbor-jobservice58f2e1174eb9   goharbor/harbor-core:v2.11.1          "/harbor/entrypoint.…"   40 seconds ago   Up 24 seconds (health: starting)                                                harbor-core7e6f79dcae20   goharbor/harbor-db:v2.11.1            "/docker-entrypoint.…"   40 seconds ago   Up 33 seconds (health: starting)                                                harbor-dba7f3235a2bdf   goharbor/redis-photon:v2.11.1         "redis-server /etc/r…"   40 seconds ago   Up 33 seconds (health: starting)                                                redis623e25aff7e5   goharbor/registry-photon:v2.11.1      "/home/harbor/entryp…"   40 seconds ago   Up 33 seconds (health: starting)                                                registry2577d87bdac0   goharbor/harbor-portal:v2.11.1        "nginx -g 'daemon of…"   40 seconds ago   Up 33 seconds (health: starting)                                                harbor-portal2bf21b95c413   goharbor/harbor-registryctl:v2.11.1   "/home/harbor/start.…"   40 seconds ago   Up 33 seconds (health: starting)                                                registryctl201780bb9f41   goharbor/harbor-log:v2.11.1           "/bin/sh -c /usr/loc…"   41 seconds ago   Up 35 seconds (healthy)                 127.0.0.1:1514->10514/tcp               harbor-log

6、测试

到浏览器中访问本机ip地址

输入(用户名:admin 密码:Harbor12345)

点击 项目--------》library

7、推送镜像到harbor的私有仓库中

查看推送命令

 # 在命令行中登录页面[root@docker1 harbor]# docker login http://10.0.0.51Username: adminPassword: Harbor12345WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded# 为镜像打标签[root@docker1 harbor]# docker tag centos:latest 10.0.0.51/library/centos:v0# 将本地镜像推送到私有仓库中[root@docker1 harbor]# docker push 10.0.0.51/library/centos:v0The push refers to repository [10.0.0.51/library/centos]74ddd0ec08fa: Pushed v0: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529

8、harbor配置中使用到的docker-compose命令

 [root@docker1 ~]# lsanaconda-ks.cfg  docker.sh  harbor  harbor-offline-installer-v2.11.1.tgz  v[root@docker1 ~]# cd harbor[root@docker1 harbor]# lscommon     docker-compose.yml     harbor.yml       install.sh  preparecommon.sh  harbor.v2.11.1.tar.gz  harbor.yml.tmpl  LICENSE# 一次性关闭所有容器[root@docker1 harbor]# docker-compose stop# 开启所有容器[root@docker1 harbor]# docker-compose start# 删掉所有容器[root@docker1 harbor]# docker-compose down# 重新检查环境[root@docker1 harbor]# ./prepare# 重新初始化[root@docker1 harbor]# ./install.sh

9、拉取harbor的私有仓库中的镜像

复制拉取镜像的命令

 # 在其他docker主机上配置daemon仓库,启动docker,使用复制的下载链接,添加共享的镜像[root@node11 ~]#  vim /etc/docker/daemon.json"insecure-registries" : ["http://10.0.0.51"],[root@node11 ~]# systemctl daemon-reload[root@node11 ~]# systemctl restart docker[root@node11 ~]# docker pull 10.0.0.51/library/centos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc10.0.0.51/library/centos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc: Pulling from library/centosDigest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dcStatus: Downloaded newer image for 10.0.0.51/library/centos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc10.0.0.51/library/centos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc[root@node11 ~]# docker imagesREPOSITORY                 TAG       IMAGE ID       CREATED       SIZEcentos                     latest    5d0da3dc9764   2 years ago   231MB10.0.0.51/library/centos   <none>    5d0da3dc9764   2 years ago   231MB

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

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

相关文章

LRN正则化是什么?

LRN正则化&#xff0c;全称为Local Response Normalization&#xff08;局部响应归一化&#xff09;&#xff0c;是一种在深度学习&#xff0c;特别是在卷积神经网络&#xff08;CNN&#xff09;中常用的正则化技术。该技术旨在通过模拟生物视觉系统中的侧抑制现象&#xff0c;…

OpenLayers3, 设置地图背景

文章目录 一、前言二、代码实现三、总结 一、前言 本文基于OpenLayers3&#xff0c;实现地图加入背景图的功能。 二、代码实现 <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head><meta http-equiv"Content-Type"…

QT学习ubuntu qt + desktop

环境搭建 ubuntu 安装QT 遇到kit 选择不了 通过sudo apt-get install qt5-default去安装SDK的时候报错&#xff1a; Package qt5-default is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is …

Linux——nginx 负载均衡

常规的web服务器一般提供对于静态资源的访问&#xff0c;比如说&#xff1a;图片、web样式 网站提供的大部分交互功能都需要web编程语言的支持&#xff0c;而web服务对于程序的调用&#xff0c;不管编译型语言还是解释型语言&#xff0c;web服务同将对于应用程序的调用递交给通…

在蓝桥云课ROS中快速搭建Arduino开发环境

普通方式 一步步慢悠悠的搭建和讲解需要5-6分钟&#xff1a; 如何在蓝桥云课ROS中搭建Arduino开发环境 视频时间&#xff1a;6分40秒 高效方式 如何高效率在蓝桥云课ROS中搭建Arduino开发环境 视频时间&#xff1a;1分45秒 配置和上传程序到开发板 上传程序又称为下载程序h…

html+css+js网页设计 婚庆网站8个页面

htmlcssjs网页设计 婚庆网站8个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xff…

C#骑砍逻辑类Mod制作详细解说

前言&#xff1a; 最近在研究骑砍的mod&#xff0c;主要是想修改其中的逻辑部分&#xff0c;因此有了这篇帖子。 一&#xff0c;文件夹与XML配置 在Modules创建一个新文件夹&#xff0c;文件夹名称随意&#xff0c;不影响实际的读取。 文件夹下面的位置需要固定&#xff0c;因…

闲置物品|基于SprinBoot+vue的校园闲置物品交易平台(源码+数据库+文档)

校园闲置物品交易平台 目录 基于SprinBootvue的校园闲置物品交易平台 一、前言 二、系统设计 三、系统功能设计 5.1系统功能实现 5.2管理员模块实现 5.3用户模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xf…

项目:基于TCP的文件传输系统

项目介绍: 模拟FTP原理&#xff1a;客户端连接服务器后&#xff0c;向服务器发送一个文件。文件名可以通过参数指定&#xff0c;服务器端接收客户端传来的文件&#xff08;文件名随意&#xff09;&#xff0c;如果文件不存在自动创建文件&#xff0c;如果文件存在&#xff0c;…

matlab 相位解缠

目录 一、功能概述1、相位解缠2、主要函数二、代码实现1、螺旋线的正确相位角2、使用不同阈值平移相位角3、将相移应用于矩阵三、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的抄袭狗。 一、功能概述 1、相位解缠 对…

FPGA实现多功能SDI视频采集卡,基于GTX+RIFFA架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案本博已有的 SDI 编解码方案 3、详细设计方案设计框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGBFDMA图像缓存RIFFA用户数据控制RIFFA架构详解Xilinx 7 Series Integrated Bloc…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(XGBoost分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#xff08;XGBoost分类器&#xff09; 文章目录 一、基本原理鲸鱼智能优化特征选择流程 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序…

从地图信息实时检测路口的各向通行状况、红绿灯及溢出情况

高德地图、百度地图都能获得实时的道路信息。 C# 编写的路况信息爬虫可获得准实时&#xff08;1分钟间隔&#xff09;的路口的各向通行状况、红绿灯及溢出情况。 优势&#xff1a; 投入少&#xff0c;效果好&#xff0c;无需安装设备&#xff1b; 缺陷&#xff1a; 时间间隔…

更新RK3588开发板的rknn_server和librknnrt.so【这篇文章是RKNPU2从入门到实践 --- 【5】的配套文章】

作者使用的平台有&#xff1a; 一台装有Windows系统的宿主机&#xff0c;在该宿主机上装有Ubuntu 20.04虚拟系统&#xff1b; 瑞芯微RK3588开发板&#xff0c;开发板上的系统为Ubuntu22.04系统&#xff1b; 更新板子的 rknn_server 和 librknnrt.so&#xff0c;rknn_server 和…

USART之串口发送+接收应用案例

文章目录 前言一、电路接线图二、应用案例代码三、应用案例分析3.1 USART模块初始化3.1.1 RCC开启时钟3.1.2 GPIO初始化3.1.3 配置USART3.1.4 开启中断、配置NVIC3.1.5 开启USART 3.2 USART串口收发模块3.2.1 Serial_SendByte&#xff08;发送一个字节数据&#xff09;3.2.2 US…

【蓝桥杯集训100题】scratch绘制扇子 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第28题

scratch绘制扇子 蓝桥杯集训100题第28题模拟练习解析 此题曾经作为第十届省赛的真题考过 一、题目要求 以坐标(0,0)点为中心绘制一把扇子;扇面和扇把都是三分之一圆,扇面的半径 为 100 左右,扇把的半径为 20 左右。 编程实现 每次点击绿旗后,舞台背景为白色,…

【自动驾驶】控制算法(六)前馈控制与航向误差

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

vue按钮弹框

在Vue中实现按钮点击后弹出对话框&#xff08;弹框&#xff09;的功能&#xff0c;通常可以使用一些Vue的UI组件库&#xff0c;如Element UI、Vuetify、BootstrapVue等&#xff0c;这些库提供了丰富的组件&#xff0c;包括对话框&#xff08;Dialog&#xff09;、模态框&#x…

如何使用Gogs搭建自己的git服务器

最近偶然发现一款轻量级的git服务器&#xff0c;以前一直用的svn server&#xff0c;最近想搞个git服务器&#xff0c; 用gitlab资源占用太多了&#xff0c;gogs是一款轻量级git服务器&#xff0c;非常适合个人使用。 项目地址&#xff1a;GitHub - gogs/gogs: Gogs is a painl…

图书项目要点

一、搭建项目 使用tarojs/cli进行搭建 taro init [项目名] 二、具体页面 页面声明&#xff1a; 在【app.config.ts】中对主页面进行声明&#xff1a;组件页面可以不用声明 pages: ["pages/index/index",pages/user/index,pages/book/index,], tabbar制作&…