Docker,系统影分身之术

本文介绍了Docker的安装、容器的使用和资源管理,旨在阐述Docker如何通过容器解决代码跨平台运行的问题。Docker提供了一种轻量级的虚拟化方式,使应用程序可以在不同环境中一致地运行,简化了环境配置和迁移过程。
摘要由CSDN通过智能技术生成

目录

  1. Docker安装
    1.1. Windows
    1.2. Ubuntu
  2. Docker容器的使用
    2.1. 启动一个新的容器
    2.2. 挂起运行的程序
    2.3. 重启被挂起的程序
    2.4. 终止容器运行
    2.5. 重新运行已有容器
  3. Docker资源的管理
    3.1. 管理镜像资源
    3.2. 管理容器资源
    3.3. 管理网络资源
    3.4. 创建自己的镜像
  4. References

正文

在我电脑上没问题啊!

It works on my machine

如果你看懂了上面这句话,说明我们是同道中人。写程序有四种痛:

  1. 起早摸黑写好了代码,在自己的电脑上运行的好好,但是到了另一台电脑上各种问题层出不穷,软件越复杂依赖越多,头就越大;
  2. 想干一件大事,辛历尽千辛万苦配置好了环境,换了电脑又要从头再来。或者某天无意对电脑做了小小的改动,环境崩了;
  3. 想研究个新技术或者学个新技能,仅仅是搭建环境已经竭尽全力,你还不能确定有没有遗漏;
  4. 头发越来越少。

幸运的是,除了第四点,前三点已经有了解决方案,它就是Docker —— 容器化技术。它可以通过容器来构建、运行和分发应用程序。借用Java的口号就是:一次配置,到处运行。

或许你会问,既然已经有了虚拟机,为什么还要搞出个容器?容器化其实就是一种虚拟化技术,与传统虚拟机相比,它有着轻量、独立、可伸缩、可移植以及灵活等特点。容器直接运行于内核之上,多个容器共用系统的内核,直接通过内核获取系统资源,用多少取多少;而虚拟机则通过一个管理程序来获取宿主系统的资源,运行在其上的程序有着自己的内核,就算你跑的是个Hello World,它也占用这很大一块资源。拿吃饭打个比方,容器是按点的菜收钱:你点多少菜付多少钱;虚拟机是按人头收钱,只要你人在那,就算你只喝了一口水也照样收你这么多钱。它的区别如图1所示。

Fig 1 Container vs VM

当然,我不止一次说过,工具是不分优劣的。某种特定场合下,某个工具更合适,仅此而已。“杀鸡焉用牛刀”,说的也不是那种刀比另一种刀更好。这篇文章的主要目的是介绍Docker的用法。

0. Docker简介

Docker引擎由客户端(Client)、守护进程(Daemon)和注册表(Register)三部分组成,如图2所示。用户通过客户端发送命令来管理Docker的资源,包括镜像、容器、网络等(镜像和容器的关系就类似于程序和进程的诶关系);守护进程接收客户端以及API发过来命令来操纵容器,从而实现镜像、容器、网络等资源的管理;而注册表就是一个仓库,放着各种各样的镜像。因此,使用Docker主要就是使用Docker客户端命令。

Fig 2 Docker's architecture

Docker客户端的命令,可以大致分为三部分,每个部分又可以接着细分:

  1. Docker安装;
  2. Docker容器的使用;
  3. Docker资源的管理;

1. Docker安装

安装原本说是没有什么好说的,但是由于在Windows 10上Docker和VirtualBox不能共存,因此还是简单介绍介绍下。

1.1. Windows
  1. 首先,在Windows下,首先要打开Hyper-V选项,打开方式为:【控制面板】=>【程序】=>【程序和功能】=>【启用或关闭Windows功能】,然后勾选Hyper-V及其子选项;

Fig 3 Windows configuration

  1. 接下来,就直接到官网下载安装Windows版本即可。

值得注意的是,Docker和VirtualBox不能共存,因此你只能二选一。安装了Docker后,回头你再想用VirtualBox可能会遇到VT-x is not available (VERR_VMX_NO_VMX)这个错误,解决方法如下:

  1. 以管理员身份打开命令提示符;
  2. 输入bcdedit回车,你看到的应该看到hypervisorlaunchtype的值是auto
  3. 输入bcdedit /set hypervisorlaunchtype off并回车;
  4. 重启电脑。
1.2. Ubuntu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值