Docker学习之路1:Docker简介与安装

Docker简介与基本概念

这部分只介绍关键的概念,强烈建议阅读参考[2]文章

为了更方便地对程序进行迁移、部署以及交付,通常要用到虚拟化技术。

比如我在A服务器上运行成功的代码,在B服务器上可能就报错,因为环境的差异,这常常令程序员们头疼并需要耗费大量时间重新搭建所需环境。而虚拟化的技术可以提供一个好的方案,比如可以搭建好一套适配的虚拟机,然后就可以很方便的迁移了。虚拟机技术见下图:

Docker作为一种新兴的虚拟化方式,跟传统的虚拟化方式相比具有众多的优势。

Docker 使用 Google 公司推出的Go语言进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS类的 Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。容器技术见下图:

是不是看的有点晕,可以参考链接[2] 将其类比于集装箱的例子
注意,容器是一种通用技术,docker只是其中的一种实现。

三个基本概念

详见:https://vuepress.mirror.docker-practice.com/basic_concept/

  1. Docker 镜像 (分层存储)
    Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
  2. Docker 容器 (容器存储层)
    镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  3. Docker 仓库
    镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

Docker的优点

  1. 更高效的利用系统资源
    由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用
  2. 更快速的启动时间
    传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。
  3. 一致的运行环境
    Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。
  4. 一致的运行环境
    使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署。
  5. 更轻松的迁移
    由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行。
  6. 更轻松的维护和扩展
    Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。

Docker安装

这里以Ubuntu 16.04 LTS为例
其他系统与版本安装见:https://vuepress.mirror.docker-practice.com/install/

主要有两种方法,一种是使用apt进行下载,另一种是直接使用官方提供的脚本下载,两种方法都会介绍,并且我都试了,但是使用脚本下载没有成功。

apt 安装

① 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

$ sudo apt-get update

$ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

② 为了确认所下载软件包的合法性,需要添加软件源的GPG密钥

$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
 | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

③ 然后,我们需要向 sources.list 中添加 Docker 软件源

$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

④ 安装Docker

$ sudo apt-get update

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

使用脚本自动安装

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。

这个我失败了

建立docker用户组

默认情况下,docker 命令会使用 Unix socket (opens new window)与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

$USER为需要使用Docker的用户名

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

$ docker run --rm hello-world

若输出以下内容,则表示安装成功
在这里插入图片描述

参考

[1] DataWhale:Docker简介
https://github.com/datawhalechina/team-learning-program/blob/master/Docker/01%20Docker%E7%AE%80%E4%BB%8B.md

[2] 知乎:什么是Docker?看这一篇干货文章就够了
https://zhuanlan.zhihu.com/p/187505981

[3] Ubuntu安装Docker
https://vuepress.mirror.docker-practice.com/install/ubuntu/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值