docker是什么

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:
DockerClient 客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器 

说了这么多, Docker 到底是个啥子呢?我们在理解 Docker 之前,首先得先区分清楚两个概念:容器虚拟机

可能很多朋友都用过虚拟机,而对容器这个概念比较的陌生——简单来说,可以理解为:相较于VM,docker是轻量级的虚拟化技术,却有着更强大的性能

虚拟机(VM):

  • 我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件。
  • 每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。
  • 每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。

容器(docker/Container):

  • 容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
  • 容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
  • 容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。
  • 通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。
  • 容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。
  • 容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。

一张图展示Docker和VM的区别:

左图为dokcer,右图为VM
docker和vm的比较

介绍完理论,实际操作一下⑧

docker分社区版和企业版,这里我们选择社区版(因为企业版要钱)

官方文档中各大环境的安装说明: https://docs.docker.com/install/

这里我们以Ubuntu为例:

正常的话用包管理器一句话就装完了:apt install docker apt install docker.io

遇到小问题的话可以试试这个:

使用 Docker 仓库进行安装:

在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker 。

设置仓库

更新 apt 包索引。

sudo apt-get update

安装 apt 依赖包,用于通过HTTPS来获取仓库:

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common


 添加 Docker 的官方 GPG 密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

sudoapt-key fingerprint 0EBFCD88

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb)<docker@docker.com>
sub   rsa4096 2017-02-22 [S]


使用以下指令设置稳定版仓库

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

安装 Docker Engine-Community

更新 apt 包索引。

sudo apt-get update

安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:

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

要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。列出您的仓库中可用的版本: apt-cache madison docker-ce

  •   docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
  •   docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
  •   docker-ce | 18.06.1~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
  •   docker-ce | 18.06.0~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
  •   ...

使用第二列中的版本字符串安装特定版本,例如 5:18.09.1~3-0~ubuntu-xenial。

sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

测试 Docker 是否安装成功,输入 sudo docker run hello-world ,打印出以下信息则安装成功:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete                                                                                                                                  Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

或者直接查看版本号

docker -v

得到这种显示则说明安装成功:

Docker version 19.03.6, build 369ce74a3c

其他常用命令可以参考这篇博客:docker常用命令

运行docker时发现权限不足可以康康这个:不输入sudo运行docker


"May there be enough clouds, to make a beautiful sunset."