Docker-安装

Docker-安装

0x01-Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

0x02-Docker 架构

Docker基本概念

Docker 包括三个基本概念:

  • 镜像(Image)

  • 容器(Container)

  • 仓库(Repository)

理解了这三个概念,就理解了 Docker 的整个生命周期。

1、镜像(image):

类似于虚拟机中的镜像,是一个包含有文件系统的面向 docker 引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个 Ubuntu 镜像就是一个包含 Ubuntu 操作系统环境的模板。

2、容器(container):

镜像和容器的关系,就像是面向对象程序设计中的 “类” 和 “实例” 一样,镜像是静态的定义,容器是镜像运行时的实体。可以将其看作一个简易的Linux系统 以及运行在其中的应用程序。Docker利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。

3、仓库(repository)

仓库就是用来集中存放镜像文件的地方。类似于代码仓库,这里是镜像仓库,分为公有仓库和私有仓库。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用 tag 进行区分,比如 Ubuntu 仓库存放有多个版本(12.04、14.04等)的 Ubuntu 镜像。

目前最用的 Registry 是官方的 Docker Hub,这也是默认的 Registry,拥有大量的高质量的官方镜像 。除此以外,还有 Red Hat 的 Quay.io ;Google 的 Google Container Registry,Kubernetes (K8s) 的镜像使用的就是这个服务;以及代码托管平台 GitHub 推出的 ghcr.io。

Docker基本组成

Docker主要由五部分组成:

  • Docker 镜像(Images)

  • Docker 容器(Container)

  • Docker客户端(Client)

  • Docker主机(Host)

  • Docker Registry

  • Docker Machine

如下图所示:
img

0x03-docker安装

本文以Ubuntu为例

参考: http://www.runoob.com/docker/ubuntu-docker-install.html

环境准备: Linux要求内核3.0以上

查询内核版本命令:

1
uname -r

第一步:卸载旧版本

Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

1
$ sudo apt-get remove docker docker-engine docker.io containerd runc

当前称为 Docker Engine-Community 软件包 docker-ce 。

第二步:更新apt包索引和安装包

1
$ sudo apt-get update

第三步:安装 apt 依赖包

用于通过HTTPS来获取仓库,

1
2
3
4
5
6
$sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

第四步:添加 Docker 的官方 GPG 密钥

1
2
3
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

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

1
2
3
4
5
6
$ sudo apt-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]

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

1
2
3
4
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"

第五步:设置镜像的仓库

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

这里默认是从国外的,不推荐,推荐使用国内的。

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

第六步:更新apt包索引

1
sudo apt-get update

第七步:安装最新版本的Docker Engine和containerd

1
sudo apt-get install docker-ce docker-ce-cli containerd.io # docker-ce 社区版 而ee是企业版

第八步:启动docker

1
sudo systemctl start docker

第九步:查看是否安装成功

1
sudo docker version

第十步:测试 hello-world

1
sudo docker run hello-world

第十一步:阿里云镜像加速

因为默认的 docker 仓库是国外的,所以这里把仓库改为aliyun的。

打开阿里云镜像加速器网页:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

1
2
3
4
5
6
7
8
9
10
11
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!