docker的私有仓库搭建、compose项目、swarm集群、一键部署docker节点
1.私有仓库搭建
首先需要一个registry 镜像
[root@foundation24 docker]# docker images registry
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest b2b03e9146e1 6 weeks ago 33.3 MB
registry 2.3.1 83139345d017 2 years ago 166 MB
挂载registry镜像
[root@foundation24 opt]# docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2.3.1
17dd3353b41bf468d4c72e291db6190fd96ee2997e94bf351bef7e8247ae5a05
域名解析:
[root@foundation24 ~]# vim /etc/hosts
查看信息
[root@foundation24 opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17dd3353b41b registry:2.3.1 "/bin/registry /et..." 35 seconds ago Up 33 seconds 0.0.0.0:5000->5000/tcp elated_williams
将本地的nginx镜像改名为westos.org:5000/nginx
[root@foundation24 opt]# docker tag nginx westos.org:5000/nginx ##改名字
将本地nginx镜像名字改为localhost:5000/nginx
[root@foundation24 opt]# docker tag nginx localhost:5000/nginx
本地镜像上传:
[root@foundation24 opt]# docker push localhost:5000/nginx ##上送
The push refers to a repository [localhost:5000/nginx]
08d25fa0442e: Pushed
a8c4aeeaa045: Pushed
cdb3f9544e4c: Pushed
latest: digest: sha256:2de9d5fc6585b3f330ff5f2c323d2a4006a49a476729bbc0910b695771526e3f size: 948
westos.org:5000/nginx上传
[root@foundation24 opt]# docker push westos.org:5000/nginx
The push refers to a repository [westos.org:5000/nginx]
Get https://westos.org:5000/v1/_ping: http: server gave HTTP response to HTTPS client
以上实验说明,这样配置的私有仓库只能仅限与本地操作,无法分享
删除:
[root@foundation24 opt]# docker rmi localhost:5000/nginx
root@foundation24 opt]# docker rmi westos.org:5000/nginx
配置可以在外网访问的私有仓库
[root@foundation24 docker]# pwd
/tmp/docker
配置秘钥
[root@foundation24 docker]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 365 -out certs/domain.crt
Generating a 4096 bit RSA private key
生成秘钥和开放443端口
[root@foundation24 docker]# docker run -d \
> --restart=always \
> --name registry \
> -v `pwd`/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
> -p 443:443 \
> registry:2
ac4b23c63602603c98b2e049b56e1565c2f15c69371ae235e85db76efaa39e1
查看信息
[root@foundation24 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1957797318eb registry:2 "/entrypoint.sh /e..." About a minute ago Up About a minute 0.0.0.0:443->443/tcp, 5000/tcp registry
查看端口:
[root@foundation24 registry]# iptables -t nat -nL
[root@foundation24 registry]# netstat -antlp |grep :443
tcp6 0 0 :::443 :::* LISTEN 26762/docker-proxy
创建秘钥目录:
[root@foundation24 registry]# cd /etc/docker/
[root@foundation24 docker]# mkdir certs.d
[root@foundation24 docker]# cd certs.d/
[root@foundation24 certs.d]# mkdir westos.org
[root@foundation24 certs.d]# ls
westos.org
[root@foundation24 certs.d]# cd westos.org/
[root@foundation24 westos.org]# ls
将生成的秘钥复制过来
[root@foundation24 westos.org]# cp /tmp/docker/certs/domain.crt ./ca.crt
[root@foundation24 westos.org]# ls
ca.crt
[root@foundation24 westos.org]# ll
total 4
-rw-r--r-- 1 root root 2098 Aug 21 18:09 ca.crt
测试:
[root@foundation24 docker]# docker push westos.org/nginx
The push refers to a repository [westos.org/nginx]
08d25fa0442e: Pushed
a8c4aeeaa045: Pushed
cdb3f9544e4c: Pushed
latest: digest: sha256:2de9d5fc6585b3f330ff5f2c323d2a4006a49a476729bbc0910b695771526e3f size: 948
给仓库设置密码和用户:
设置两个用户和密码
[root@foundation24 docker]# mkdir auth
[root@foundation24 docker]# docker run --entrypoint htpasswd registry:2 -Bbn whx westos > auth/htpasswd
[root@foundation24 docker]# docker run --entrypoint htpasswd registry:2 -Bbn admin admin >> auth/htpasswd ##追加
会在当前目录下的auth目录中生成htpasswd
[root@foundation24 docker]# cat auth/htpasswd
whx:$2y$05$IZRARKJ/xcRSztM6aOyLVOcL.WlLADUkva.mT3xZhr6JS/Mqi7lvyadmin:$2y$05$rHSwKTKKgGnFrF.zUzmEMOCPBff800Ksyp0Ji8KqLIC19wm.eWtiW
开启443端口并添加密码信息
[root@foundation24 docker]# docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -p 443:443 registry:2
065001d48018c262b4a5ce8029f5f56374bc951622a6be0965412d1b2439c02e
查看容器信息
[root@foundation24 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
065001d48018 registry:2 "/entrypoint.sh /e..." 5 seconds ago Up 3 seconds 0.0.0.0:443->443/tcp, 5000/tcp registry
用admin用户登陆
[root@foundation24 docker]# docker login -u admin -p admin westos.org
Login Succeeded
查看端口
[root@foundation24 docker]# netstat -antlp |grep :443
tcp6 0 0 :::443 :::* LISTEN 8053/docker-proxy
只有记录了admin用户的信息,才能上传或下载
[root@foundation24 ~]# cat .docker/config.json
{"auths": {"westos.org": {"auth": "YWRtaW46YWRtaW4="}}
二.comepose项目
原理图:
Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr)。Docker Compose 运行的目录下的所有文件(dockercompose.yml, extends 文
件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker Compose 并没有解决负载均衡的问题,因此需要借助其他工具实现服务发现及负载均衡。
Docker Compose 是一个用来创建和运行多容器应用的工具。使用 Compose首先需要编写Compose 文件来描述多个容器服务以及之间的关联,然后通过令根据配置启动所有的容器。
Dockerfile 可以定义一个容器,而一个 Compose 的模板文件(YAML 格式)可以定义一个包含多个相互关联容器的应用。Compose 项目使用 python 编写,于后面的实验中我们将学习的 Docker API 实现。
此时可以使用 docker build 创建 web 镜像,然后在 Compose 的配置文件中指定镜像名称
为 web,也可以在配置文件中直接指定 Dockerfile, Compose 会自动 build 镜像
使用comepose实现负载均衡
[root@foundation24 docker]# mkdir compose
[root@foundation24 docker]# cd compose/
[root@foundation24 compose]# pwd
/tmp/docker/compose
[root@foundation24 compose]# ls
[root@foundation24 compose]# vim docker-compose.yml
root@foundation24 compose]# cat docker-compose.yml
apache:image: rhel7:v1expose:- 80 ##在容器中http的端口
volumes:- ./web:/var/www/html ##当前目录下的web目录对应容器中http的默认目录
nginx:image: nginxexpose:- 80
haproxy:image: haproxyvolumes:- ./haproxy:/usr/local/etc/haproxy ##将配置文件导入容器
links:- apache ##调用apache
- nginx ##调用nginx
ports:- "8080:80" ##端口映射物理机:8080
expose:- 80
编写haproxy配置文件
[root@foundation24 compose]# cp -r ../web/ .
[root@foundation24 compose]# ls
docker-compose.yml web
[root@foundation24 compose]# mkdir haproxy
[root@foundation24 compose]# cd haproxy/
[root@foundation24 haproxy]# vim haproxy.cfg
globallog 127.0.0.1 local0log 127.0.0.1 local1 notice
defaultslog globalmode httpoption httplogoption dontlognulltimeout connect 5000mstimeout client 50000mstimeout server 50000msstats uri /status
frontend balancerbind 0.0.0.0:80default_backend web_backends
backend web_backendsbalance roundrobinserver weba apache:80 check ##是因为容器中ip不明确直接用名称代替server webb nginx:80 check
添加compose服务:
[root@foundation24 docker]# cd /usr/local/bin/
[root@foundation24 bin]# ls
charm rht-vmctl rht-vmicons rht-vmsetkeyboard
[root@foundation24 bin]# lftp 172.25.254.251
lftp 172.25.254.251:~> cd pub/docs/docker/
lftp 172.25.254.251:/pub/docs/docker> get docker-compose-Linux-x86_64-1.22.0
11750136 bytes transferred in 2 seconds (4.75M/s)
lftp 172.25.254.251:/pub/docs/docker> quit
[root@foundation24 bin]# chmod +x docker-compose-Linux-x86_64-1.22.0
[root@foundation24 bin]# ln -s docker-compose-Linux-x86_64-1.22.0 docker-compose
[root@foundation24 bin]# ll docker-compose
lrwxrwxrwx 1 root root 34 Aug 22 11:44 docker-compose -> docker-compose-Linux-x86_64-1.22.0[root@foundation24 ~]# docker-compose -v ##查看版本
docker-compose version 1.22.0, build f46880fe
测试:
[root@foundation24 ~]# cd /tmp/docker/
[root@foundation24 docker]# cd compose/ ##必须在这个目录中
[root@foundation24 compose]# ls
docker-compose.yml haproxy web
[root@foundation24 compose]# docker-compose up
Creating compose_nginx_1 ... done
Creating compose_apache_1 ... done
Creating compose_haproxy_1 ... done
Attaching to compose_nginx_1, compose_apache_1, compose_haproxy_1
apache_1 | AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
查看监控:
这种方法在你刷新浏览器进行轮询的时候,会有记录,刷新一次,记录一次
Dockerswarm
Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。Swarm 使用标准的 Docker API接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发。
Swarm deamon 只是一个调度器(Scheduler)加路由器(router),Swarm 自己不运行容器,它只是接受 docker 客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm 由于某些原因挂掉了,集群中的节点也会照常运行,当 Swarm 重新恢复运行之后,它会收集重建集群信息。下面是 Swarm 的结构图:
环境:
swarm manager :server2
swarm node :server2 、server3 、server4
初始化节点:
[root@server2 ~]# docker swarm init ##初始化
Swarm initialized: current node (2pvpzju2kud9yud6kq3g78hcb) is now a manager.To add a worker to this swarm, run the following command:docker swarm join \--token SWMTKN-1-2c6jzhvw3qnhhae2cktgda6phs0yyidevr2qves8jre6m84dhy-5tbxzohwg48o3bv5m9pvc5c98 \172.25.24.2:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
连接:
[root@server3 ~]# systemctl start docker
[root@server3 ~]# docker swarm join \
> --token SWMTKN-1-2c6jzhvw3qnhhae2cktgda6phs0yyidevr2qves8jre6m84dhy-5tbxzohwg48o3bv5m9pvc5c98 \
> 172.25.24.2:2377
This node joined a swarm as a worker
[root@server4 ~]# systemctl start docker
[root@server4 ~]# docker swarm join \
> --token SWMTKN-1-2c6jzhvw3qnhhae2cktgda6phs0yyidevr2qves8jre6m84dhy-5tbxzohwg48o3bv5m9pvc5c98 \
> 172.25.24.2:2377
This node joined a swarm as a worker.
查看连接节点
[root@server2 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
0cfmikoxmslct982aajun1d9f server4 Ready Active
2pvpzju2kud9yud6kq3g78hcb * server2 Ready Active Leader
zrjdoa3rsashl1zwjy09ymbz8 server3 Ready Active
swarm 部署完成,现在开始是service,先在物理机上搭建一个私有仓库,方便虚拟机下载镜像
[root@foundation24 docker]# docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2[root@foundation24 westos.org]# docker tag nginx westos.org/nginx[root@foundation24 westos.org]# docker push westos.org/nginx ##上传
在把物理机的秘钥传给虚拟机:
[root@server2 westos.org]# pwd
/etc/docker/certs.d/westos.org
[root@server2 westos.org]# ls
ca.crt
OK,现在下面给三个节点部署nginx
[root@server2 westos.org]# docker pull westos.org/nginx[root@server2 ~]# docker service create --name nginx --publish 80:80 --replicas 3 westos.org/nginx ##部署三个
[root@server2 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
rjmc5m8mj42v nginx replicated 3/3 westos.org/nginx:latest[root@server2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9036b934d7cc westos.org/nginx@sha256:2de9d5fc6585b3f330ff5f2c323d2a4006a49a476729bbc0910b695771526e3f "nginx -g 'daemon ..." 37 seconds ago Up 31 seconds 80/tcp
在上传一个监控镜像
[root@foundation24 docker]# docker load < visualizer.tar[root@foundation24 docker]# docker tag dockersamples/visualizer westos.org/visualizer
[root@foundation24 docker]# docker push westos.org/visualizer
添加监控镜像
[root@server2 ~]# docker pull westos.org/visualizer
[root@server2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
westos.org/nginx latest c82521676580 4 weeks ago 109 MB
westos.org/visualizer latest 17e55a9b2354 11 months ago 148 MB
建立一个监控,监控映射内网80端口的8080端口
root@server2 ~]# docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock westos.org/visualizer ##添加监控,监控8080端口
i23942znpg4pgql2sbwedrtn0
[root@server2 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
i23942znpg4p viz replicated 1/1 westos.org/visualizer:latest
rjmc5m8mj42v nginx replicated 3/3 westos.org/nginx:lates
浏览器查看:
swarm会有自动恢复重新配置nginx的功能
停下server4的nginx,然后会自动恢复
root@server4 westos.org]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dda8e4642212 westos.org/nginx@sha256:2de9d5fc6585b3f330ff5f2c323d2a4006a49a476729bbc0910b695771526e3f "nginx -g 'daemon ..." 26 minutes ago Up 26 minutes 80/tcp nginx.1.etxy7gnjx93oybeynt9qht5jx
[root@server4 westos.org]# docker stop nginx.1.etxy7gnjx93oybeynt9qht5jx
nginx.1.etxy7gnjx93oybeynt9qht5jx
[root@server4 westos.org]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
59e008970b8e westos.org/nginx@sha256:2de9d5fc6585b3f330ff5f2c323d2a4006a49a476729bbc0910b695771526e3f "nginx -g 'daemon ..." 54 seconds ago Up 48 seconds 80/tcp nginx.1.rqldxkv8zij9fbeu6vfz69nfk
swarm的滚动更新
将线程增加到30个
[root@server2 ~]# docker service scale nginx=30 ##先增加到30个nginx
透过监控可以查看到每个机器分配10个nginx
用rhel:v1镜像取更新nginx镜像
[root@server2 ~]# docker service update --image westos.org/rhel7:v1 --update-parallelism 3 --update-delay 10s nginx ##用 westos.org/rhel7:v1来更新nginx 3个3个的更新,时间间隔为10s
更新完成如下,可以看到每个虚拟机的所有nginx服务都变成了http
透过监视也可以看见里面的镜像全部变成rhel7:v1 ,即http
或者浏览器查看:
docker扩展之一键部署docker节点
需要docker-machine服务
[root@foundation24 docker]# mv docker-machine-Linux-x86_64-1.15.0 /usr/local/bin/
[root@foundation24 docker]# cd /usr/local/bin/
[root@foundation24 bin]# ls
charm rht-vmctl
docker-compose rht-vmicons
docker-compose-Linux-x86_64-1.22.0 rht-vmsetkeyboard
docker-machine-Linux-x86_64-1.15.0
[root@foundation24 bin]# chmod +x docker-machine-Linux-x86_64-1.15.0
[root@foundation24 bin]# ln -s docker-machine-Linux-x86_64-1.15.0 docker-machine
[root@foundation24 bin]# ll docker-machine
lrwxrwxrwx 1 root root 34 Aug 23 09:05 docker-machine -> docker-machine-Linux-x86_64-1.15.0
[root@foundation24 bin]# docker-machine -v
docker-machine version 0.15.0, build b48dc28d
做免密处理:
[root@foundation24 ~]# ssh-keygen[root@foundation24 ~]# ssh-copy-id 172.25.24.2[root@foundation24 ~]# ssh-copy-id 172.25.24.3[root@foundation24 ~]# ssh-copy-id 172.25.24.4
建立连接:
[root@foundation24 ~]# docker-machine create --driver generic --generic-ip-address=172.25.24.2 server2 [root@foundation24 ~]# docker-machine create --driver generic --generic-ip-address=172.25.24.3 server3[root@foundation24 ~]# docker-machine create --driver generic --generic-ip-address=172.25.24.4 server4
查看连接信息
[root@foundation24 ~]# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
server2 - generic Running tcp://172.25.24.2:2376 v17.03.1-ce
server3 - generic Running tcp://172.25.24.3:2376 v17.03.1-ce
server4 - generic Running tcp://172.25.24.4:2376 v17.03.1-ce
测试:
[root@foundation24 ~]# docker-machine ssh server2 docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@foundation24 ~]# docker-machine ssh server3 docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
删除:
root@foundation24 ~]# docker-machine rm server2
About to remove server2
WARNING: This action will delete both local reference and remote instance.
Are you sure? (y/n): y
Successfully removed server2
[root@foundation24 ~]# docker-machine rm server3
About to remove server3
WARNING: This action will delete both local reference and remote instance.
Are you sure? (y/n): y
Successfully removed server3
[root@foundation24 ~]# docker-machine rm server4
About to remove server4
WARNING: This action will delete both local reference and remote instance.
Are you sure? (y/n): y
Successfully removed server4
[root@foundation24 ~]# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
docker的私有仓库搭建、compose项目、swarm集群、一键部署docker节点相关推荐
- Docker Swarm集群中部署Traefik负载均衡器
一.创建单节点的Docker Swarm集群 docker swarm init 二.在Swarm集群中创建一个网络 docker network create --driver=overlay tr ...
- 【docker的那些事】搭建Swarm集群
前言 前面我们对docker compose进行了介绍和使用,然而docker compose比较适用于单机的环境下,对于多机的环境下docker也提供了对应的能力,首先我们得准备三台服务器,任意三台 ...
- docker学习------centos7.5下的swarm集群可视化构建
1.swarm集群 manager : 192.168.211.175 agent1 : 192.168.211.176 agent2 : 192.168.211.177 2.环境 ...
- Kubernetes集群中部署Node节点
Kubernetes集群中的Node节点部署 kubernetes的Node节点包含如下组件: flanneld docker kubelet kube-proxy 环境变量 需要的变量. $ # 替 ...
- 【docker】kubernetes集群一键部署包
背景说明: 随着docker使用的逐步深入,docker的管理变得越来越麻烦,单纯的通过docker命令行的方式进行管理已经不能满足需求,同时也存在效率低下的问题.所以急需一个docker集群管理工具 ...
- k8s 集群一键部署(持续更新)
介绍 使用原生shell脚本构建k8s一键部署资源包,软件最终命名:kubefit***.tgz 机制介绍: 简单化:只需要配置集群IP地址和制定的安装配置文件 个性化:支持自定义部署位置 易用化:内 ...
- 手动搭建k8s-1.16.6高可用集群之部署worker节点-部署kubelet组件
kubelet 运行在每个 worker 节点上,接收 kube-apiserver 发送的请求,管理 Pod 容器,执行交互式命令,如 exec.run.logs 等. kubelet 启动时自动向 ...
- 使用Helm 在容器服务k8s集群一键部署wordpress
摘要: Helm 是啥? 微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Ku ...
- 应用中心最佳实践之——使用应用组完成多集群一键部署
简介:在现实中的应用交付实践中,常常需要将同一应用同时部署到多个集群中.应用中心支持将同一个数据源定义的应用,通过应用组的形式一键部署到多个集群中,实现统一管理. 作者:指北 背景 在现实中的应用交付 ...
- 轻量级Kubernetes之k3s:7:集群一键部署脚本
使用k3s来进行kubernetes集群部署,对于初学者,相较于vagrant.minikube甚至kubeadm在使用上都会更加流畅.在easypack上封装了一个200行左右的脚本,就可以轻松实现 ...
最新文章
- oracle 查询历史sql执行最慢和执行次数最多的sql
- jmeter 监听的介绍
- 怎么写显示商品图片_shopee商品描述怎么写,shopee商品排名靠前的是
- 【POJ - 1463】Strategic game (树上最小点覆盖,树形dp)
- jeecg 分布式部署附件共享问题(linux下配置共享磁盘nfs服务)
- TensorFlow中的Nan值的陷阱
- Hibernate(十二):HQL查询(一)
- 当万物互联触手可及 你准备好了吗?
- 学习ARM64页表转换流程
- Java基础(三):常用对象
- python实时读取串口数据_串口的数据采集、以及数据的实时显示
- 大数据第一季--Hadoop(day4)-徐培成-专题视频课程
- 富士施乐p355d_富士施乐p355d驱动下载
- BS架构和CS架构的区别
- matlab 中关于nargin 以及 varargin 函数的使用
- 最新!抖音运营吸粉攻略分享
- arx打印dwg为pdf
- monthsbetween 在mysql_months_between()
- 如何预估系统QPS?
- 离散数学---判断矩阵:自反性,反自反性,对称性得到矩阵的自反闭包,对称闭包。
热门文章
- 人工智能邀您挑战!BOT系列大赛之病理切片识别AI挑战赛火热报名中
- 【瑞吉外卖项目】DAY5——第六章 手机验证码登录
- 双系统:Windows和Linux合二为一
- 护照阅读芯片读取技术SDK
- word整体放大、缩小字体
- c和python哪个适合零基础_零基础到底应该如何入门学习C/C++语言,他是这么做的。...
- 关于cms的遇到的部分问题
- ar8171 linux网卡驱动,atheros ar8171
- Arduino的舵机与红外的结合
- 手机re管理器支持android2.3的,RE管理器2.3可用版