docker 删除所有未启动的容器_Docker 安装经验与常用命令

dd8839de28504b8eac5e9058ab526b0a.png

文章首先分享 Docker 在 Windows 平台上的安装经验,其次通过逻辑顺序来展现 Docker 常用命令,最后分享一个大小只有 5MB 的 Linux 操作系统。

一、简介

docker 是什么?

我的个人理解:类似于虚拟机,但又与其不同。是容器,运行独立的软件,可以方便地部署。

强烈推荐此三张图片:docker容器与虚拟机有什么区别?

官方描述:我们为您提供了一个完整的集装箱解决方案-无论您是谁,无论您在您集装箱化之旅的哪里。We have a complete container solution for you - no matter who you are and where you are on your containerization journey.

二、安装

以 windows 平台安装为例,mac 基本相同,linux 应该无需我多言。

1. 阅读官方文档

这是最简单最详细最高效的方法。

官方文档: https:// docs.docker.com/docker- for-windows/
内容比较全,建议认真读,很多问题在文档中都有提及。如果看见全英文有点头大..翻译后的效果还是很不错的。

2. 安装包

在 Windows 下安装 Docker,有两种安装包,它们的名字不同,效果也不同。

建议使用新版安装包 Docker Desktop for Windows,而不是旧版安装包 Docker Toolbox。

很多教程,开篇就是安装 Docker Toolbox,在我最初接触 Docker 的时候,那酸爽。而且,官方也并不推荐:Docker Toolbox 适用于较旧的 Mac 和 Windows 系统,建议更新到较新的应用程序。

官方资料:在Windows上安装Docker Toolbox

62525ecbe88d92563ecf5249a19f2894.png
docker toolbox

我相信你已经默默下定决心要使用 Docker Desktop for Windows 了,但是有一个新的问题,请看下一小节 Hyper-V。

3. Hyper-V

Docker Desktop for Windows 很棒,但它需要 Hyper-V 这个虚拟机。

问题在于 Windows 10 家庭版不带 Hyper-V ,只能选择 Docker Toolbox 来安装,利用 Virutal Box 建立 Linux 虚拟机,在虚拟机中安装 Docker。

建议升级系统为专业版,使用 Hyper-V。

系统要求:Windows 10 64位:Pro,Enterprise或Education(1607周年更新,Build 14393或更高版本)
推荐阅读:Windows10家庭版的功能中没有Hyper-V的解决方法

开启 Hyper-V。

win 键,输入“功能”,打开“启用或者关闭 Windows 功能”。勾选“Hyper-V”,确定,系统会重启。

f6a5b70f5be585ec7d1de9cdf9cf13b9.png
hyper-v

4. Docker Desktop for Windows

如果电脑支持 Hyper-V,直接下载 Docker Desktop for Windows 安装包就好了。

安装时 不要勾选:use windows containers instead of linux containers

官方地址:https://www.docker.com/get-started

三、更换镜像源

普遍情况下使用 docker 官方镜像源会非常慢,所以需要更换镜像源地址。

1. 获取加速器地址

阿里云提供了容器镜像服务,在镜像中心->镜像加速器,有加速器地址,这是专属你的地址,如图。

e0fae3db362c63d39c816b5f12c6dd2d.png
阿里云容器镜像服

2. 设置源地址

接下来对 Docker 进行设置。

① 右键小鲸鱼,打开设置,如图。

注:建议使用 Linux containers(默认) ,不要切换为 Windows containers

172ae8ea413064c74656f665ebc3a8aa.png
setting

② 在 Daemon -> Registry mirrors 内填写阿里云提供的地址,然后点击下方的 Apply 应用重启。

填写其他镜像源地址同理。

0d35825d72676417e887e0b85a82fdbf.png
basic

如果点击 Basic 按钮,会切换到 Advanced 模式,区别只是换成 JSON 格式了。

3. 修改了源,依旧超时失败?

阿里云提供加速的只有一部分,并不是 Dokcer hub 所有的源。

如果在阿里云镜像中心->镜像搜索,没有找到该镜像, 就会从 Docker hub 下载,所以会慢。

可以多设置几个镜像源来解决此问题。

这个郁闷我好久!一直以为是哪里出问了。

四、简单体验

打开一个终端。

以下内容是按着逻辑顺序进行的,建议采用相同的顺序去体验。

1. 拉取镜像 pull

我们先用一个小镜像体验一下 docker,只有 1.84kb。

docker pull hello-world

4de90132f940ff90aeb023b1e519e04f.png
pull
这里你也许会困惑,软件有多个版本怎么办,我能不能指定版本?
注意上图中红框内的文字,推荐阅读:Docker命令-docker pull

此外建议再拉取一个 alpine,一个只有 5MB 的 Linux 操作系统,之后的体验会用到。

docker pull alpine

2. 查看镜像 images

来看看我们已有的镜像。

docker images

375a3e23b1805b740a1e7b877e30323d.png
images

3. 创建容器 create / run

接下来就是使用镜像来创建容器。可用一个镜像创建多个容器。

create 命令:创建一个的容器但不启动它,返回容器 ID。

run 命令:创建一个的容器并启动它,只需要在第一次运行时使用。

两者语法一致,区别仅在于是否启动。

建议加上 --name 参数,给容器指定名称,会默认自动生成名称。
//仅创建新容器
docker create hello-world
//创建新容器并指定名称为“myHello”
docker run --name="myHello" hello-world 
//创新新容器并启动它
docker run hello-world

3f52c73a7b9ab6cbbc462a02772703cd.png
create/run

4. 查看所有容器 ps -a

你会发现,出现了多个 hello-world 容器。

container id :容器 ID,这里有一个小技巧:如果使用 ID 对容器操作,不需要输入完整的 ID 内容,你可以只输入一部分,保证其唯一即可。在第9小节会对其进行演示。

command :运行容器时需要使用(可能功能描述不完全)。

status :容器的状态,这里能显示出 createrun 命令的区别。

names :容器名称,方便对容器操作,后续均用名称来操作容器。

docker ps -a

0cd69b3cd3c14bb90e6d789ef7184009.png
ps -a

5. 启动容器 start

容器已经创建完成了,我通过名称来启动它。

因为 myHello 一启动输出文字结束后就会退出,就不启动运行了。
docker start test //启动 alpine 容器

a2fce54ae0765f7630a47a4674f4289e.png
start 01

来了。

启动 alpine 的 test 容器后,就直接退出了?

经过对比,验证操作,我发现了一点不同:创建 test 容器时,使用的是 create 命令。难道必须初次启动?

于是我使用 run 命令重试等等方式,依旧失败

055d02b97651643222314b4def6219ab.png
start 02

最后是这样解决的:

图中为 test3 是因为没删掉失败的 testtest2,而代码中是先删除 testtest2,再用成功的方法新建 test ,便于后文的操作。
此外测试 ubuntu 也是同样的情况,同样的解决方案。
docker run -it --name="test" alpine //新建 test,后续会解释“-it”
docker start test //启动 test 容器

3276f8cb0ef06b651250ebafd403c2f0.png
start 03

6. 查看运行容器 ps

想看看我们是否已经启动成功?前文已使用多次此命令。

docker ps //列出正在运行的容器
docker ps -a //列出所有容器,包括未运行的
docker ps -a -q //静默模式,仅显示所有容器ID

4cadd8e9d0424f5e700fb64a8da15e39.png
ps

7. 执行命令 exec

容器已经成功运行了, 要怎么进入容器呢?

exec 是在运行的容器中执行命令。

其中-itexec 命令的参数 -i-t 的缩写,这两个参数在第5小节start 最后部分出现过,前者是保持 stdin(标准输入)打开,后者是打开一个伪终端,两个一般是在一起使用的。

test 是容器名称,/bin/sh 是该容器的 command 的内容。

执行后就进入容器内了,内部的具体操作请看第五章alpine。
docker exec -it test /bin/sh
// ctrl+D 退出

e07d9b4f80f9a8de6a3ecaa27b706126.png
exec

8. 暂停关闭容器 pause / stop

让容器休息一下。注意图中 Status 状态的变化。

docker pause test //暂停 test 容器
docker unpause test //恢复 myHello
docker restart test //重启 myHello 容器
docker stop test //停止运行 test 容器

docker stop $(docker ps -a -q) //停止所有容器

c297cde0b225086a3fbe9271824e1545.png
pause/stop

9. 删除容器 rm

与容器挥手说再见。注意每个删除命令的不同之处~

顺便演示在第4小节 start 中说的小技巧:名称、部分ID。
// 删除 myHello 容器
docker rm myHello
// 删除所有容器
docker rm $(docker ps -a -q)

cc67611f899f331e161ea81595573401.png
rm

10. 删除镜像 rmi

比删除镜像多了一个 iimage 的含义。

docker rmi hello-world

d08c0135c366830ed5b7f27eb82f6bc3.png
rmi

11. 帮助 --help

所有命令都可以通过 --help 参数来查看手册。

docker --help
docker pull --help
...

d28fd3dad136b2b79ef973d3eb021378.png
help

五、Alpine

这是一个只有 5MB 的 Linux 容器镜像,非常适合作为基础镜像,建议了解,但大部分内容与 Docker 无关。

1. 包管理器 apk

它的包管理器叫做 apk,部分会在下面的内容详细说明。

// 基础命令
apk update //更新最新本地镜像源
apk upgrade //升级软件
apk add //新增软件
apk search //查找所以可用软件包
apk info //列出所有已安装的软件包

f506c565e6c86f81764d722548828039.png
apk

2. 换源

依旧是因为速度原因,不过 alpine 的源方便一些。

① 打开源文件:

vi /etc/apk/repositories

② 增加两行内容,如图:

这是 vi 编辑器,vim 是它的升级版本。
界面按 i 后才可以输入文字,退出的时候按 ESC ,再输入 :wq 保存退出。 # 是注释。
// 这里的 v3.9 版本号以原内容为标准。目前采用的是阿里源,添加其他源同理。
http://mirrors.aliyun.com/alpine/v3.9/main
http://mirrors.aliyun.com/alpine/v3.9/community

e127a94e6b2feb76faca8b9184879c8f.png
repositories

③ 更新源,如图:

可以看出注释掉了最后一行,所以更新后就没有此源了。
apk update //更新源

8dfce99bc28e37b71fbcd7e8890f5eae.png
update

3. 安装软件

① 首先查找包,用 node 来测试,如图。

可以在网站上查到所有的包。
阿里云地址: http:// mirrors.aliyun.com/alpi ne
官方地址: https:// pkgs.alpinelinux.org/pa ckages
apk search //查找所有可用软件包
apk search -v nodejs //以软件包名查找软件包

36f254fadcdcd00051d7cd99f7cef7b9.png
search

② 安装软件,如图。

apk add nodejs //安装软件,这里的node没有自带npm,需要另行下载。

8b920d8da728a370c9f79f2c4603c9d8.png
add

此外还有用 Dockerfile 来定制镜像,感兴趣的朋友可以去了解了解。

六、最后

查了查日记,了解 Docker 差不多是在 18 年 5 月份,之后就记录了安装很麻烦哈哈哈。

现在入门了些,再慢慢研究,以后使用、部署程序就会很方便了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值