Docker私有仓库搭建

Docker私有仓库搭建

1、Docker Registry

网上有很多的 Registry服务器都支持第三方用户注册,而后基于用户名去做自己的仓库,但是使用互联网上的 Registry有一个缺陷,那就是我们去推送和下载镜像时都不会很快,而在生产环境中很可能并行启动的容器将达到几十、上百个,而且很有可能每个服务器本地是没有镜像的,此时如果通过互联网去下载镜像会有很多问题,比如下载速度会很慢、带宽会用很多等等,如果带宽不够的话,下载至启动这个过程可能要持续个几十分钟,这已然违背了使用容器会更加轻量、快速的初衷和目的。因此,很多时候我们很有可能需要去做自己的私有 Registry

Registry用于保存docker镜像,包括镜像的层次结构和元数据。用户可以自建 Registry,也可以使用官方的 Docker Hub

Docker Registry分类:

  • Sponsor Registry:第三方的Registry,供客户和Docker社区使用
  • Mirror Registry:第三方的Registry,只让客户使用
  • Vendor Registry:由发布docker镜像的供应商提供的registry
  • Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry

事实上,如果运维的系统环境托管在云计算服务上,比如阿里云,那么用阿里云的 Registry则是最好的选择。很多时候我们的生产环境不会在本地,而是托管在数据中心机房里,如果我们在数据中心机房里的某台主机上部署 Registry,因为都在同一机房,所以属于同一局域网,此时数据传输走内网,效率会极大的提升。

所有的 Registry默认情况下都是基于https工作的,这是Docker的基本要求,而我自建 Registry时很可能是基于http工作的,但是Docker默认是拒绝使用http提供 Registry服务的,除非明确的告诉它,我们就是要用http协议的 Registry

2、Docker Private Registry

为了帮助我们快速创建私有 Registry,Docker专门提供了一个名为Docker Distribution的软件包,我们可以通过安装这个软件包快速构建私有仓库。

既然Docker是为了运行程序的,Docker Distribution能否运行在容器中?

容器时代,任何程序都应该运行在容器中,除了Kernel和init。而为了能够做Docker Private Registry,Docker Hub官方直接把 Registry做成了镜像,我们可以直接将其pull到本地并启动为容器即可快速实现私有 Registry

Registry的主要作用是托管镜像, Registry运行在容器中,而容器自己的文件系统是随着容器的生命周期终止和删除而被删除的,所以当我们把 Registry运行在容器中时,客户端上传了很多镜像,随着 Registry容器的终止并删除,所有镜像都将化为乌有,因此这些镜像应该放在存储卷上,而且这个存储卷最好不要放在Docker主机本地,而应该放在一个网络共享存储上,比如NFS。不过,镜像文件自己定义的存储卷,还是一个放在Docker本地、Docker管理的卷,我们可以手动的将其改成使用其它文件系统的存储卷。

这就是使用容器来运行 Registry的一种简单方式。自建 Registry的另一种方式,就是直接安装 docker-distribution软件。

2.1 使用docker-distribution自建Registry

环境:

角色 主机名 IP docker node1 192.168.111.135 registry node2 192.168.111.138

在node2上安装docker-distribution

[root@node2 ~]# yum -y install http://mirror.centos.org/centos/7/extras/x86_64/Packages/docker-distribution-2.6.2-2.git48294d9.el7.x86_64.rpm
[root@node2 ~]# cd /etc/docker-distribution/registry/
[root@node2 registry]# ls
config.yml
[root@node2 registry]# vim config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry        # 修改此处为一个容量大的磁盘分区目录
http:
    addr: :5000

[root@node2 ~]# systemctl start docker-distribution.service
[root@node2 ~]# ss -anlt
State     Recv-Q    Send-Q         Local Address:Port         Peer Address:Port    Process
LISTEN    0         128                  0.0.0.0:22                0.0.0.0:*
LISTEN    0         128                     [::]:22                   [::]:*
LISTEN    0         128                        *:5000                    *:*

在node1上使用自建的Registry去上传镜像

使用insecure-registries参数添加http支持
[root@node2 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://6vrrj6n2.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.111.138:5000"]
}
[root@node1 ~]# systemctl restart docker
[root@node1 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
busybox      latest    beae173ccac6   7 months ago   1.24MB
[root@node1 ~]# docker tag busybox:latest 192.168.111.138:5000/busybox:v1
[root@node1 ~]# docker images
REPOSITORY                     TAG       IMAGE ID       CREATED        SIZE
192.168.111.138:5000/busybox   v1        beae173ccac6   7 months ago   1.24MB
busybox                        latest    beae173ccac6   7 months ago   1.24MB
[root@node1 ~]# docker push 192.168.111.138:5000/busybox:v1
The push refers to repository [192.168.111.138:5000/busybox]
01fd6df81c8e: Layer already exists
v1: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527

在node2上拉取node1自建的Registry上的镜像

[root@node2 ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@node2 ~]# docker pull 192.168.111.138:5000/busybox:v1
v1: Pulling from busybox
5cc84ad355aa: Pull complete
Digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee
Status: Downloaded newer image for 192.168.111.138:5000/busybox:v1
192.168.111.138:5000/busybox:v1
[root@node2 ~]# docker images
REPOSITORY                     TAG       IMAGE ID       CREATED        SIZE
192.168.111.138:5000/busybox   v1        beae173ccac6   7 months ago   1.24MB

查看私有仓库镜像信息
[root@node2 ~]# curl http://192.168.111.138:5000/v2/_catalog
{"repositories":["busybox"]}

查看私有仓库镜像的tag信息
[root@node2 ~]# curl http://192.168.111.138:5000/v2/busybox/tags/list
{"name":"busybox","tags":["latest","v1"]}

2.2 使用官方镜像自建Registry

使用insecure-registries参数添加http支持
[root@node2 ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://6vrrj6n2.mirror.aliyuncs.com"],
  "insecure-registries": ["192.168.111.138:5000"]
}
[root@node1 ~]# systemctl restart docker

使用registry镜像创建容器registry
[root@node2 ~]# docker run -dit --name registry -p 5000:5000 -v /opt/registry:/tmp/registry registry
[root@node2 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                                       NAMES
51a839662d15   registry   "/entrypoint.sh /etc..."   34 seconds ago   Up 33 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry
[root@node2 ~]# ss -anlt
State                 Recv-Q                Send-Q                               Local Address:Port                                 Peer Address:Port                Process
LISTEN                0                     128                                        0.0.0.0:22                                        0.0.0.0:*
LISTEN                0                     128                                        0.0.0.0:5000                                      0.0.0.0:*
LISTEN                0                     128                                           [::]:22                                           [::]:*
LISTEN                0                     128                                           [::]:5000                                         [::]:*

为busybox镜像添加别名
[root@node2 ~]# docker tag busybox:latest 192.168.111.138:5000/zhaosl:v1
[root@node2 ~]# docker images
REPOSITORY                     TAG       IMAGE ID       CREATED        SIZE
192.168.111.138:5000/busybox   v1        beae173ccac6   7 months ago   1.24MB
192.168.111.138:5000/zhaosl    v1        beae173ccac6   7 months ago   1.24MB
busybox                        latest    beae173ccac6   7 months ago   1.24MB
registry                       latest    b8604a3fe854   9 months ago   26.2MB

把镜像推送到私有仓库
[root@node2 ~]# docker push 192.168.111.138:5000/zhaosl:v1
The push refers to repository [192.168.111.138:5000/zhaosl]
01fd6df81c8e: Pushed
v1: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527
[root@node2 ~]# curl http://192.168.111.138:5000/v2/_catalog
{"repositories":["zhaosl"]}
[root@node2 ~]# curl http://192.168.111.138:5000/v2/zhaosl/tags/list
{"name":"zhaosl","tags":["v1"]}

从私有仓库拉取镜像
[root@node2 ~]# docker pull 192.168.111.138:5000/zhaosl:v1

2.3 Harbor

无论是使用Docker-distribution去自建仓库,还是通过官方镜像跑容器的方式去自建仓库,通过前面的演示我们可以发现其是非常的简陋的,还不如直接使用官方的Docker Hub去管理镜像来得方便,至少官方的Docker Hub能够通过web界面来管理镜像,还能在web界面执行搜索,还能基于Dockerfile利用Webhooks和Automated Builds实现自动构建镜像的功能,用户不需要在本地执行docker build,而是把所有build上下文的文件作为一个仓库推送到github上,让Docker Hub可以从github上去pull这些文件来完成自动构建。

但无论官方的Docker Hub有多强大,它毕竟是在国外,所以速度是最大的瓶颈,我们很多时候是不可能去考虑使用官方的仓库的,但是上面说的两种自建仓库方式又十分简陋,不便管理,所以后来就出现了一个被 CNCF 组织青睐的项目,其名为Harbor。

2.3.1 Harbor简介

Harbor是由VMWare在Docker Registry的基础之上进行了二次封装,加进去了很多额外程序,而且提供了一个非常漂亮的web界面。

Project Harbor 是一个开源的可信云原生注册表项目,用于存储、签名和扫描上下文。
Harbor 通过添加用户通常需要的功能(如安全性、身份和管理)来扩展开源 Docker 分发版。
Harbor 支持高级功能,例如用户管理、访问控制、活动监控和实例间复制。

2.3.2 Harbor的功能

Feathers:

  • 多租户内容签名和验证
  • 安全性和漏洞分析
  • 审计日志记录
  • 身份集成和角色访问控制
  • 实例间的镜像复制s
  • 可扩展的API和图形界面
  • 国际化(目前为英文和中文)
2.3.3 Docker compose

Harbor在物理机上部署是非常难的,而为了简化Harbor的应用,Harbor官方直接把Harbor做成了在容器中运行的应用,而且这个容器在Harbor中依赖类似redis、mysql、pgsql等很多存储系统,所以它需要编排很多容器协同起来工作,因此VMWare Harbor在部署和使用时,需要借助于Docker的单机编排工具(Docker compose)来实现。

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,只需要一个命令,就可以从配置中创建并启动所有服务。

Docker Compose官方文档

2.3.4 Harbor部署

Harbor标准安装过程包括以下阶段:

  1. 确保您的目标主机满足安装先决条件Harbor Installer Precondition
  2. 下载并安装Harbor Download the Harbor Installer
  3. 配置HTTPS访问端口Configure HTTPS Access to Harbor
  4. 配置Harbor YML文件Configure the Harbor YML File
  5. 配置启用内部TLS Configure Enabling Internal TLS
  6. 运行安装程序脚本Run the Installer Script

如果安装失败,请参见 Harbor安装故障处理

准备工作

搭建私有仓库需要的软件:

软件 版本 说明 Docker Version 17.06.0-ce+ 或更高 有关安装说明,请参阅
Docker Engine documentation

Docker Compose Version 1.18.0 或更高 有关安装说明,请参阅
Docker Compose documentation

Openssl 最好是最新的 用于为端口生成证书和密钥

Docker安装:

1.首先配置yum仓库
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

2.设置镜像的仓库
wget  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装容器相关的。docker-ce(社区版)docker-ee(企业版)
yum install docker-ce

4.启动docker服务并设置开机自启
systemctl start docker
systemctl enable docker

Docker Compose安装:

下载docker-compose
[root@node2 bin]# curl -SL https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
[root@node2 ~]# cd /usr/local/bin/
[root@node2 bin]# ll
total 25188
-rw-r--r--. 1 root root 25792512 Aug 11 18:49 docker-compose

给docker-compose执行权限
[root@node2 ~]# chmod +x /usr/local/bin/docker-compose
[root@node2 ~]# ll /usr/local/bin/
total 25188
-rwxr-xr-x. 1 root root 25792512 Aug 11 18:49 docker-compose

Openssl安装:

安装openssl
[root@node2 ~]# yum -y install openssl
[root@node2 ~]# rpm -qa | grep openssl
openssl-1.1.1g-11.el8.x86_64
openssl-pkcs11-0.4.10-2.el8.x86_64
openssl-libs-1.1.1g-11.el8.x86_64
xmlsec1-openssl-1.2.25-4.el8.x86_64

Harbox快速安装:

下载harbor安装包
[root@node2 ~]# wget https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgz
[root@node2 ~]# ls
anaconda-ks.cfg  harbor-offline-installer-v2.4.3.tgz

解压到/usr/local/下
[root@node2 ~]# tar -xf harbor-offline-installer-v2.4.3.tgz -C /usr/local
[root@node2 ~]# cd /usr/local/harbor/
[root@node2 harbor]# ls
common.sh  harbor.v2.4.3.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

备份配置文件并进行配置
[root@node2 harbor]# cp harbor.yml.tmpl harbor.yml
[root@node2 harbor]# vim harbor.yml
......

hostname: 192.168.111.138       #修改为当前主机的IP或域名
......

https related config
#https:                 #注释https服务
  # https port for harbor, default is 443
  # port: 443
  # The path of cert and key files for nginx
  #certificate: /your/certificate/path
  #private_key: /your/private/key/path

执行安装脚本
[root@node2 harbor]# ./install.sh
[Step 0]: checking if docker is installed ...

Note: docker version: 20.10.17
[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 2.7.0
[Step 2]: loading Harbor images ...

✔ ----Harbor has been installed and started successfully.----
[root@node2 harbor]# ss -anlt
State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port      Process
LISTEN      0           128                    0.0.0.0:22                   0.0.0.0:*
LISTEN      0           128                  127.0.0.1:1514                 0.0.0.0:*
LISTEN      0           128                    0.0.0.0:80                   0.0.0.0:*
LISTEN      0           128                       [::]:22                      [::]:*
LISTEN      0           128                       [::]:80                      [::]:*
[root@node2 harbor]# docker ps -a
CONTAINER ID   IMAGE                                COMMAND                  CREATED         STATUS                   PORTS                                   NAMES
828ec6d101a8   goharbor/nginx-photon:v2.4.3         "nginx -g 'daemon of..."   2 minutes ago   Up 2 minutes (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx
......

使用docker-compose管理(需要进到harbor目录中)
[root@node2 harbor]# docker-compose stop
[+] Running 9/9
 ⠿ Container harbor-jobservice  Stopped                                                               0.2s
 ⠿ Container registryctl        Stopped                                                              10.1s
 ⠿ Container nginx              Stopped                                                               0.3s
 ⠿ Container harbor-portal      Stopped                                                               0.2s
 ⠿ Container harbor-core        Stopped                                                               0.1s
 ⠿ Container redis              Stopped                                                               0.3s
 ⠿ Container harbor-db          Stopped                                                               0.2s
 ⠿ Container registry           Stopped                                                               0.1s
 ⠿ Container harbor-log         Stopped                                                              10.1s
[root@node2 harbor]# docker-compose start
[+] Running 9/9
 ⠿ Container harbor-log         Started                                                               0.5s
 ⠿ Container harbor-db          Started                                                               1.4s
 ⠿ Container redis              Started                                                               1.2s
 ⠿ Container registryctl        Started                                                               1.3s
 ⠿ Container registry           Started                                                               1.4s
 ⠿ Container harbor-portal      Started                                                               0.9s
 ⠿ Container harbor-core        Started                                                               0.5s
 ⠿ Container harbor-jobservice  Started                                                               0.9s
 ⠿ Container nginx              Started                                                               0.8s
[root@node2 harbor]# ss -anlt
State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port      Process
LISTEN      0           128                    0.0.0.0:22                   0.0.0.0:*
LISTEN      0           128                  127.0.0.1:1514                 0.0.0.0:*
LISTEN      0           128                    0.0.0.0:80                   0.0.0.0:*
LISTEN      0           128                       [::]:22                      [::]:*
LISTEN      0           128                       [::]:80                      [::]:*

需要写一个开启自动启动的脚本,否则重启不会启动
[root@node2 harbor]# vim startall.sh
#!/bin/bash

cd /usr/local/harbor
docker-compose stop && docker-compose start

给脚本执行权限
[root@node2 harbor]# chmod +x startall.sh
[root@node2 harbor]# ll startall.sh
-rwxr-xr-x. 1 root root 77 Aug 11 21:15 startall.sh

/etc/rc.local是系统启动之后最后一个执行的文件
[root@node2 harbor]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Dec  2  2020 /etc/rc.local -> rc.d/rc.local
[root@node2 harbor]# ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 513 Aug 11 21:13 /etc/rc.d/rc.local

被链接文件也需要有执行权限
[root@node2 harbor]# chmod +x /etc/rc.d/rc.local
[root@node2 harbor]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 513 Aug 11 21:13 /etc/rc.d/rc.local

在/etc/rc.d/rc.local里加上执行启动脚本的命令,就会开启开机自动启动
[root@node2 harbor]# vim /etc/rc.d/rc.local
#!/bin/bash
/bin/bash /usr/local/harbor/startall.sh

重启测试
[root@node2 ~]# reboot
[root@node2 ~]# ss -anlt
State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port      Process
LISTEN      0           128                    0.0.0.0:80                   0.0.0.0:*
LISTEN      0           128                    0.0.0.0:22                   0.0.0.0:*
LISTEN      0           128                  127.0.0.1:1514                 0.0.0.0:*
LISTEN      0           128                       [::]:80                      [::]:*
LISTEN      0           128                       [::]:22                      [::]:*
[root@node2 ~]# docker ps -a
CONTAINER ID   IMAGE                                COMMAND                  CREATED       STATUS                        PORTS                                   NAMES
828ec6d101a8   goharbor/nginx-photon:v2.4.3         "nginx -g 'daemon of..."   2 hours ago   Up About a minute (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx

使用IP登录管理Harbor

默认用户名:admin 默认密码:Harbor12345

Docker私有仓库搭建

登录成功界面:

Docker私有仓库搭建

Harbor使用方法

系统管理—用户管理—创建用户

Docker私有仓库搭建

输入用户信息

Docker私有仓库搭建

创建用户成功—并将其设置为管理员

Docker私有仓库搭建

点击项目

Docker私有仓库搭建

点击推送命令可以查看帮助

Docker私有仓库搭建

上传镜像

登录到仓库
[root@node2 ~]# docker login 192.168.111.138
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

上传镜像
[root@node2 ~]# docker tag busybox:latest 192.168.111.138/library/runtim:v1
[root@node2 ~]# docker images
REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
......

192.168.111.138/library/runtim   v1        beae173ccac6   7 months ago   1.24MB
[root@node2 ~]# docker push 192.168.111.138/library/runtim:v1
The push refers to repository [192.168.111.138/library/runtim]
01fd6df81c8e: Pushed
v1: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527

上传成功

Docker私有仓库搭建

拉取镜像测试

删除原来的镜像
[root@node2 ~]# docker rmi 192.168.111.138/library/runtim:v1

拉取仓库里的镜像
[root@node2 ~]# docker pull 192.168.111.138/library/runtim:v1
v1: Pulling from library/runtim
Digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee
Status: Downloaded newer image for 192.168.111.138/library/runtim:v1
192.168.111.138/library/runtim:v1
[root@node2 ~]# docker images
REPOSITORY     TAG       IMAGE ID       CREATED        SIZE
.....

192.168.111.138/library/runtim  v1 beae173ccac6 7 months ago  1.24MB
.....

使用Harbor的注意事项:

  1. 在客户端上传镜像时一定要记得执行docker login进行用户认证,否则无法直接push
  2. 在客户端使用的时候如果不是用的https则必须要在客户端的/etc/docker/daemon.json配置文件中配置insecure-registries参数
  3. 数据存放路径应在配置文件中配置到一个容量比较充足的共享存储中
  4. Harbor是使用docker-compose命令来管理的,如果需要停止Harbor也应用docker-compose stop来停止,其他参数请–help

Original: https://www.cnblogs.com/Alone-8712/p/16578140.html
Author: Alone-林
Title: Docker私有仓库搭建

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578526/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • docker安装redis

    首先考虑需要安装的redis版本,我这里是安装的redis 6.0.16,如果宿主机没有,那么就docker pull redis:6.0.16 一、指定redis配置文件 我的宿…

    Linux 2023年5月28日
    096
  • 017 Linux 之啥是 ssh ?

    1 什么是 ssh?有什么用? (1)ssh 是一种协议 (2)ssh 服务 2 ssh 基于密匙的安全验证过程是怎样的? 3 对称加密与非对称加密区别是什么? (1)对称加密 (…

    Linux 2023年5月27日
    0109
  • Golang 实现 Redis(4): AOF 持久化与AOF重写

    AOF 持久化是典型的异步任务,主协程(goroutine) 可以使用 channel 将数据发送到异步协程由异步协程执行持久化操作。 在 DB 中定义相关字段: type DB …

    Linux 2023年5月28日
    095
  • 关于VHDL中case语句多执行语句的书写方式(转载stackoverflow.com并做翻译汇总)

    很多国内的教材对于case语句的讲解非常单一,比如: 这会造成CASE语句”在一个条件下只能执行一条语句”的经典误解,在翻阅了一些资料后我在StackOve…

    Linux 2023年6月13日
    0109
  • NTP服务器实现

    时间服务器是一种计算机网络仪器,它从参考时钟获取实际时间,再利用计算机网络把时间信息传递给用户。虽然还有一些比较少用或过时的协议仍然在使用,但现时最重要及广泛使用,作为时间信息发送…

    Linux 2023年6月7日
    080
  • JVM核心之JVM运行和类加载全过程

    为什么研究类加载全过程? 有助于连接JVM 运行过程 更深入了解java 动态性(解热部署,动态加载),提高程序的灵活性 类加载机制 JVM 把class 文件加载到内存,并对数据…

    Linux 2023年6月13日
    081
  • jmeter学习记录–05–Beanshell2

    学习beanshell时有不少的例子、遇到不少问题。在此记录下。 测试实例列表 A1:使用Beanshell请求作为测试请求 一个打包的Jar包,直接对其内的方法进行测试。 第一步…

    Linux 2023年5月28日
    0100
  • SpringBoot-MVC自动配置原理

    MVC自动配置原理 5.1 官网阅读 在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制。 只有把这…

    Linux 2023年6月14日
    0100
  • Nginx基础入门篇(2)—编译参数介绍

    查看命令 nginx -V nginx version: nginx/1.22.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (…

    Linux 2023年6月6日
    0126
  • 到底什么是TORCH.NN?

    该教程是在notebook上运行的,而不是脚本,下载notebook文件。 PyTorch提供了设计优雅的模块和类: torch.nn, torch.optim, Dataset,…

    Linux 2023年6月14日
    0102
  • Linux编译安装、压缩打包与定时任务服务

    一、编译安装 即使用源代码编译安装的方式,编译打包软件。特点: 可以自定制软件; 可以按需构建软件; 编译安装案例 1、下载源代码包(这里以Nginx软件包源代码为例) wget …

    Linux 2023年5月27日
    087
  • muduo源码分析之muduo简单运用

    今天不先实现 muduo项目,我们先来看下 muduo库的基本使用,只有了解了如何用,才能在写代码的时候知道自己写的找个函数是干嘛的,实际上是怎么使用的这个函数。首先说简单点,就是…

    Linux 2023年6月13日
    084
  • Linux、Windows下Redis的安装即Redis的基本使用详解

    前言 什么是Redis Redis是一个基于 内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件,它是「 Remote Dictionary …

    Linux 2023年6月6日
    0112
  • 正则表达式

    正则表达式 字符 作用 . 点号 匹配任意一个且只有一个字符 [] 匹配[]集合内的任意一个字符 [^] 匹配不包含^后的任意字符 星号 重复前一个字符(连续出现)0次或N次 . …

    Linux 2023年6月6日
    0109
  • Spring Boot:使用Redis存储技术

    综合概述 Redis是一个开源免费的高性能key-value数据库,读取速度达110000次/s,写入速度达81000次/s。Redis支持丰富的数据类型,如Lists, Hash…

    Linux 2023年5月28日
    0102
  • Jenkins发布SpringBoot项目

    第二步:Configure System (系统设置) 我们只需要设置最后面的一项,配置远程服务SSH: 配置完成后点击保存即可,为后面我们配置自动化部署做准备,配置如下图: 第三…

    Linux 2023年6月14日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球