一、环境配置的难题

软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来?

用户必须保证两件事:操作系统的设置,各种库和组件的安装。只有它们都正确,软件才能运行。举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量。
如果某些老旧的模块与当前环境不兼容,那就麻烦了。

开发者常常会说:”它在我的机器可以跑了”,言下之意就是,其他机器很可能跑不了。

环境配置如此麻烦,换一台机器,就要重来一次,旷日费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。

二、虚拟机

虚拟机就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。
虽然用户可以通过虚拟机还原软件的原始环境。但是,这个方案有几个缺点。

(1)资源占用多
虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有 1MB,虚拟机依然需要几百 MB 的内存才能运行。
(2)冗余步骤多
虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。
(3)启动慢
启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行。

0、环境准备

docker 的安装对操作系统的内核配置要求较高所有首先我们需要确定你的系统是64位的
你需要64位的ubuntu操作系统 Cosmic 18.10、Bionic 18.04 (LTS)、Xenial 16.04 (LTS)其中之一。
docker支持的架构为:x86_64(oramd64),armhf,arm64,s390x(IBM Z), andppc64le(IBM Power)。

以下x86_64就是64位的

  1. root@1ba628dd9cd1:~# uname -r
  2. 3.10.0-1062.18.1.el7.x86_64

image.png
查看ubuntu系统是32位的还是64位的:getconf LONG_BIT 这个命令可以直接输出具体的系统内核版本

  1. root@1ba628dd9cd1:~# getconf LONG_BIT
  2. 64

image.png
查看系统信息:lsb_release -a

  1. root@1ba628dd9cd1:~# lsb_release -a
  2. No LSB modules are available.
  3. Distributor ID: Ubuntu
  4. Description: Ubuntu 20.04.2 LTS
  5. Release: 20.04
  6. Codename: focal

image.png

1、安装

1.1 卸载旧版本
旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

  1. root@1ba628dd9cd1:~# apt-get remove docker docker-engine docker.io containerd runc
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. E: Unable to locate package docker-engine

image.png
/var/lib/docker的内容,包括镜像、容器、卷和网络,可以保留也可以删除。
执行之后,输入docker —version仍能看到docker版本
1.2 docker —version

  1. root@1ba628dd9cd1:~# docker --version
  2. -bash: docker: command not found

image.png
如果出现以上的内容就证明卸载完成了、如果你还是出现了版本号那么证明以上方法不足以将其卸载干净、可以使用下面的方法进行卸载
用另一种方式:
sudo apt-get purge docker
sudo apt-get purge docker-ce
sudo apt-get remove -y docker-*
sudo rm-rf /var/lib/docker(慎重:这是镜像和容器的默认存储位置,不要误删)
(apt-get remove 会删除软件包而保留软件的配置文件apt-get purge 会同时清除软件包和软件的配置文件)

1.3 使用存储库进行安装
apt-get update 更新下载源列表

  1. root@1ba628dd9cd1:~# apt-get update
  2. Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
  3. Get:2 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
  4. Get:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
  5. Get:4 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [716 kB]
  6. Get:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
  7. Get:6 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [29.8 kB]
  8. Get:7 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1245 kB]
  9. Get:8 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [274 kB]
  10. Get:9 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [829 kB]
  11. Get:10 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [973 kB]
  12. Get:11 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [27.6 kB]
  13. Get:12 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [299 kB]
  14. Fetched 4722 kB in 4s (1331 kB/s)
  15. Reading package lists... Done

image.png
允许apt通过https使用repository安装软件包

  1. root@1ba628dd9cd1:~# apt-get install \
  2. > apt-transport-https \
  3. > ca-certificates \
  4. > curl \
  5. > gnupg-agent \
  6. > software-properties-common

添加Docker官方GPG key、我们使用阿里云的源地址

  1. root@1ba628dd9cd1:~# curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|apt-key add -
  2. OK

image.png

验证key的指纹

  1. root@1ba628dd9cd1:~# apt-key fingerprint 0EBFCD88
  2. pub rsa4096 2017-02-22 [SCEA]
  3. 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
  4. uid [ unknown] Docker Release (CE deb) <docker@docker.com>
  5. sub rsa4096 2017-02-22 [S]

出现下面内容为正常情况
image.png

5)添加稳定版repository
国内阿里云版:

  1. root@1ba628dd9cd1:~# add-apt-repository \
  2. > "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  3. > $(lsb_release -cs) \
  4. > stable"
  5. Get:1 https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal InRelease [36.2 kB]
  6. Get:2 https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 Packages [9631 B]
  7. Hit:3 http://security.ubuntu.com/ubuntu focal-security InRelease
  8. Hit:4 http://archive.ubuntu.com/ubuntu focal InRelease
  9. Hit:5 http://archive.ubuntu.com/ubuntu focal-updates InRelease
  10. Hit:6 http://archive.ubuntu.com/ubuntu focal-backports InRelease
  11. Fetched 45.8 kB in 2s (28.7 kB/s)
  12. Reading package lists... Done

5)我们再次更新下下载源 sudo apt-get update
6)安装最新版本的docker ce和containerd
(如果您启用了多个Docker存储库,则在apt-get install或apt-get update命令中未指定版本的情况下安装或更新将始终安装尽可能高的版本)

  1. root@1ba628dd9cd1:~# apt-get install docker-ce docker-ce-cli containerd.io

安装最新版本的 ce

  1. apt-get install docker-ce

image.png验证docker 的版本

  1. root@1ba628dd9cd1:~# docker --version
  2. Docker version 20.10.6, build 370c289

出现版本号证明已经成功安装了docker
启动docker

  1. service docker restart

设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)

  1. sudo systemctl enable docker
  2. sudo systemctl start docker