容器技术之二.Docker的安装和常见问题

简介: 容器技术之二.Docker的安装和常见问题

Docker的安装要求

Docker支持在多种平台上使用,包括Mac、Windows、Cloud以及Linux系统上等。由于Docker是基于Ubuntu发布的,所以官方更推荐在Ubuntu上使用Docker,开发者也可以根据自己的实际开发环境选择合适的开发平台。

Docker的安装并非想象中那么随意,在不同的平台上安装Docker必须满足不同的先决条件。由于本书选择在Ubuntu16.04版本上使用Docker,因此这里只针对Ubuntu系统上的Docker安装要求进行说明。

根据Docker官网上的安装说明,想要在Ubuntu上安装Docker需要满足两点要求,一是Ubuntu的版本支持,二是Ubuntu的内核支持,具体如下。

  1. Ubuntu的版本支持
    ● Ubuntu Trusty 14.04 (LTS)
    ● Ubuntu Xenial 16.04 (LTS)
    ● Ubuntu Zesty 17.04
    ● 其他更高的版本
    2.Ubuntu的内核支持
    Docker需要在64位版本的Ubuntu上安装。此外,还需要保证Ubuntu的内核版本不低于3.10(可以通过uname -r命令查看),其中3.10版本和更新维护版也是可以使用的,在低于3.10版本的内核上运行Docker会丢失一部分功能。
    小提示:
    上述版本和内核要求是对Docker全面支持的,也有一些开发者的版本或者系统无法满足条件,可以参考网上一些方法进行额外配置,达到满足Docker使用的需求,当然这种方法是不推荐的。
    在线安装
    由于在线安装方式比较容易,且后期升级维护相对方便,所以对于大多数开发者而言,通常会选择在线安装Docker。这种安装方式需要先设置一个Docker仓库,然后通过该仓库进行安装和后续更新。
    在线安装方式的具体实现步骤如下。
    1.设置Docker仓库
    在新的主机上初次安装Docker CE之前,必须先设置Docker存储库,其步骤如下。
    (1)更新apt的索引包
    $ sudo apt-get update
    需要注意的是,在执行apt更新完成后,终端可能会返回如“Problem executing scripts APT::Update::Post-Invoke-Success ‘if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi’”的子流程错误信息,这个错误是在Ubuntu16.04系统下更新apt时内部出现的问题,并不影响后续Docker的安装和使用,所以这个问题可以直接忽略。
    (2)安装软件包允许apt通过HTTPS方式使用Docker仓库
    $ sudo apt-get install
    apt-transport-https
    ca-certificates
    curl
    software-properties-common
    (3)添加Docker官网的GPG key
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    (4)添加Docker稳定的仓库源(根据Ubuntu镜像版本的不同进行选择安装)
    amd64:
    $ sudo add-apt-repository
    “deb [arch=amd64] https://download.docker.com/linux/ubuntu
    $(lsb_release -cs)
    stable”
    armhf:
    $ sudo add-apt-repository
    “deb [arch=armhf] https://download.docker.com/linux/ubuntu
    $(lsb_release -cs)
    stable”
    s390x:
    $ sudo add-apt-repository
    “deb [arch=s390x] https://download.docker.com/linux/ubuntu
    $(lsb_release -cs)
    stable”
    2.安装Docker CE
    设置好Docker仓库之后,就可以从存储库中安装和更新Docker,其实现步骤如下。
    (1)更新apt的索引包
    $ sudo apt-get update
    (2)安装不同版本的Docker
    在安装Docker时,通常会根据个人情况选择安装不同的版本。为此,Docker提供了两种安装方式,一是安装默认的最新版本的Docker,二是安装指定版本的Docker,具体如下。
    ● 安装最新版本的Docker,具体指令如下。
    $ sudo apt-get install docker-ce
    需要注意的是,执行上述指令后,之前存在的任何版本的Docker都会被替换。
    ● 安装指定版本的Docker,具体指令如下。
    $ sudo apt-get install docker-ce=
    从上述指令可以看出,安装指定版本的Docker时,需要通过“=”将版本字符串附加到安装包后。
    为了更好的选择指定版本的Docker,可以使用apt-cache madison指令查看Docker仓库中的Docker版本信息,具体指令如下。
    $ apt-cache madison docker-ce
    执行上述指令后,就会显示出当前Docker仓库提供的在线的Docker的版本信息,具体效果如图1所示。
    图1 Docker版本信息
    图1列表中的内容依赖于启用的存储库,其中第二列是版本字符串,第三列是存储库名称,用于指示安装包来自哪个存储库。
    (3)安装完成后,可以使用sudo docker run hello-world指令运行测试,具体指令如下。
    $ sudo docker run hello-world
    执行完上述指令后,Docker主机终端显示的结果信息如图2所示。
    离线安装
    在没有网络或者网络条件较差的情况下,我们可以选择离线安装Docker(使用DEB格式的安装文件)。这种安装方式的好处是不依赖于网络,但其缺点是后期使用时需要手动升级和维护,并且每次升级时都需要下载一个新的.deb文件。
    离线安装方式的具体实现步骤如下。
  2. 下载离线安装文件
    通过官方提供的地址https://download.docker.com/linux/ubuntu/dists/,下载安装Docker的.deb文件,访问该地址后的效果如图1所示。
    图1 Docker离线安装文件地址
    在图1中,需要选择自己机器所对应的Ubuntu版本。由于本书使用的是Ubuntu Xenial 16.04 (LTS)版本,所以要单击图中的xenial链接并进入到pool/stable/目录下,然后根据情况选择amd64、armhf或者s390x版本的.deb文件,如图2所示。
    图2 Docker离线安装文件下载目录
  3. 使用离线文件安装Docker
    通过下载的.deb文件进行Docker离线安装非常简单,只需要在Ubuntu系统的终端中执行如下指令。
    $ sudo dpkg -i /path/to/package.deb
    需要注意的是,使用sudo dpkg –i指令安装Docker时,一定要指定读者下载的.deb文件所在地址,例如上面指令表示执行/path/to/路径下的package.deb文件。
    脚本文件安装
    在开发和测试环境下,我们还可以使用Docker官方提供的自动化脚本文件来安装Docker,其中开发环境和测试环境下的脚本文件下载地址分别为https://get.docker.com/https://test.docker.com/
    需要注意的是,这种安装方式是针对某些特定环境提供的,虽然使用此种方式可以快速的在非交互式的开发环境中安装稳定开发版本和测试版本的Docker CE,但是在实际环境下不推荐使用脚本文件来安装Docker,所以这里对于脚本文件的Docker安装就不做具体介绍了,有兴趣的读者可以查看官网介绍,具体参考地址为https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-using-the-convenience-script
    Docker的开机启动和添加当前用户可执行权限
    在Docker安装完成后,开发者可以根据实际需求进行其他一些相关设置,例如Docker开机启动、当前用户可执行Docker等,具体设置方式如下。
    (1)配置Docker开机启动
    $ sudo systemctl enable docker
    (2)配置当前用户执行Docker权限(username是自己的用户名)
    $ sudo usermod -aG docker username
    完成上述配置后,需要重启Ubuntu系统来查看效果。
    安装时的问题及解决方法
    通常情况下,严格按照前面几个小节的安装要求和方式进行Docker的安装,基本就可以正常完成Docker的安装,但在某些特殊情况下,安装过程可能会出现一些问题或者错误,本小节将对容易出现的几个问题给出解决方法。
  4. Docker安装连接中断
    Docker的在线安装方式需要连接外网,所以对网速有一定的要求。在某些限网环境或者用网密集的情况下,很容易出现网速过慢、中断连接的情况,如图1所示。
    图1 Docker安装连接中断
    从图1可以看出,在安装时出现了网络连接速度过慢导致了下载安装失败的问题。
    针对这种网速过慢的情况,建议开发者在网络畅通的情况下重新下载安装,或者使用他人提供的.deb文件进行离线安装,当然也可以通过国内其他平台提供的Docker源进行下载安装。
  5. Docker更新资源失败
    Docker执行更新apt索引包并进行安装的过程中,可能会显示无法获取锁等异常情况,如图2所示。
    图2 Docker更新资源失败
    出现图2中问题的原因可能是由于另外一个程序(上次运行安装或更新没有正常完成)正在使用该程序,从而导致资源被锁不可用。
    这种问题解决的办法其实很简单,只需要在系统终端执行以下两条指令即可。
    $ sudo rm /var/cache/apt/archives/lock
    $ sudo rm /var/lib/dpkg/lock


目录
相关文章
|
8天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
33 2
|
6天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
6天前
|
安全 持续交付 云计算
揭秘云计算中的容器化技术及其优势
揭秘云计算中的容器化技术及其优势
12 1
|
7天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
8天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
8天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
8天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
9天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
10天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理