关于docker:Docker-实战教程之从入门到提高一

43次阅读

共计 2697 个字符,预计需要花费 7 分钟才能阅读完成。

笔者将本人在云原生开发中的 Kubernetes 工作教训写成了一个系列实战教程:

  • 适宜 Kubernetes 初学者的一些实战练习 (一)
  • 适宜 Kubernetes 初学者的一些实战练习 (二)
  • 适宜 Kubernetes 初学者的一些实战练习 (三)
  • 适宜 Kubernetes 初学者的一些实战练习 (四)
  • 适宜 Kubernetes 初学者的一些实战练习 (五)
  • 适宜 Kubernetes 初学者的一些实战练习 (六)

从本文开始,笔者将开启一个新的系列写作,主题是 Kubernetes 运行的基石之一:Docker 技术。

Docker 是一个开源的利用容器引擎,让开发者能够打包他们的利用以及依赖包到一个可移植的容器中,而后公布到任何风行的 Linux 机器上,也能够实现虚拟化。容器是齐全应用沙箱机制,相互之间不会有任何接口。

这个系列同下面提到的 Kubernetes 实战系列文章一样,分享若干笔者在理论我的项目中的 Docker 应用案例和教训。

练习 1:Ubuntu 零碎里 Docker 的装置步骤

因为 Ubuntu 里 apt 官网库里的 docker 版本比拟低,因而先用上面的命令行卸载旧版本(如果有的话)

sudo apt-get remove docker docker-engine docker-ce docker.io

更新 apt 包索引:

sudo apt-get update

执行下列命令行,使 apt 能够通过 HTTPS 协定去应用存储库:

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

增加 Docker 官网提供的 GPG 密钥:

curl -fsSL https://download.docker.com/l… | sudo apt-key add –

设置 stable 存储库:

sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/l… $(lsb_release -cs) stable”

最初再次更新 apt 包索引:

装置最新版本的 docker-ce:

sudo apt-get install -y docker-ce

装置结束后,能够看到 Docker 服务曾经从 /lib/systemd/system/docker.service 启动了,dockerd 过程 id 为 4921:

命令行 ps -aux 查看过程 id 为 4921 的过程门路:/usr/bin/dockerd -H fd://

应用命令 sudo docker version 能够查看装置 docker 的版本:

应用命令 sudo docker run hello-world,能察看到从近程下载这个测试用的容器:

Pulling from library/hello-world:
而后看到打印消息:Hello from Docker! 阐明 Docker 装置胜利。

练习 2:如何解决 Docker 谬误音讯 request canceled

在本地装置 Kubernetes 时,遇到谬误音讯:

request canceled while waiting for connection(Client.Timeout exceeded while awaiting headers)

这个起因是 Docker 利用没有正确设置代理。在 Mac 上设置代理十分不便:

在 Proxies 面板里,抉择 Manual proxy configuration, 即手动设置。
设置完之后,点击按钮 Apply & Restart

之后在 shell 里应用命令行 docker pull gcr.io/google_containers/pause-amd64:3.1 能够胜利把 Docker 镜像下载到本地。

应用命令 docker images,可能查看到胜利装置的镜像:pause-amd64

练习 3:如何解决 Docker 谬误音讯:please add——insecure-registry

本地装置 Kubernetes 时,遇到如下的谬误音讯:

pleade add –insecure-registry gcr.io to daemon’s arguments

解决方案:点击 Docker 的 Preference 菜单:

点击 Daemon 标签页,在 Insecure registries 里保护记录:

将错误信息里提到的 gcr.io 保护进 Insecure registries, 点击按钮 Apply & Restart, 重新启动 Docker Daemon:

之后谬误音讯隐没。本解决方案在 Mac OS 上测试通过。

练习 4:从 Hello World 例子学习 Docker 镜像的目录存储设计

咱们胜利装置完 Docker 后,执行命令行 sudo docker run hello-world, 如果是第一次执行,则会从近程拉取 hello-world 的镜像到本地,而后运行,显示 hello world.

以 ubuntu 零碎为例,本地镜像存储于目录 /var/lib/docker 文件夹下:

相干目录介绍如下。

  • /var/lib/docker/image/overlay2:存储镜像治理数据的目录,以应用的存储驱动命名,在我的 ubuntu 零碎上,应用的驱动为 overlay2。

其中 repositories.json 文件相当于 SAP UI5 里的 manifest.json, 以及 nodejs 我的项目中的 project.json:

  • /var/lib/docker/image/overlay2/distribution$: 从远端拉到本地的镜像相干元数据。

  • /var/lib/docker/image/overlay2/imagedb: 镜像数据库。

  • /var/lib/docker/image/overlay2/imagedb/content:
    每镜像档次的配置 digest, 也就是镜像 ID。content 文件夹里能看到一个 sha256 子文件夹。

进入该子文件夹,会看到一个以镜像 ID 命名的文件,咱们用命令行 docker images 看到的镜像 ID 的前 12 位就来自这个文件。

  • /var/lib/docker/image/overlay2/layerdb: 镜像每个 layer 的元数据。

进入 sha256,会看到 layer 的 chain ID:

chain ID 内的内容:

总结

本文首先介绍了 Docker 在 Ubuntu 零碎上的装置步骤,而后通过本地装置 Kubernetes 时遇到的两个和 Docker 相干的谬误,分享了理论我的项目中 Docker Proxy 和 Insecure Registry 的设置步骤,最初从 Docker Hello World 级别的入门例子动手,介绍了 Docker 镜像存储目录的设计原理。

正文完
 0