-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathubuntu笔记.txt
383 lines (343 loc) · 21.8 KB
/
ubuntu笔记.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
ubuntu基本目录结构:
/usr/X11R6: 存放X window的目录
/usr/bin: 众多的应用程序
/usr/sbin: 超级用户的一些管理程序
/usr/doc: linux文档
/usr/include: linux下开发和编译应用程序所需要的头文件
/usr/lib: 常用的动态链接库和软件包的配置文件
/usr/man: 帮助文档
/usr/src: 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin: 本地增加的命令
/usr/local/lib: 本地增加的库
/home: 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/bin: 二进制可执行命令
/dev: 设备特殊文件
/var: 某些大文件的溢出区,比方说各种服务的日志文件
/etc: 系统管理和配置文件/etc/rc.d启动的配置文件和脚本
/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置
/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取
~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,它设置一些环境变量,执行用户的.bashrc文件
~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取
~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件
/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系
~/.bash_profile是交互式login方式进入bash运行的
~/.bashrc是交互式non-login方式进入bash运行的
通常二者设置大致相同,所以通常前者会调用后者
su // switch user,切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制
su - {username} // 这里加了"-"后,表示切换当前的环境变量到新用户的环境变量
su {username} // 表示不切换当前的环境变量到新用户的环境变量
sudo // 暂时切换到超级用户模式(root)以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。有时间限制,ubuntu默认为一次时长15分钟
sudo -i // 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” ,运行结果,PWD=/root
sudo su // 运行sudo命令给su命令提权(实质上就是su,而su默认是获得root权限),运行结果,PWD=/home/用户名(当前用户主目录)
lsb_release -a // 查看ubuntu版本号
uname -r or uname -a // 查看linux内核版本号
which node // 查看运行文件所在的路径
whereis android // 查看文件安装路径
pwd // 查看当前目录的完整路径
ctrl + A // 光标移动到行首
ctrl + E // 光标移动大行尾
tail -n 20 {filename} // 查看文件最后20行
open . // 打开系统文件管理器,mac
chmod +x {filename} // 授予所有用户该文件的执行权限,相当于chmod a+x {filename}
chmod u+x {filename} // 只授予该文件的所属用户该文件的执行权限
chmod u-x {filename} // 取消该文件的所属用户该文件的执行权限
chmod u=x {filename}} // 表示赋予给定权限,并取消其他所有权限(如果有的话,如原来u是rwx,设置u=r,u就剩r)
chmod 666 {filename} // 无任何权限(0),开所有权限(7 = 4 + 2 + 1)
u // user,用户
g // group,用户组
o // others,其它,即非同组用户
a // all,所有
r // read,读权限,权限值4
w // write,写权限,权限值2
x // execute,执行权限,权限值1
- // 表示对应权限未开启
d // directory,表示目录文件
- // 在标号0位置,表示普通的文件
文件权限码 // 共10个位置,位置0(文件类型,即目录文件d或普通文件-),位置1-3(所属用户权限),位置4-6(所属用户组权限),位置7-9(非同组用户权限)
drwxr-xr--
-rw-rw-r--
tar -czvf test.tar.gz a.c // 压缩a.c文件为test.tar.gz
tar -xzvf test.tar.gz // 解压缩test.tar.gz
tar -tzvf test.tar.gz // 列出压缩文件所包含的文件
-c // 创建压缩文件,或--create
-x // 解压缩,或--extract,或--get
-t // 列出压缩文件的内容,或--list
-z // 通过gzip指令处理压缩文件,或--gzip,或--ungzip
-v // 显示指令执行过程,或--verbose,verbose(冗长)
-f // 指定压缩文件名,后面必须跟压缩文件名,或--file
查看系统内存使用情况
free -h
查看系统资源占用(内存,cpu和进程)
top
查看端口使用
netstat -ap | grep 8080
查看进程
ps -el // e,查看所有进程状态,ps默认只查看本终端的进程,l,展示进程相关的其它信息
| // 管道
grep node // 查找带node字符串的行
杀死进程
sudo kill {pid}
查看文件最后n行
tail -f -n 20 filename.txt // 跟踪查看文件后20行,-f:跟踪文件增长,-n:指定查看的行数,-20等同于20,但+20代表从文件的第20行开始查看
后台运行进程
nohup cmd [args...] &
文件操作
cp -r a.zip /home/test
rm -r /home/test
mv a.txt b.txt // 更改文件名
scp -P {server_port} {local_file_path} {{username}@{server_ip}:{server_path} // 将本地文件上传到服务器的指定目录,反过来写,可以把服务器文件,下载到本地
压缩解压及打包命令
tar [-cxtzjvfpPN]
-c:建立一个压缩文件的参数指令(create 的意思)
-x:解开一个压缩文件的参数指令
-t:查看 tarfile 里面的文件
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩
-z:是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-v: 显示详细信息
-f: 要处理的文件
tar -zxvf
包管理
sudo dpkg -l
sudo apt-get update // 更新/etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的地址
sudo apt-get upgrade // 升级已安装的所有软件包,升级之后的版本就是本地地址里的版本,因此,在执行upgrade之前一定要执行update, 这样才能更新到最新的
sudo apt-get -y install {packageName} // 安装包, -y,可选项,安装时是否不询问yes/no
sudo apt-get --purge remove {packageName} // 删除包,--purge,清除配置
windows环境登录服务器
PuTTY
PuTTYgen // 可选,通过***.pem生成***.ppk私钥
--服务器配置实例--
# 非阿里云的域名,可利用DNSPod进行域名解析,老牌厂商,性能不错
# 登录远程服务器
1、ssh {username}@{server_ip} // 服务器端未增加该客户端私钥认证时,需输入用户密码
# 增加系统用户,控制访问权限
1、adduser {username} // 用户信息可不输入,查看所有用户cat /etc/passwd,删除用户userdel -rf {username}
# 给增加的用户授权
1、gpasswd -a {username} sudo // add user to group sudo
2、sudo visudo // 会出现一个nano编辑器打开的配置文件sudoers.tmp
3、在配置文件的# User privilege specification后增加一行,{username} ALL=(ALL:ALL) ALL
说明:
第一个ALL: on all hosts (if you distribute the same sudoers file to many computers)
第二个ALL: as any target user
第三个ALL: as any target group
第四个ALL: can run any command
4、service ssh restart // 重启ssh服务
# 通过ssh,实现无密码登录
1、ssh-keygen -t rsa -b 4096 -C "{email_address}" // 在客户端执行,生成公钥私钥,密码可不输入,会在~/.ssh目录下,生成id_rsa、id_rsa.pub文件
2、eval "$(ssh-agent -s)" // 在客户端执行,打开客户端ssh代理
3、ssh-add ~/.ssh/id_rsa // 在客户端执行,将id_rsa,加入到代理中,-K,持久化,保证重启系统时,该设置仍然生效
4、ssh-keygen -t rsa -b 4096 -C "{email_address}" // 在服务器端执行,如果服务器已有公钥私钥,可不执行
5、eval "$(ssh-agent -s)" // 在服务器端执行
6、ssh-add ~/.ssh/id_rsa // 在服务器端执行
7、vi authorized_keys // 在服务器端执行,在.ssh目录下,创建授权文件authorized_keys(文件名固定),该授权,只对当前服务器端用户有效
8、将客户端id_rsa.pub文件中的内容,复制到服务器端的authorized_keys文件中,保存
9、chmod 600 authorized_keys // 更改文件权限,600,只有拥有者有读写权限
10、sudo service ssh restart // 重启ssh服务
11、ssh {username}@{server_ip} // 再次在客户端尝试ssh登录,此时无需输入密码
# 更改ssh默认端口,提高服务器安全等级
1、sudo vi /etc/ssh/sshd_config // 修改ssh配置
更改配置项:
Port 2222 // 默认22,0-1024为系统程序预占端口,不要使用,最大值65536
UseDNS no // 默认no
PermitEmptyPasswords no // 默认no,是否允许空密码
PermitRootLogin no // 默认yes,禁止root用户登录,因为阿里云的系统默认管理员都是root,用户名已经暴露,很容易被暴力破解密码
PasswordAuthentication no // 默认yes,禁止通过密码登录,防止暴力破解,只能通过ssh连接登录,安全系数更高
AllowUsers {username} // 新增的配置
2、sudo service ssh restart
3、ssh -p 2222 {username}@{server_ip} // 通过2222端口,连接ssh,此时22端口已不能使用ssh连接
# 配置iptables,iptables,与最新的3.5版本linux内核集成的ip信息包过滤系统,用于在linux系统上更好地控制ip信息包过滤和防火墙配置
1、sudo apt-get update && sudo apt-get upgrade
2、sudo iptables -F // 清空目前已有的所有iptables规则
3、sudo vi /etc/iptables.up.rules // 新建一个配置文件
增加配置内容如下:
*filter
# 允许所有建立起来的连接
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许所有的输出
-A OUTPUT -j ACCEPT
# 允许所有HTTPS协议请求的连接,443为默认https协议监听端口
-A INPUT -p tcp --dport 443 -j ACCEPT
# 允许所有HTTP协议请求的连接,80为默认http协议监听端口
-A INPUT -p tcp --dport 80 -j ACCEPT
# 允许通过ssh连接登录,2222为修改后的监听端口,默认22
-A INPUT -p tcp -m state --state NEW --dport 2222 -j ACCEPT
# 允许外网ping服务器
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# 允许mongodb的端口3333,能够被本地访问,默认27017端口
-A INPUT -s 127.0.0.1 -p tcp --destination-port 3333 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -d 127.0.0.1 -p tcp --source-port 3333 -m state --state ESTABLISHED -j ACCEPT
# 某项目需使用端口5555,所以需开放该端口,其它项目同理
-A INPUT -s 127.0.0.1 -p tcp --destination-port 5555 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -d 127.0.0.1 -p tcp --source-port 5555 -m state --state ESTABLISHED -j ACCEPT
# 记录被拒绝的请求,记录5分钟内的
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7
# 丢弃某ip短时间内请求多次的可疑请求,限制60秒最多150次请求
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 150 -j DROP
# 拒绝其他所有连接
-A INPUT -j REJECT
-A FORWARD -j REJECT
# 提交所有配置
COMMIT
4、sudo iptables-restore < /etc/iptables.up.rules // 导入配置的规则
5、sudo ufw status // 查看防火墙是否打开,inactive/active
6、sudo ufw enable // 打开防火墙
7、sudo vi /etc/network/if-up.d/iptables // 设置开机之后,自动启动,新增脚本文件
写入脚本如下:
#!/bin/sh
iptables-restore /etc/iptables.up.rules
8、sudo chmod +x /etc/network/if-up.d/iptables // 赋予脚本执行权限
# 配置fail2ban,可以监视系统日志,然后匹配日志的错误信息(正则表达式匹配)执行相应的屏蔽动作
1、sudo apt-get install fail2ban // 安装fail2ban
2、sudo vi /etc/fail2ban/jail.conf // 打开配置文件,配置文件尾部,[ssh]部分,定义了日志存放的位置,默认/var/log/auth.log
更改配置项:
bantime = 3600 // 默认600
destemail = {email_address} // 默认root@localhost
action = %(action_mw)s // 默认action = %(action_)s
3、sudo service fail2ban status // 查看fail2ban是否运行
4、sudo service fail2ban stop // 停止运行
5、sudo service fail2ban start // 启动
# 安装常用的基础包
sudo apt-get install vim openssl build-essential libssl-dev wget curl git
# 配置nginx
1、sudo apt-get install nginx
2、nginx -v // 查看nginx版本
3、sudo /etc/nginx/conf.d/{filename}.conf // 新增配置文件,该目录可创建多份配置文件,部署多个项目
内容如下:
upstream my_app_name {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name {www.domain.com}; // 域名 or 服务器外网ip
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://my_app_name;
proxy_redirect off;
}
location ~* ^.+\.(jpg|jpeg|git|png|ico|js|css|) { // 静态文件映射
root /home/myuser/...; // 将路径映射到系统root目录下相应的文件夹
}
}
4、sudo vi /etc/nginx/nginx.conf // 编辑nginx默认配置文件,查看inclue配置项,自定义的配置文件是否被导入进来,如果未导入,需修改配置
修改配置项如下:
server_tokens off; // 该项默认被注释,解注该项,用于去除http响应头的nginx版本信息,只保留nginx名称
5、sudo nginx -t // 检测自定义配置文件是否有错误
6、sudo service nginx reload // 重启nginx服务
# 设置系统文件监控数目
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
# 安装nvm,安装方法:https://github.com/creationix/nvm
nvm install v6.11.1
nvm use v6.11.1
nvm alias default v6.11.1 // 设置系统默认的node版本
# 安装pm2
npm install -g pm2
pm2 -v
pm2 start {name}
pm2 stop {name}
pm2 delete {name}
pm2 list
pm2 show {name} // 查看app详细信息,可查看日志存放位置
pm2 logs // 查看实时日志,直接在命令行里查看
pm2 deploy ecosystem.json {service_name} setup // 项目根目录下,创建ecosystem.json,配置deploy字段,可在本地初始化远程项目,注意,服务器端存放项目的目录需要有相关权限,chmod 777 {project_path},可读、可写、可执行
pm2 deploy ecosystem.json {service_name} // 配置deploy字段,可在本地初始化并发布远程项目
# 安装mongodb,一般数据库部署在一台独立的服务器上 安装方法:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
1、sudo vi /etc/apt/apt.conf // 可选项,修改apt下载源,默认为阿里云的源,安装出错时,可注释掉掉该文件下的镜像源配置
2、sudo vi /etc/apt/sources.list.d/mongodb-org-{version}.list // mongodb安装慢时,可将该文件下的源地址改成阿里云的mongodb源地址
3、sudo service mongod start // 启动mongodb,sudo service mongod restart重启mongodb
4、cat /var/log/mongodb/mongod.log // 查看mongodb启动日志
5、mongo // 测试连接mongodb
6、sudo service mongod stop // 关闭mongodb
7、sudo vi /etc/mongod.conf // 修改mongodb配置
修改配置项如下:
port: 3333 // 修改端口,提高安全等级,默认27017
security:
authorization: 'enabled' // 此时,各种数据库操作之前,都要进行权限验证,db.auth(username, password);
8、sudo vi /etc/iptables.up.rules // 修改iptables,允许访问mongogdb端口,默认端口27017,详细配置见上面的iptables配置
9、sudo iptables-restore < /etc/iptables.up.rules // 重新导入配置的规则
10、sudo service mongod start && mongo --port 3333 // 测试连接mongodb
11、mongodump -h 127.0.0.1:27017 -d {db_name} -o {path} // 在客户端执行,客户端mongodb端口27017,备份本地数据库中的数据,用来初始化服务器上的数据库
12、tar zcvf {package_name}.tar.gz // 在{path}目录下执行,打包该文件夹下的所有数据库文件
13、scp -P 2222 ./{package_name}.tar.gz {{username}@{server_ip}:{server_path} // 将本地数据库备份文件上传到服务器
14、tar xvf {package_name}.tar.gz // 在服务器端执行,解压缩上传上来的数据库备份文件
15、mongorestore --host 127.0.0.1:3333 -d {db_name} {unziped_files_path} // 将数据导入到数据库,-u,用户名,-p,密码
16、mongoexport --host 127.0.0.1:3333 -d {db_name} -c {table_name} -q '{query_object}' -o ./{filename}.json // 导出单表数据
17、mongoimport --host 127.0.0.1:3333 -d {db_name} -c {table_name} ./{filename}.json // 导入单表数据到某张表中
18、操作mongodb的admin数据库和各个用户创建的数据库,db.createUser(...),分别为各个数据库,配置用户角色,分配管理员权限,提高安全等级,一般会为每个数据库创建一个有读写权限的用户和一个只有读权限的用于备份数据的用户
19、vi db_backup.sh // 新建一个备份数据库的shell脚本,核心内容,mongodump ...
20、sudo sh ./db_backup.sh // 执行数据库备份
20、用nodejs编写将备份的数据上传到云端或另一台服务器的脚本,提高数据安全等级,修改db_backup.sh,在db_backup.sh文件的最后增加调用该node服务
21、crontab -e // 配置系统定时任务
增加配置内容如下:
// m h dom mon dow command
30 00 * * * sh /{my_path}/db_backup.sh // 每天00:30执行脚本
# 安装zsh // 加强版shell,安装后,可在该用户系统根目录下的.zshrc文件中,定义shell命令的别名,方便使用,如:alias login_server="ssh root@111.11.11.111"
1、sudo apt-get install zsh
2、source .zshrc // 重新载入用户环境变量
# 安装mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
# 安装redis
sudo apt-get install redis-server
自动安装redis-cli,安装完,自动运行redis,默认端口号为6379
# 配置https,需先生成https证书,可在阿里云、腾讯云等申请免费证书,然后下载证书
nginx配置如下:
upstream my_app_name {
server 127.0.0.1:3000;
}
server 80 { // 如果请求为http协议,将其转发到https
listen 80;
server_name {www.domain.com}; // 域名 or 服务器外网ip
# rewrite ^(.*) https://$host$1 permanent;
return 301 https://{www.domian.com}$request_uri;
}
server {
listen 443;
server_name {www.domain.com}; // 绑定证书的域名
ssl on;
ssl_certificate /home/abc/1_www.domain.com_bundle.crt; // 证书本地地址
sll_certificate_key /home/abc/2_www.domain.com.key; // 证书key本地地址
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5:!EXPORT56:!EXP; // 加密套件
ssl_prefer_server_ciphers on;
if ($ssl_protocol = "") {
rewrite ^(.*) https://$host$1 permanent;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://my_app_name;
proxy_redirect off;
}
location ~* ^.+\.(jpg|jpeg|git|png|ico|js|css|) { // 静态文件映射
root /home/myuser/...; // 将路径映射到系统root目录下相应的文件夹
}
}
# 安装acme.sh // 另一种配置https解决方案,简化申请Let's Sencrypt证书,并自动续签证书,支持http和dns两种方式签发证书
1、curl https://get.acme.sh | sh // 安装acme.sh
2、export Ali_Key="**********" // 阿里云的Access key
3、export Ali_Secret="**********"
4、acme.sh --issue --dns dns_ali -d abc.com -d *.abc.com // 使用dns的方式签发证书,目前Let's Sencrypt已支持泛域名
5、acme.sh --installcert -d abc.com \ // copy证书到指定目录下
--key-file /etc/nginx/ssl/abc.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"
6、acme.sh --upgrade --auto-upgrade // 设置自动升级acme.sh
7、acme.sh --upgrade --auto-upgrade 0 // 关闭自动升级acme.sh
# 安装docker
1、sudo apt-get update
2、sudo apt-get install apt-transport-https ca-certificates // 升级source列表并保证https和ca证书成功安装
3、sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D // 增加新的GPG密钥
4、vi /etc/apt/sources.list.d/docker.list // 新增或编辑source列表里的docker.list文件,删除已有的entries,按照系统版本增加entry(Ubuntu Xenial 16.04 (LTS)),deb https://apt.dockerproject.org/repo ubuntu-xenial main
5、sudo apt-get purge lxc-docker // 重新执行更新操作,并删除老的docker repo,没有安装的话,跳过
6、sudo apt-cache policy docker-engine // 查看是否有正确的可用版本
7、sudo apt-get install linux-image-extra-$(uname -r) // 从14.04版本以上开始,docker推荐安装linux-image-extra
8、sudo apt-get update
9、sudo apt-get install docker-engine // 安装docker
10、sudo service docker start // 启动docker
11、sudo docker run hello-world // 测试安装是否正常