目录
- Docker安装
1.1. Windows
1.2. Ubuntu - Docker容器的使用
2.1. 启动一个新的容器
2.2. 挂起运行的程序
2.3. 重启被挂起的程序
2.4. 终止容器运行
2.5. 重新运行已有容器 - Docker资源的管理
3.1. 管理镜像资源
3.2. 管理容器资源
3.3. 管理网络资源
3.4. 创建自己的镜像 - References
正文
在我电脑上没问题啊!
如果你看懂了上面这句话,说明我们是同道中人。写程序有四种痛:
- 起早摸黑写好了代码,在自己的电脑上运行的好好,但是到了另一台电脑上各种问题层出不穷,软件越复杂依赖越多,头就越大;
- 想干一件大事,辛历尽千辛万苦配置好了环境,换了电脑又要从头再来。或者某天无意对电脑做了小小的改动,环境崩了;
- 想研究个新技术或者学个新技能,仅仅是搭建环境已经竭尽全力,你还不能确定有没有遗漏;
- 头发越来越少。
幸运的是,除了第四点,前三点已经有了解决方案,它就是Docker —— 容器化技术。它可以通过容器来构建、运行和分发应用程序。借用Java的口号就是:一次配置,到处运行。
或许你会问,既然已经有了虚拟机,为什么还要搞出个容器?容器化其实就是一种虚拟化技术,与传统虚拟机相比,它有着轻量、独立、可伸缩、可移植以及灵活等特点。容器直接运行于内核之上,多个容器共用系统的内核,直接通过内核获取系统资源,用多少取多少;而虚拟机则通过一个管理程序来获取宿主系统的资源,运行在其上的程序有着自己的内核,就算你跑的是个Hello World
,它也占用这很大一块资源。拿吃饭打个比方,容器是按点的菜收钱:你点多少菜付多少钱;虚拟机是按人头收钱,只要你人在那,就算你只喝了一口水也照样收你这么多钱。它的区别如图1所示。
当然,我不止一次说过,工具是不分优劣的。某种特定场合下,某个工具更合适,仅此而已。“杀鸡焉用牛刀”,说的也不是那种刀比另一种刀更好。这篇文章的主要目的是介绍Docker的用法。
0. Docker简介
Docker引擎由客户端(Client)、守护进程(Daemon)和注册表(Register)三部分组成,如图2所示。用户通过客户端发送命令来管理Docker的资源,包括镜像、容器、网络等(镜像和容器的关系就类似于程序和进程的诶关系);守护进程接收客户端以及API发过来命令来操纵容器,从而实现镜像、容器、网络等资源的管理;而注册表就是一个仓库,放着各种各样的镜像。因此,使用Docker主要就是使用Docker客户端命令。
Docker客户端的命令,可以大致分为三部分,每个部分又可以接着细分:
- Docker安装;
- Docker容器的使用;
- Docker资源的管理;
1. Docker安装
安装原本说是没有什么好说的,但是由于在Windows 10上Docker和VirtualBox不能共存,因此还是简单介绍介绍下。
1.1. Windows
- 首先,在Windows下,首先要打开
Hyper-V
选项,打开方式为:【控制面板】=>【程序】=>【程序和功能】=>【启用或关闭Windows功能】,然后勾选Hyper-V
及其子选项;
- 接下来,就直接到官网下载安装Windows版本即可。
值得注意的是,Docker和VirtualBox不能共存,因此你只能二选一。安装了Docker后,回头你再想用VirtualBox可能会遇到VT-x is not available (VERR_VMX_NO_VMX)
这个错误,解决方法如下:
- 以管理员身份打开命令提示符;
- 输入
bcdedit
回车,你看到的应该看到hypervisorlaunchtype
的值是auto
; - 输入
bcdedit /set hypervisorlaunchtype off
并回车; - 重启电脑。