- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详解如何干净的卸载docker的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
先上服务器环境信息:
卸载的原因:
宿主机过段时间就磁盘100%了,导致continart异常退出,后来找了很多解决方案,才发现是安装docker的时候有个配置文件错误(正常的应该是|storage driver: overlay2).
上干货:
①卸载 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
rm
-rf
/etc/systemd/system/docker
.service.d
rm
-rf
/var/lib/docker
rm
-rf
/var/run/docker
|
②安装 。
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
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
|
#!/bin/sh
set
-e
# this script is meant for quick & easy install via:
# $ curl -fssl get.docker.com -o get-docker.sh
# $ sh get-docker.sh
#
# for test builds (ie. release candidates):
# $ curl -fssl test.docker.com -o test-docker.sh
# $ sh test-docker.sh
#
# note: make sure to verify the contents of the script
# you downloaded matches the contents of install.sh
# located at https://github.com/docker/docker-install
# before executing.
#
# git commit from https://github.com/docker/docker-install when
# the script was uploaded (should only be modified by upload job):
script_commit_sha=36b78b2
# this value will automatically get changed for:
# * edge
# * test
# * experimental
default_channel_value=
"edge"
if
[ -z
"$channel"
];
then
channel=$default_channel_value
fi
default_download_url=
"https://download.docker.com"
if
[ -z
"$download_url"
];
then
download_url=$default_download_url
fi
default_repo_file=
"docker-ce.repo"
if
[ -z
"$repo_file"
];
then
repo_file=
"$default_repo_file"
fi
support_map="
x86_64-centos-7
x86_64-fedora-26
x86_64-fedora-27
x86_64-fedora-28
x86_64-debian-wheezy
x86_64-debian-jessie
x86_64-debian-stretch
x86_64-debian-buster
x86_64-ubuntu-trusty
x86_64-ubuntu-xenial
x86_64-ubuntu-bionic
x86_64-ubuntu-artful
s390x-ubuntu-xenial
s390x-ubuntu-bionic
s390x-ubuntu-artful
ppc64le-ubuntu-xenial
ppc64le-ubuntu-bionic
ppc64le-ubuntu-artful
aarch64-ubuntu-xenial
aarch64-ubuntu-bionic
aarch64-debian-jessie
aarch64-debian-stretch
aarch64-debian-buster
aarch64-fedora-26
aarch64-fedora-27
aarch64-fedora-28
aarch64-centos-7
armv6l-raspbian-jessie
armv7l-raspbian-jessie
armv6l-raspbian-stretch
armv7l-raspbian-stretch
armv7l-debian-jessie
armv7l-debian-stretch
armv7l-debian-buster
armv7l-ubuntu-trusty
armv7l-ubuntu-xenial
armv7l-ubuntu-bionic
armv7l-ubuntu-artful
"
mirror=
''
dry_run=${dry_run:-}
while
[ $
# -gt 0 ]; do
case
"$1"
in
--mirror)
mirror=
"$2"
shift
;;
--dry-run)
dry_run=1
;;
--*)
echo
"illegal option $1"
;;
esac
shift
$(( $
# > 0 ? 1 : 0 ))
done
case
"$mirror"
in
aliyun)
download_url=
"https://mirrors.aliyun.com/docker-ce"
;;
azurechinacloud)
download_url=
"https://mirror.azure.cn/docker-ce"
;;
esac
command_exists() {
command
-
v
"$@"
>
/dev/null
2>&1
}
is_dry_run() {
if
[ -z
"$dry_run"
];
then
return
1
else
return
0
fi
}
deprecation_notice() {
distro=$1
date
=$2
echo
echo
"deprecation warning:"
echo
" the distribution, $distro, will no longer be supported in this script as of $date."
echo
" if you feel this is a mistake please submit an issue at https://github.com/docker/docker-install/issues/new"
echo
sleep
10
}
get_distribution() {
lsb_dist=
""
# every system that we officially support has /etc/os-release
if
[ -r
/etc/os-release
];
then
lsb_dist=
"$(. /etc/os-release && echo "
$
id
")"
fi
# returning an empty string here should be alright since the
# case statements don't act unless you provide an actual value
echo
"$lsb_dist"
}
add_debian_backport_repo() {
debian_version=
"$1"
backports=
"deb http://ftp.debian.org/debian $debian_version-backports main"
if
!
grep
-fxq
"$backports"
/etc/apt/sources
.list;
then
(
set
-x; $sh_c
"echo \"$backports\" >> /etc/apt/sources.list"
)
fi
}
echo_docker_as_nonroot() {
if
is_dry_run;
then
return
fi
if
command_exists docker && [ -e
/var/run/docker
.sock ];
then
(
set
-x
$sh_c
'docker version'
) ||
true
fi
your_user=your-user
[
"$user"
!=
'root'
] && your_user=
"$user"
# intentionally mixed spaces and tabs here -- tabs are stripped by "<<-eof", spaces are kept in the output
echo
"if you would like to use docker as a non-root user, you should now consider"
echo
"adding your user to the \"docker\" group with something like:"
echo
echo
" sudo usermod -ag docker $your_user"
echo
echo
"remember that you will have to log out and back in for this to take effect!"
echo
echo
"warning: adding a user to the \"docker\" group will grant the ability to run"
echo
" containers which can be used to obtain root privileges on the"
echo
" docker host."
echo
" refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface"
echo
" for more information."
}
# check if this is a forked linux distro
check_forked() {
# check for lsb_release command existence, it usually exists in forked distros
if
command_exists lsb_release;
then
# check if the `-u` option is supported
set
+e
lsb_release -a -u >
/dev/null
2>&1
lsb_release_exit_code=$?
set
-e
# check if the command has exited successfully, it means we're in a forked distro
if
[
"$lsb_release_exit_code"
=
"0"
];
then
# print info about current distro
cat
<<-eof
you
're using '
$lsb_dist
' version '
$dist_version'.
eof
# get the upstream release info
lsb_dist=$(lsb_release -a -u 2>&1 |
tr
'[:upper:]'
'[:lower:]'
|
grep
-e
'id'
|
cut
-d
':'
-f 2 |
tr
-d
'[:space:]'
)
dist_version=$(lsb_release -a -u 2>&1 |
tr
'[:upper:]'
'[:lower:]'
|
grep
-e
'codename'
|
cut
-d
':'
-f 2 |
tr
-d
'[:space:]'
)
# print info about upstream distro
cat
<<-eof
upstream release is
'$lsb_dist'
version
'$dist_version'
.
eof
else
if
[ -r
/etc/debian_version
] && [
"$lsb_dist"
!=
"ubuntu"
] && [
"$lsb_dist"
!=
"raspbian"
];
then
if
[
"$lsb_dist"
=
"osmc"
];
then
# osmc runs raspbian
lsb_dist=raspbian
else
# we're debian and don't even know it!
lsb_dist=debian
fi
dist_version=
"$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')"
case
"$dist_version"
in
9)
dist_version=
"stretch"
;;
8|
'kali linux 2'
)
dist_version=
"jessie"
;;
7)
dist_version=
"wheezy"
;;
esac
fi
fi
fi
}
semverparse() {
major=
"${1%%.*}"
minor=
"${1#$major.}"
minor=
"${minor%%.*}"
patch=
"${1#$major.$minor.}"
patch=
"${patch%%[-.]*}"
}
ee_notice() {
echo
echo
echo
" warning: $1 is now only supported by docker ee"
echo
" check https://store.docker.com for information on docker ee"
echo
echo
}
do_install() {
echo
"# executing docker install script, commit: $script_commit_sha"
if
command_exists docker;
then
docker_version=
"$(docker -v | cut -d ' ' -f3 | cut -d ',' -f1)"
major_w=1
minor_w=10
semverparse
"$docker_version"
shouldwarn=0
if
[
"$major"
-lt
"$major_w"
];
then
shouldwarn=1
fi
if
[
"$major"
-
le
"$major_w"
] && [
"$minor"
-lt
"$minor_w"
];
then
shouldwarn=1
fi
cat
>&2 <<-
'eof'
warning: the
"docker"
command
appears to already exist on this system.
if
you already have docker installed, this script can cause trouble,
which
is
why we're displaying this warning and provide the opportunity to cancel the
installation.
if
you installed the current docker package using this script and are using it
eof
if
[ $shouldwarn -
eq
1 ];
then
cat
>&2 <<-
'eof'
again to update docker, we urge you to migrate your image store before upgrading
to v1.10+.
you can
find
instructions
for
this here:
https:
//github
.com
/docker/docker/wiki/engine-v1
.10.0-content-addressability-migration
eof
else
cat
>&2 <<-
'eof'
again to update docker, you can safely ignore this message.
eof
fi
cat
>&2 <<-
'eof'
you may press ctrl+c now to abort this script.
eof
(
set
-x;
sleep
20 )
fi
user=
"$(id -un 2>/dev/null || true)"
sh_c=
'sh -c'
if
[
"$user"
!=
'root'
];
then
if
command_exists
sudo
;
then
sh_c=
'sudo -e sh -c'
elif
command_exists
su
;
then
sh_c=
'su -c'
else
cat
>&2 <<-
'eof'
error: this installer needs the ability to run commands as root.
we are unable to
find
either
"sudo"
or
"su"
available to
make
this happen.
eof
exit
1
fi
fi
if
is_dry_run;
then
sh_c=
"echo"
fi
# perform some very rudimentary platform detection
lsb_dist=$( get_distribution )
lsb_dist=
"$(echo "
$lsb_dist
" | tr '[:upper:]' '[:lower:]')"
case
"$lsb_dist"
in
ubuntu)
if
command_exists lsb_release;
then
dist_version=
"$(lsb_release --codename | cut -f2)"
fi
if
[ -z
"$dist_version"
] && [ -r
/etc/lsb-release
];
then
dist_version=
"$(. /etc/lsb-release && echo "
$distrib_codename
")"
fi
;;
debian|raspbian)
dist_version=
"$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')"
case
"$dist_version"
in
9)
dist_version=
"stretch"
;;
8)
dist_version=
"jessie"
;;
7)
dist_version=
"wheezy"
;;
esac
;;
centos)
if
[ -z
"$dist_version"
] && [ -r
/etc/os-release
];
then
dist_version=
"$(. /etc/os-release && echo "
$version_id
")"
fi
;;
rhel|ol|sles)
ee_notice
"$lsb_dist"
exit
1
;;
*)
if
command_exists lsb_release;
then
dist_version=
"$(lsb_release --release | cut -f2)"
fi
if
[ -z
"$dist_version"
] && [ -r
/etc/os-release
];
then
dist_version=
"$(. /etc/os-release && echo "
$version_id
")"
fi
;;
esac
# check if this is a forked linux distro
check_forked
# check if we actually support this configuration
if
!
echo
"$support_map"
|
grep
"$(uname -m)-$lsb_dist-$dist_version"
>
/dev/null
;
then
cat
>&2 <<-
'eof'
either your platform is not easily detectable or is not supported by this
installer script.
please visit the following url
for
more
detailed installation instructions:
https:
//docs
.docker.com
/engine/installation/
eof
exit
1
fi
# run setup for each distro accordingly
case
"$lsb_dist"
in
ubuntu|debian|raspbian)
pre_reqs=
"apt-transport-https ca-certificates curl"
if
[
"$lsb_dist"
=
"debian"
];
then
if
[
"$dist_version"
=
"wheezy"
];
then
add_debian_backport_repo
"$dist_version"
fi
# libseccomp2 does not exist for debian jessie main repos for aarch64
if
[
"$(uname -m)"
=
"aarch64"
] && [
"$dist_version"
=
"jessie"
];
then
add_debian_backport_repo
"$dist_version"
fi
fi
# todo: august 31, 2018 delete from here,
if
[
"$lsb_dist"
=
"ubuntu"
] && [
"$dist_version"
=
"artful"
];
then
deprecation_notice
"$lsb_dist $dist_version"
"august 31, 2018"
fi
# todo: august 31, 2018 delete to here,
if
!
command
-
v
gpg >
/dev/null
;
then
pre_reqs=
"$pre_reqs gnupg"
fi
apt_repo=
"deb [arch=$(dpkg --print-architecture)] $download_url/linux/$lsb_dist $dist_version $channel"
(
if
! is_dry_run;
then
set
-x
fi
$sh_c
'apt-get update -qq >/dev/null'
$sh_c
"apt-get install -y -qq $pre_reqs >/dev/null"
$sh_c
"curl -fssl \"$download_url/linux/$lsb_dist/gpg\" | apt-key add -qq - >/dev/null"
$sh_c
"echo \"$apt_repo\" > /etc/apt/sources.list.d/docker.list"
if
[
"$lsb_dist"
=
"debian"
] && [
"$dist_version"
=
"wheezy"
];
then
$sh_c
'sed -i "/deb-src.*download\.docker/d" /etc/apt/sources.list.d/docker.list'
fi
$sh_c
'apt-get update -qq >/dev/null'
)
pkg_version=
""
if
[ ! -z
"$version"
];
then
if
is_dry_run;
then
echo
"# warning: version pinning is not supported in dry_run"
else
# will work for incomplete versions ie (17.12), but may not actually grab the "latest" if in the test channel
pkg_pattern=
"$(echo "
$version
" | sed "
s
/-ce-/
~ce~.*
/g
" | sed "
s
/-/
.*
/g
").*-0~$lsb_dist"
search_command=
"apt-cache madison 'docker-ce' | grep '$pkg_pattern' | head -1 | cut -d' ' -f 4"
pkg_version=
"$($sh_c "
$search_command
")"
echo
"info: searching repository for version '$version'"
echo
"info: $search_command"
if
[ -z
"$pkg_version"
];
then
echo
echo
"error: '$version' not found amongst apt-cache madison results"
echo
exit
1
fi
pkg_version=
"=$pkg_version"
fi
fi
(
if
! is_dry_run;
then
set
-x
fi
$sh_c
"apt-get install -y -qq --no-install-recommends docker-ce$pkg_version >/dev/null"
)
echo_docker_as_nonroot
exit
0
;;
centos|fedora)
yum_repo=
"$download_url/linux/$lsb_dist/$repo_file"
if
! curl -ifs
"$yum_repo"
>
/dev/null
;
then
echo
"error: unable to curl repository file $yum_repo, is it valid?"
exit
1
fi
if
[
"$lsb_dist"
=
"fedora"
];
then
if
[
"$dist_version"
-lt
"26"
];
then
echo
"error: only fedora >=26 are supported"
exit
1
fi
pkg_manager=
"dnf"
config_manager=
"dnf config-manager"
enable_channel_flag=
"--set-enabled"
pre_reqs=
"dnf-plugins-core"
pkg_suffix=
"fc$dist_version"
else
pkg_manager=
"yum"
config_manager=
"yum-config-manager"
enable_channel_flag=
"--enable"
pre_reqs=
"yum-utils"
pkg_suffix=
"el"
fi
(
if
! is_dry_run;
then
set
-x
fi
$sh_c
"$pkg_manager install -y -q $pre_reqs"
$sh_c
"$config_manager --add-repo $yum_repo"
if
[
"$channel"
!=
"stable"
];
then
$sh_c
"$config_manager $enable_channel_flag docker-ce-$channel"
fi
$sh_c
"$pkg_manager makecache"
)
pkg_version=
""
if
[ ! -z
"$version"
];
then
if
is_dry_run;
then
echo
"# warning: version pinning is not supported in dry_run"
else
pkg_pattern=
"$(echo "
$version
" | sed "
s
/-ce-/
\\\\.ce.*
/g
" | sed "
s
/-/
.*
/g
").*$pkg_suffix"
search_command=
"$pkg_manager list --showduplicates 'docker-ce' | grep '$pkg_pattern' | tail -1 | awk '{print \$2}'"
pkg_version=
"$($sh_c "
$search_command
")"
echo
"info: searching repository for version '$version'"
echo
"info: $search_command"
if
[ -z
"$pkg_version"
];
then
echo
echo
"error: '$version' not found amongst $pkg_manager list results"
echo
exit
1
fi
# cut out the epoch and prefix with a '-'
pkg_version=
"-$(echo "
$pkg_version
" | cut -d':' -f 2)"
fi
fi
(
if
! is_dry_run;
then
set
-x
fi
$sh_c
"$pkg_manager install -y -q docker-ce$pkg_version"
)
echo_docker_as_nonroot
exit
0
;;
esac
exit
1
}
# wrapped up in a function so that we have some protection against only getting
# half the file during "curl | sh"
do_install
|
1
2
|
chmod +x getdocker.sh
./getdocker.sh -s docker --mirror aliyun
|
getdocker.sh 文件内容在上个代码区域 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://www.cnblogs.com/wonder4/p/9267509.html 。
最后此篇关于详解如何干净的卸载docker的方法的文章就讲到这里了,如果你想了解更多关于详解如何干净的卸载docker的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我刚刚开始使用 javascript,多年来一直使用 C# 和 OO 语言。 我发现我将我的代码放在这样的文件中, database.js sync.js date.js 而且感觉非常程序化,基本上就
当我运行 git clean --dry-run 时,结果有点像: Would remove an_untracked_file Would remove an_untracked_file_2 Wo
嘿,第一次在 Stack Overflow 上提问,所以请放轻松! 我最近开始开发一个 CMS 驱动的网站,该网站需要多语言功能(12 种语言!)。我过去曾推出过 Expression Engine/
我正在使用可移植类库构建 Android/iOS xamarin 表单应用程序。我正在寻找在 PCL 项目中执行此示例的最佳方法: https://msdn.microsoft.com/en-us/l
我经常听到有关"new"MV* 框架的信息。我修改了 KnockoutJS,创建了一个发票应用程序,但我更喜欢用原始 JavaScript 编写干净、模块化的代码——必要时利用实用程序 API 和其他
我有这段 javascript 代码,当我点击按钮时, Canvas 会被清除。 但是当我移动鼠标时, Canvas 会显示我之前写的内容,而且它不会以空白 Canvas 开始 单击按钮后如何从空白
我有一个带有 5 个内部字符串变量的对象,但其中 3 个是可选的。我可以为每个可能的组合创建一个构造函数,或者我可以调用通用构造函数并向其传递一些空字符串。后一种情况对我来说很有趣,如果我在调用构造函
我是 SQL 的新手。我正在尝试从数据库 (Postgres) 获取数据,如果这些数据无效,则即时替换它们。是否可以使用纯 SQL 来执行此操作?例如,在我的数据库 users 中,我有包含以下数据的
当我清理 TOMCAT 或清理 tomcat 工作目录时,我丢失了保存在 Tomcat 文件夹中的所有文件,我可以禁用此选项吗? 最佳答案 清理 tomcat 工作目录将清除部署到 Tomcat 中的
我正在清理我的一个旧项目。它必须做的一件事是——给定笛卡尔网格系统和网格上的两个正方形,找到所有正方形的列表,连接这两个正方形中心的线将通过这些正方形。 这里的特殊情况是所有起点和终点都被限制在正方形
我现在正在学习如何使用 makefile 并制作了以下 makefile(我在 Windows 上使用 visual studio 命令行编译器) CC = cl CFLAG = /EHsc test
我做了 git checkout master。如果我执行 git status 它会在我的工作目录中显示两个更改的文件,即使我没有碰过它们。这似乎是某种行尾问题。 git reset --hard
在我看来,Makefile 规则大致可以分为“积极”和“消极”规则:“积极”规则创建丢失或更新过时的文件,而“消极”规则删除文件。 为“肯定”规则编写先决条件非常简单:如果目标和先决条件是文件名,ma
我的电脑上安装了 WAMP,我想在其中运行 Drupal 6。 当我安装 Drupal 时,我可以选择激活 Clean URL。 首先,我将 Drupal 安装放在 www 文件夹中,我可以选择启用干
考虑以下堆栈跟踪: In [3]: f.clean() ------------------------------------------------------------------------
我放弃了。我已经阅读了这里的几十个问题,甚至问了我自己的问题,我尝试了很多事情,我只是不知道该怎么做。 我需要使用以下格式创建 url:(NSFW 链接,请注意) http://jbthehot.co
下面的代码是我目前的解决方案。 我试图模仿的一个很好的例子是 FrameworkElement.ActualWidth 属性。您知道 ActualWidth 属性是如何计算和重新分配的,每当 Widt
当然,Ruby 确实有递归,就像任何其他高级编程语言一样。只要递归深度不是太高,这就可以正常工作,但如果是,您将捕获堆栈溢出: #!/usr/bin/ruby2.0 def rec_naive(i)
我找到的最短方法是: n = 5 # Python 2. s = str(n) i = int(s) # Python 3. s = bytes(str(n), "ascii") i = int(s)
这是一种经常出现的情况,对我来说永远不会太容易。我想我会问其他人如何处理它。 想象一下,如果 demo=60 命令行参数的处理是这样完成的: if DemoOptionSpecified() {
我是一名优秀的程序员,十分优秀!