java微服务架构

文章目录

  • 1.Linux部分
    • 1.Linux的目录结构
    • 2.操作文件目录
    • 3.开关机命令
    • 4.压缩解压命令
    • 5.编辑器
    • 6.软件包管理
      • 1.概述
      • 2.修改数据源
        • 1.查看系统版本
        • 2.编辑数据源
        • 3.更新数据源
      • 3.常用 APT 命令
    • 7.用户和组管理
      • 1.概述
      • 2.使用 Root 用户
        • 1.设置 Root 账户密码
        • 2.切换到 Root
        • 3.设置允许远程登录 Root
      • 3.用户账户说明
        • 1.普通用户
        • 2.超级管理员
        • 3.安装时创建的系统用户
      • 4.组账户说明
        • 1.私有组
        • 2.标准组
      • 5.账户系统文件说明
        • 1./etc/passwd
        • 2./etc/shadow
        • 3./etc/group
        • 4./etc/gshadow
      • 6.账户管理常用命令
        • 1.增加用户
        • 2.修改用户
        • 3.删除用户
        • 4.组账户维护
        • 5.口令维护
        • 6.用户和组状态
    • 8.文件权限管理
      • 1.查看文件和目录的权限
        • 1.文档类型
        • 2.连接数
        • 3.文档所属用户和所属组
        • 4.文档大小
      • 2.更改操作权限
        • 1.chown
        • 2.chmod
          • 1.who
          • 2.操作符号
          • 3.mode
          • 4.文件名
          • 5.示例
      • 3.数字设定法
  • 2.Docker
    • 1.Docker引擎
    • 2.Docker系统架构
    • 3.Docker镜像
      • 1.概述
      • 2.分层存储
    • 4.Docker容器
    • 5.Docker仓库
      • 1.概述
      • 2.公有 Docker Registry
      • 3.私有 Docker Registry

1.Linux部分

1.Linux的目录结构

java微服务架构_第1张图片

目录 说明
bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
etc 存放系统配置文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
opt 额外安装的可选应用程序包所放置的位置
proc 虚拟文件系统,存放当前内存的映射
root 超级用户目录
sbin 存放二进制可执行文件,只有root才能访问
tmp 用于存放各种临时文件
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var 用于存放运行时需要改变数据的文件

2.操作文件目录

命令 说明 语法 参数 参数说明
ls 显示文件和目录列表 ls [-alrtAFR] [name…] -l 列出文件的详细信息
-a 列出当前目录所有文件,包含隐藏文件
mkdir 创建目录 mkdir [-p] dirName -p 父目录不存在情况下先生成父目录
cd 切换目录 cd [dirName]
touch 生成一个空文件
echo 生成一个带内容文件 echo abcd > 1.txt,echo 1234 >> 1.txt
cat 显示文本文件内容 cat [-AbeEnstTuv] [–help] [–version] fileName
cp 复制文件或目录 cp [options] source dest
rm 删除文件 rm [options] name… -f 强制删除文件或目录
-r 同时删除该目录下的所有文件
mv 移动文件或目录 mv [options] source dest
find 在文件系统中查找指定的文件 -name 文件名
grep 在指定的文本文件中查找指定的字符串
tree 用于以树状图列出目录的内容
pwd 显示当前工作目录
ln 建立软链接
more 分页显示文本文件内容
head 显示文件开头内容
tail 显示文件结尾内容 -f 跟踪输出

3.开关机命令

命令 语法 参数 参数说明
shutdown shutdown [-t seconds] [-rkhncfF] time [message] -t seconds 设定在几秒钟之后进行关机程序
-k 并不会真的关机,只是将警告讯息传送给所有只用者
-r 关机后重新开机(重启)
-h 关机后停机
-n 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c 取消目前已经进行中的关机动作
-f 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F 关机时,强迫进行 fsck 动作
time 设定关机的时间
message 传送给所有使用者的警告讯息
-r now 重启
-h now 关机
reboot 重启

4.压缩解压命令

命令 语法 参数 参数说明 例子
tar tar [-cxzjvf] 压缩打包文档的名称 欲打包目录 -c 建立一个归档文件的参数指令
-x 解开一个归档文件的参数指令
-z 是否需要用 gzip 压缩
-j 是否需要用 bzip2 压缩
-v 压缩的过程中显示文件
-f 使用档名,在 f 之后要立即接档名
-tf 查看归档文件里面的文件
压缩文件夹:tar -zcvf test.tar.gz test\
解压文件夹:tar -zxvf test.tar.gz
gzip gzip [选项] 压缩(解压缩)的文件名 -d 解压缩
-l 对每个压缩文件,显示压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字
-v 对每一个压缩和解压的文件,显示文件名和压缩比
-num 用指定的数字num调整压缩的速度,-1或–fast表示最快压缩方法(低压缩比),-9或–best表示最慢压缩方法(高压缩比)。系统缺省值为6
说明:压缩文件后缀为 gz
bzip2 bzip2 [-cdz] -d 解压缩
-z 压缩参数
-num 用指定的数字num调整压缩的速度,-1或–fast表示最快压缩方法(低压缩比),-9或–best表示最慢压缩方法(高压缩比)。系统缺省值为6
说明:压缩文件后缀为 bz2

5.编辑器

类型 运行模式 运行模式意思 命令 命令意思
vim 编辑模式 等待编辑命令输入 :q 直接退出vi
插入模式 编辑模式下,输入 i 进入插入模式,插入文本信息 :wq 保存后退出vi ,并可以新建文件
命令模式 在编辑模式下,输入 : 进行命令模式 :q! 强制退出
:w file 将当前内容保存成某个文件
:set number 在编辑文件显示行号
:set nonumber 在编辑文件不显示行号
nano ctrl + o 保存
ctrl + w 搜索
ctrl + y 上一页
ctrl + v 下一页
ctrl + x 退出

6.软件包管理

1.概述

APT(Advanced Packaging Tool) 是 Debian/Ubuntu 类 Linux 系统中的软件包管理程序, 使用它可以找到想要的软件包, 而且安装、卸载、更新都很简便;也可以用来对 Ubuntu 进行升级; APT 的源文件为 /etc/apt/ 目录下的 sources.list 文件。
centos中yum是软件包管理程序。

2.修改数据源

由于国内的网络环境问题,我们需要将 Ubuntu 的数据源修改为国内数据源,操作步骤如下:

1.查看系统版本

lsb_release -a

输出结果为

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04 LTS
Release:	16.04
Codename:	xenial

注意: Codename 为 xenial,该名称为我们 Ubuntu 系统的名称,修改数据源需要用到该名称

2.编辑数据源

vi /etc/apt/sources.list

删除全部内容并修改为

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

3.更新数据源

apt-get update

3.常用 APT 命令

命令 意思
安装软件包 apt-get install packagename
删除软件包 apt-get remove packagename
更新软件包列表 apt-get update
升级有可用更新的系统(慎用) apt-get upgrade
搜索 apt-cache search package
获取包信息 apt-cache show package
删除包及配置文件 apt-get remove package --purge
了解使用依赖 apt-cache depends package
查看被哪些包依赖 apt-cache rdepends package
安装相关的编译环境 apt-get build-dep package
下载源代码 apt-get source package
清理无用的包 apt-get clean && apt-get autoclean
检查是否有损坏的依赖 apt-get check

7.用户和组管理

1.概述

Linux 操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。

2.使用 Root 用户

在实际生产操作中,我们基本上都是使用超级管理员账户操作 Linux 系统,也就是 Root 用户,Linux 系统默认是关闭 Root 账户的,我们需要为 Root 用户设置一个初始密码以方便我们使用。

1.设置 Root 账户密码

sudo passwd root

2.切换到 Root

su

3.设置允许远程登录 Root

nano /etc/ssh/sshd_config

# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password     //注释此行
PermitRootLogin yes                             //加入此行
StrictModes yes

重启服务
service ssh restart

3.用户账户说明

1.普通用户

普通用户在系统上的任务是进行普通操作

2.超级管理员

管理员在系统上的任务是对普通用户和整个系统进行管理。对系统具有绝对的控制权,能够对系统进行一切操作。用 root 表示,root 用户在系统中拥有最高权限,默认下 Ubuntu 用户的 root 用户是不能登录的。

3.安装时创建的系统用户

此用户创建时被添加到 admin 组中,在 Ubuntu 中,admin 组中的用户默认是可以使用 sudo 命令来执行只有管理员才能执行的命令的。如果不使用 sudo 就是一个普通用户。

4.组账户说明

1.私有组

当创建一个用户时没有指定属于哪个组,Linux 就会建立一个与用户同名的私有组,此私有组只含有该用户。

2.标准组

当创建一个用户时可以选定一个标准组,如果一个用户同时属于多个组时,登录后所属的组为主组,其他的为附加组。

5.账户系统文件说明

1./etc/passwd

每一行代表一个账号,众多账号是系统正常运行所必须的,例如 bin,nobody 每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:

root:x:0:0:root:/root:/bin/bash

用户名: 就是账号,用来对应 UID,root UID 是 0。
口令: 密码,早期 UNIX 系统密码存在此字段,由于此文件所有用户都可以读取,密码容易泄露,后来这个字段数据就存放到 /etc/shadow 中,这里只能看到 X。
用户标示号(UID): 系统内唯一,root 用户的 UID 为 0,普通用户从 1000 开始,1-999 是系统的标准账户,500-65536 是可登陆账号。
组标示号(GID): 与 /etc/group 相关用来规定组名和 GID 相对应。
注释: 注释账号
宿主目录(主文件夹): 用户登录系统后所进入的目录 root 在 /root/itcast
命令解释器(shell): 指定该用户使用的 shell ,默认的是 /bin/bash

2./etc/shadow

为了增加系统的安全性,用户口令通常用 shadow passwords 保护。只有 root 可读。每行包含如下信息:

root:$6$Reu571.V$Ci/kd.OTzaSGU.TagZ5KjYx2MLzQv2IkZ24E1.yeTT3Pp4o/yniTjus/rRaJ92Z18MVy6suf1W5uxxurqssel.:17465:0:99999:7:::

账号名称: 需要和 /etc/passwd 一致。
密码: 经过加密,虽然加密,但不表示不会被破解,该文件默认权限如下:
-rw------- 1 root root 1560 Oct 26 17:20 passwd-
只有root能都读写
最近修改密码日期: 从1970-1-1起,到用户最后一次更改口令的天数
密码最小时间间隔: 从1970-1-1起,到用户可以更改口令的天数
密码最大时间间隔: 从1970-1-1起,必须更改的口令天数
密码到期警告时间: 在口令过期之前几天通知
密码到期后账号宽限时间
密码到期禁用账户时间: 在用户口令过期后到禁用账户的天数
保留

3./etc/group

用户组的配置文件

root:x:0:

用户组名称
用户组密码: 给用户组管理员使用,通常不用
GID: 用户组的ID
此用户支持的账号名称: 一个账号可以加入多个用户组,例如想要 itcast 加入 root 这个用户组,将该账号填入该字段即可 root❌0:root, icast 将用户进行分组是 Linux 对用户进行管理及控制访问权限的一种手段。一个中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。

4./etc/gshadow

该文件用户定义用户组口令,组管理员等信息只有root用户可读。

root:\*::

用户组名
密码列
用户组管理员的账号
用户组所属账号

6.账户管理常用命令

1.增加用户

useradd 用户名
useradd -u (UID号)
useradd -p (口令)
useradd -g (分组)
useradd -s (SHELL)
useradd -d (用户目录)
useradd lusifer	//增加用户名为 lusifer 的账户

2.修改用户

usermod -u (新UID)
usermod -d (用户目录)
usermod -g (组名)
usermod -s (SHELL)
usermod -p (新口令)
usermod -l (新登录名)
usermod -L (锁定用户账号密码)
usermod -U (解锁用户账号)
usermod -u 1024 -g group2 -G root lusifer		//将 lusifer 用户 uid 修改为 1024,默认组改为系统中已经存在的 group2,并且加入到系统管理员组

3.删除用户

userdel 用户名 (删除用户账号)
userdel -r 删除账号时同时删除目录
userdel -r lusifer		//删除用户名为 lusifer 的账户并同时删除 lusifer 的用户目录

4.组账户维护

groupadd 组账户名 (创建新组)
groupadd -g 指定组GID
groupmod -g 更改组的GID
groupmod -n 更改组账户名
groupdel 组账户名 (删除指定组账户)

5.口令维护

passwd 用户账户名 (设置用户口令)
passwd -l 用户账户名 (锁定用户账户)
passwd -u 用户账户名 (解锁用户账户)
passwd -d 用户账户名 (删除账户口令)
gpasswd -a 用户账户名 组账户名 (将指定用户添加到指定组)
gpasswd -d 用户账户名 组账户名 (将用户从指定组中删除)
gpasswd -A 用户账户名 组账户名 (将用户指定为组的管理员)

6.用户和组状态

su 用户名(切换用户账户)
id 用户名(显示用户的UID,GID)
whoami (显示当前用户名称)
groups (显示用户所属组)

8.文件权限管理

1.查看文件和目录的权限

ls –al:使用 ls 不带参数只显示文件名称,通过ls –al可以显示文件或者目录的权限信息。

ls -l:文件名 显示信息包括:文件类型 (d 目录,- 普通文件,l 链接文件),文件权限,文件的用户,文件的所属组,文件的大小,文件的创建时间,文件的名称

-rw-r--r-- 1 lusifer lusifer 675 Oct 26 17:20 .profile
-rw-r--r--	//文档类型及权限
1	//连接数
lusifer	//文档所属用户
lusifer	//文档所属组
675	//文档大小
Oct 26 17:20	//文档最后被修改日期
.profile		//文档名称

-:普通文件(文档类型)
rw-:说明用户 lusifer 有读写权限,没有运行权限(文档所有者权限(user))
r–:表示用户组 lusifer 只有读权限,没有写和运行的权限(文档所属用户组权限(group))
r–:其他用户只有读权限,没有写权限和运行的权限(其他用户权限(other))

1.文档类型

d 表示目录
l 表示软连接
– 表示文件
c 表示串行端口字符设备文件
b 表示可供存储的块设备文件
余下的字符 3 个字符为一组。r 只读,w 可写,x 可执行,- 表示无此权限

2.连接数

指有多少个文件指向同一个索引节点。

3.文档所属用户和所属组

就是文档属于哪个用户和用户组。文件所属用户和组是可以更改的

4.文档大小

默认是 bytes

2.更改操作权限

1.chown

是 change owner 的意思,主要作用就是改变文件或者目录所有者,所有者包含用户和用户组

chown [-R] 用户名称 文件或者目录
chown [-R] 用户名称 用户组名称 文件或目录

-R:进行递归式的权限更改,将目录下的所有文件、子目录更新为指定用户组权限

2.chmod

改变访问权限

chmod [who] [+ | - | =] [mode] 文件名
1.who

表示操作对象可以是以下字母的一个或者组合

u:用户 user
g:用户组 group
o:表示其他用户
a:表示所有用户是系统默认的

2.操作符号

+:表示添加某个权限
-:表示取消某个权限
=:赋予给定的权限,取消文档以前的所有权限

3.mode

表示可执行的权限,可以是 r、w、x

4.文件名

文件名可以使空格分开的文件列表

5.示例
lusifer@UbuntuBase:~$ ls -al test.txt 
-rw-rw-r-- 1 lusifer lusifer 6 Nov  2 21:47 test.txt
lusifer@UbuntuBase:~$ chmod u=rwx,g+r,o+r test.txt 
lusifer@UbuntuBase:~$ ls -al test.txt 
-rwxrw-r-- 1 lusifer lusifer 6 Nov  2 21:47 test.txt
lusifer@UbuntuBase:~$

3.数字设定法

数字设定法中数字表示的含义

0 表示没有任何权限
1 表示有可执行权限 = x
2 表示有可写权限 = w
4 表示有可读权限 = r

也可以用数字来表示权限如 chmod 755 file_name

r w x r – x r - x
4 2 1 4 - 1 4 - 1
user group others

若要 rwx 属性则 4+2+1=7
若要 rw- 属性则 4+2=6
若要 r-x 属性则 4+1=5

lusifer@UbuntuBase:~$ chmod 777 test.txt 
lusifer@UbuntuBase:~$ ls -al test.txt 
-rwxrwxrwx 1 lusifer lusifer 6 Nov  2 21:47 test.txt

lusifer@UbuntuBase:~$ chmod 770 test.txt 
lusifer@UbuntuBase:~$ ls -al test.txt 
-rwxrwx--- 1 lusifer lusifer 6 Nov  2 21:47 test.txt

2.Docker

1.Docker引擎

Docker 引擎是一个包含以下主要组件的客户端服务器应用程序。

一种服务器,它是一种称为守护进程并且长时间运行的程序。
REST API用于指定程序可以用来与守护进程通信的接口,并指示它做什么。
一个有命令行界面 (CLI) 工具的客户端。

Docker 引擎组件的流程如下图所示:
java微服务架构_第2张图片

2.Docker系统架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像

java微服务架构_第3张图片

标题 说明
镜像(Images) Docker 镜像是用于创建 Docker 容器的模板。
容器(Container) 容器是独立运行的一个或一组应用。
客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。
主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
仓库(Registry) Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

3.Docker镜像

1.概述

我们都知道,操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu 16.04 最小系统的 root 文件系统。

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

2.分层存储

因为镜像包含操作系统完整的 root 文件系统,其体积往往是庞大的,因此在 Docker 设计时,就充分利用 Union FS 的技术,将其设计为分层存储的架构。所以严格来说,镜像并非是像一个 ISO 那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

关于镜像构建,将会在后续相关章节中做进一步的讲解。

4.Docker容器

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学 Docker 时常常会混淆容器和虚拟机。

前面讲过镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。

数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。

5.Docker仓库

1.概述

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

以 Ubuntu 镜像 为例,ubuntu 是仓库的名字,其内包含有不同的版本标签,如,14.04, 16.04。我们可以通过 ubuntu:14.04,或者 ubuntu:16.04 来具体指定所需哪个版本的镜像。如果忽略了标签,比如 ubuntu,那将视为 ubuntu:latest。

仓库名经常以 两段式路径 形式出现,比如 jwilder/nginx-proxy,前者往往意味着 Docker Registry 多用户环境下的用户名,后者则往往是对应的软件名。但这并非绝对,取决于所使用的具体 Docker Registry 的软件或服务。

2.公有 Docker Registry

Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。除此以外,还有 CoreOS 的 Quay.io,CoreOS 相关的镜像存储在这里;Google 的 Google Container Registry,Kubernetes 的镜像使用的就是这个服务。

由于某些原因,在国内访问这些服务可能会比较慢。国内的一些云服务商提供了针对 Docker Hub 的镜像服务(Registry Mirror),这些镜像服务被称为加速器。常见的有 阿里云加速器、DaoCloud 加速器 等。使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从 Docker Hub 下载速度会提高很多。

国内也有一些云服务商提供类似于 Docker Hub 的公开服务。比如 时速云镜像仓库、网易云镜像服务、DaoCloud 镜像市场、阿里云镜像库 等。

3.私有 Docker Registry

除了使用公开服务外,用户还可以在本地搭建私有 Docker Registry。Docker 官方提供了 Docker Registry 镜像,可以直接使用做为私有 Registry 服务。

开源的 Docker Registry 镜像只提供了 Docker Registry API 的服务端实现,足以支持 docker 命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。在官方的商业化版本 Docker Trusted Registry 中,提供了这些高级功能。

除了官方的 Docker Registry 外,还有第三方软件实现了 Docker Registry API,甚至提供了用户界面以及一些高级功能。比如,VMWare Harbor 和 Sonatype Nexus。

你可能感兴趣的:(java)