python docker快速入门2安装

简介

本章中,您将学习如何安装Docker。并学习Docker术语,如映像、容器、Dockerfiles和 Docker组件。您还将使用一些简单的Docker命令来工作。用于创建、运行和停止Docker容器。

安装

Docker公司提供了社区版和企业版。的Docker平台。企业版的功能与Docker平台相同。社区版,但它提供了额外的支持和认证的。容器、插件和基础设施。对于大多数一般的开发和生产使用,社区版 合适的。

在Windows上安装Docker 在Windows上安装Docker之前,你需要满足一定的先决条件。这些包括以下内容。

  • Hyper-V支持 - 硬件虚拟化支持,通常在系统BIOS中启用 - 只有64位版本的Windows 10(Pro/Education/)才能安装。这看起来像一个虚拟化设置需要,而你在上一章了解到,Docker并不是虚拟化。

那么为什么Docker for Windows需要虚拟化所需的功能呢?简短的回答是,Docker依赖于众多的功能,比如命名空间和cgroups,而这些在Windows上是不可用的。为了绕过这一限制,Docker for Windows创建了一个运行Linux内核的轻量级Hyper-V容器。

在撰写本文时,Docker包括对Native容器的实验性支持,允许在不需要Hyper-V的情况下创建容器。

<u>https://hub.docker.com/editions/community/docker-ce-desktop-windows</u>

<u>https://hub.docker.com/editions/community/docker-ce-desktop-mac</u>

<u>https://www.docker.com/community-edition</u>

sudo apt install docker.io

docker run --rm hello-world

参考资料

基本概念

现在我们已经安装并运行了Docker,让我们来了解与Docker相关的不同术语。

Layer: Image是应用于Docker镜像的修改,由Docker文件中的指令来表示。通常情况下,当一个基础镜像被改变时,就会创建一个图层--例如,考虑一个看起来像这样的Dockerfile。

FROM ubuntu

Run mkdir /tmp/logs

RUN apt-get install vim

RUN apt-get install htop

现在在这种情况下,Docker会将Ubuntu镜像作为基础镜像,并添加三个层。

  • 一个层用于创建/tmp/logs - 另一个层安装vim - 第三个层安装htop。

当Docker构建镜像时,每个层都会叠加在下一个层上,并使用联合文件系统合并成一个层。层使用sha256哈希值进行唯一识别。这使其易于重用和缓存。当Docker扫描基础镜像时,它会扫描构成镜像的所有层的ID,并开始下载层。如果某个层存在于本地缓存中,它就会跳过下载缓存的镜像。

Docker Image:Docker image是一个只读的模板,它构成了你的应用程序的基础。一个Docker镜像从一个基础镜像开始--通常选择的是大家最熟悉的操作系统的镜像,比如Ubuntu。在这个镜像之上,我们可以添加构建我们的应用栈,在需要的时候添加包。

有许多预构建的镜像,用于一些最常见的应用程序堆栈,如Django、PHP-FPM与nginx。

等。

我们可以从相关的Dockerfile中构建自己的镜像,然后将构建好的镜像发布到注册表中。我们将在以后的章节中深入研究Dockerfile。现在,将Docker镜像视为最终的可执行包,它包含了运行应用程序的一切。这包括源代码、所需的库和任何依赖关系。

Docker容器:Docker镜像在主机中运行时,会生成一个有自己命名空间的进程,称为Docker容器。Docker镜像与容器的主要区别在于,Docker镜像存在一个薄薄的读/写的容器。。对容器的文件系统的任何改变,如写入新文件或修改现有文件,都是在这个可写容器层上完成的,而不是在下层。

绑定挂载和卷:我们在前面提到,当一个容器运行时,对容器的任何更改都存在于文件系统的容器层中。当一个容器被杀死时,这些更改就会丢失,数据也无法再访问。即使在容器运行时,从容器中获取数据也不是很直接。此外,向容器的可写层写入数据需要一个存储驱动来管理文件系统。存储驱动在文件系统上提供了一个可用来持久化变化的抽象,这种抽象往往会降低性能。

基于这些原因,Docker提供了不同的方式来从Docker主机将数据挂载到容器中:卷、绑定挂载和tmpfs卷。tmpfs卷只存储在主机系统的内存中,而绑定挂载和卷则存储在主机文件系统中。

Docker Registry:我们在前面提到过,你可以利用常见应用栈的现有镜像--你有没有想过这些镜像在哪里,以及如何在构建应用时使用它们?Docker Registry是一个可以存储Docker镜像的地方,这样就可以将它们作为基础来使用

的应用栈。一些常见的Docker注册中心的例子包括以下几个。

• Docker Hub

• Google Container Registry

• Amazon Elastic Container Registry

• JFrog Artifactory

Dockerfile:Dockerfile是一组告诉Docker如何构建镜像的指令。

一个典型的Dockerfile由以下内容组成。

  • 一个FROM指令,告诉Docker什么是基础镜像 - 一个ENV指令,传递一个环境变量 - 一个RUN指令,运行一些shell命令(例如,基础镜像中不可用的依赖安装的程序)。

  • 一个CMD或一个ENTRYPOINT指令,告诉Docker在容器启动时运行哪个可执行文件 正如你所看到的,Dockerfile指令集的语法清晰而简单,这使得它很容易理解。我们将在本书后面对Dockerfiles进行深入的研究。

Docker Engine:Docker Engine是Docker的核心部分。Docker Engine是一个客户端-服务器应用程序,它为构建和管理Docker镜像、Docker容器等提供平台、运行时和工具。

Docker Engine提供了以下内容。

• Docker daemon

• Docker CLI

• Docker API-

Docker Daemon - 。

Docker守护进程是一个在主机后台运行的服务,处理大部分Docker命令的重任。

守护进程监听用于创建和管理Docker对象(如容器)的API请求。

Docker守护进程还可以与其他守护进程对话,以管理和监控Docker容器。守护进程间通信的一些例子包括用于容器指标监控的通信Datadog和用于容器安全监控的Aqua。

Docker CLI是你与Docker交互的主要方式。Docker CLI公开了一组你可以提供的命令。Docker CLI将请求转发到Docker daemon,然后由Docker daemon执行必要的工作。

build

pull

run

exec

虽然Docker CLI包括种类繁多的命令和子命令,但我们在本书中最常用的命令如前所述。

<u>https://docs.docker.com/engine/reference/commandline/cli/</u>

在任何时候,给一个命令添加帮助,都会显示出该命令所需的文档。例如,如果你不太确定从哪里开始使用Docker CLI,你可以键入以下内容。

docker help

docker help pull

Docker API

Docker还提供了一个与Docker引擎交互的API。如果需要在应用程序中创建或管理容器,这一点特别有用。几乎所有Docker CLI支持的操作都可以通过API来完成。

最简单的方法是使用curl发送API请求来启动Docker API。对于Windows Docker主机,我们可以通过TCP端点到达。

curl <u>http://localhost:2375/images/json</u>

curl --unix-socket /var/run/docker.sock -X POST <u>http://images/json</u>

Docker Compose是一个定义和运行多容器应用程序的工具。就像Docker允许你为你的应用程序构建一个镜像并在你的容器中运行一样,Compose使用相同的镜像与定义文件(称为compose文件)相结合来构建。启动和运行多容器应用程序,包括依赖和链接容器。

Docker Compose最常见的用例是运行应用程序及其依赖的服务(如数据库和缓存提供商)。

以与运行单个容器应用同样简单、精简的方式。

Docker Machine是一个用于在多个虚拟主机上安装Docker引擎,然后管理主机的工具。Docker Machine允许你在本地以及远程系统上创建Docker主机,包括在Amazon Web Services、DigitalOcean和Microsoft Azure等云平台上。

使用Docker镜像 让我们来看看可用的Docker镜像。要做到这一点,请键入以下命令。

docker image ls 这是本地可用镜像的列表。

下面是有些常用的命令,可以自己实践体验下。

docker image inspect hello-world

docker pull nginx

docker pull nginx:1.12-alpine-perl

docker pull docker-private.registry:1337/nginx

docker login docker-private.registry:1337

docker run -p 80:80 nginx

docker image inspect nginx | jq .[].Config.ExposedPorts

docker ps

docker ps -a

-n required-name

docker stop <container-id>

docker kill 3ed1222964de

docker rm <container-id>

docker image ls

docker rmi 3f8a4339aadd

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348