Ubuntu下如何安装与使用Docker

97次阅读
没有评论

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

这篇“Ubuntu 下如何安装与使用 Docker”文章的知识点大部分人都不太理解,所以丸趣 TV 小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ubuntu 下如何安装与使用 Docker”文章吧。

先决条件

要遵循本教程,您需要以下内容:

64 位 ubuntu 16.04 droplet

使用 sudo 特权的非 root 用户初始设置指南的 ubuntu 16.04 将介绍如何设置起来。)

注意:docker 需要的 ubuntu 64 位版本,以及一个内核版本等于或大于 3.10 以上。

默认的 64 位 ubuntu 16.04 droplet 满足这些要求。

本教程中的所有命令都应以非 root 用户身份运行。如果需要该命令的 root 访问权限,它会在前面加 sudo。初始设置指南的 ubuntu 16.04 解释了如何添加用户,并给他们 sudo 访问。

第 1 步 – 安装 docker

官方 ubuntu 16.04 存储库中提供的 docker 安装包可能不是最新版本。要获得最新和最好的版本,请从官方 docker 仓库安装 docker。本节向您展示如何做到这一点。

但首先,让我们更新包数据库:

sudo apt-get update

现在让我们安装 docker。将官方 docker 资源库的 gpg 密钥添加到系统:

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118e89f3a912897c070adbf76221572c52609d

将 docker 存储库添加到 apt 源:

echo  deb https://apt.dockerproject.org/repo ubuntu-xenial main  | sudo tee /etc/apt/sources.list.d/docker.list

使用新添加的软件包中的 docker 软件包更新软件包数据库:

sudo apt-get update

确保你将要从 docker repo 而不是默认的 ubuntu 16.04 repo 安装:

apt-cache policy docker-engine

您应该看到类似以下的输出:

apt-cache 策略的输出 docker-engine

docker-engine:
 installed: (none)
 candidate: 1.11.1-0~xenial
 version table:
 1.11.1-0~xenial 500
 500 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 packages
 1.11.0-0~xenial 500
 500 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 packages

请注意,docker-engine 没有安装,但安装的候选人是从 docker 库中的 ubuntu 16.04。该 docker-engine 版本号可能会不同。

最后,安装 docker:

sudo apt-get install -y docker-engine

现在应该安装 docker,启动守护进程,启动进程启动。检查它是否正在运行:

sudo systemctl status docker

输出应类似于以下内容,显示服务是活动的并正在运行:

output
● docker.service - docker application container engine
 loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
 active: active (running) since sun 2016-05-01 06:53:52 cdt; 1 weeks 3 days ago
 docs: https://docs.docker.com
 main pid: 749 (docker)

安装 docker 现在给你不只是 docker 服务(守护进程),而且 docker 命令行实用程序或 docker 客户端。我们将探讨如何使用 docker 在本教程后面的命令。

第 2 步 – 执行没有 sudo 的 docker 命令(可选)

默认情况下,在运行 docker 命令需要 root 权限 - 也就是说,你必须前缀命令 sudo。它也可以由搬运工组,它是在安装 docker 期间自动创建中的用户运行。如果你尝试运行 docker 没有用前缀它命令 sudo 或不 docker 组之中,你会得到这样的输出:

output
docker: cannot connect to the docker daemon. is the docker daemon running on this host?.
see  docker run --help .

如果你想避免打字 sudo 只要您运行的 docker 命令,您的用户名添加到 docker 组:

sudo usermod -ag docker $(whoami)

您将需要注销 droplet 并作为同一用户重新启用以启用此更改。

如果需要添加用户到 docker,你没有作为登录组,明确宣布用户名使用:

sudo usermod -ag docker username

本文的其余部分假定您运行的 docker 作为 docker 的用户组中的用户命令。如果您选择不,请前面加上命令 sudo。

第 3 步 – 使用 docker 命令

随着 docker 的安装和工作,现在是时候熟悉命令行实用程序。使用 docker 由它传递的选项和命令后跟参数的链条。语法采用以下形式:

docker [option] [command] [arguments]

要查看所有可用的子命令,请键入:

docker

从 docker 1.11.1 开始,可用子命令的完整列表包括:

output
 attach attach to a running container
 build build an image from a dockerfile
 commit create a new image from a container s changes
 cp copy files/folders between a container and the local filesystem
 create create a new container
 diff inspect changes on a container s filesystem
 events get real time events from the server
 exec run a command in a running container
 export export a container s filesystem as a tar archive
 history show the history of an image
 images list images
 import import the contents from a tarball to create a filesystem image
 info display system-wide information
 inspect return low-level information on a container or image
 kill kill a running container
 load load an image from a tar archive or stdin
 login log in to a docker registry
 logout log out from a docker registry
 logs fetch the logs of a container
 network manage docker networks
 pause pause all processes within a container
 port list port mappings or a specific mapping for the container
 ps list containers
 pull pull an image or a repository from a registry
 push push an image or a repository to a registry
 rename rename a container
 restart restart a container
 rm remove one or more containers
 rmi remove one or more images
 run run a command in a new container
 save save one or more images to a tar archive
 search search the docker hub for images
 start start one or more stopped containers
 stats display a live stream of container(s) resource usage statistics
 stop stop a running container
 tag tag an image into a repository
 top display the running processes of a container
 unpause unpause all processes within a container
 update update configuration of one or more containers
 version show the docker version information
 volume manage docker volumes
 wait block until a container stops, then print its exit code

要查看特定命令可用的开关,请键入:

docker docker-subcommand --help

要查看有关 docker 的系统范围的信息,请使用:

docker info

第 4 步 – 使用 docker 镜像

docker 容器是从 docker 镜像运行的。默认情况下,它从 docker hub(一个由 docker 项目管理的 docker 注册中心)提取这些镜像。任何人都可以在 docker hub 上构建和托管 docker 镜像,所以大多数应用程序和 linux 发行版都需要运行 docker 容器,这些镜像托管在 docker hub 上。

要检查是否可以从 docker hub 访问和下载图像,请键入:

docker run hello-world

输出,应该包括以下内容,应该表明 docker 正常工作:

output
hello from docker.
this message shows that your installation appears to be working correctly.
...

您可以通过搜索有关 docker hub 可用图像 docker 用命令 search 子命令。例如,要搜索 ubuntu 映像,请键入:

docker search ubuntu

该脚本将抓取 docker hub 并返回其名称与搜索字符串匹配的所有图像的列表。在这种情况下,输出将类似于:

output
name description stars official automated
ubuntu ubuntu is a debian-based linux operating s... 3808 [ok] 
ubuntu-upstart upstart is an event-based replacement for ... 61 [ok] 
torusware/speedus-ubuntu always updated official ubuntu docker imag... 25 [ok]
rastasheep/ubuntu-sshd dockerized ssh service, built on top of of... 24 [ok]
ubuntu-debootstrap debootstrap --variant=minbase --components... 23 [ok] 
nickistre/ubuntu-lamp lamp server on ubuntu 6 [ok]
nickistre/ubuntu-lamp-wordpress lamp on ubuntu with wp-cli installed 5 [ok]
nuagebec/ubuntu simple always updated ubuntu docker images... 4 [ok]
nimmis/ubuntu this is a docker images different lts vers... 4 [ok]
maxexcloo/ubuntu docker base image built on ubuntu with sup... 2 [ok]
admiringworm/ubuntu base ubuntu images based on the official u... 1 [ok]
...

在正式列,ok 表示建造和项目背后的公司支持的图像。一旦你确定你想使用的图像,你可以用它下载到你的电脑 pull 子,就像这样:

docker pull ubuntu

图像下载后,您可以使用下载的图像与当时运行的容器 run 命令。如果图像尚未下载时,docker 与执行 run 命令后,docker 客户端将首先下载的图像,然后使用它运行一个容器:

docker run ubuntu

要查看已下载到您的计算机的图像,请键入:

docker images

输出应类似于以下内容:

output
repository tag image id created size
ubuntu latest c5f1cf30c96b 7 days ago 120.8 mb
hello-world latest 94df4f0ce8a4 2 weeks ago 967 b

正如您将在本教程中,你用来运行容器的图像可以修改和用于产生新的图像,然后可以上传后面看到(推是技术术语),以 docker 集线器或其他 docker 登记。

第 5 步 – 运行 docker 容器

该 hello-world 你在前面跑容器是运行和退出,散发出测试消息后的容器的一个例子。然而,容器可以比这更有用,它们可以是交互式的。毕竟,它们类似于虚拟机,只是更加资源友好。

例如,让我们使用 ubuntu 的最新镜像运行一个容器。- i 和 - t 参数的组合为您提供了交互 shell 访问到容器中:

docker run -it ubuntu

您的命令提示符应该更改以反映您现在在容器内工作的事实,并应采取以下形式:

output
root@d9b100f2f636:/#

重要提示:请注意,在命令提示符容器 id。在上面的例子中,它是 d9b100f2f636。

现在你可以在容器中运行任何命令。例如,让我们更新容器中的包数据库。无需前缀任何命令 sudo,因为你具有 root 权限的容器内工作:

apt-get update

然后在其中安装任何应用程序。让我们安装 nodejs,例如。

apt-get install -y nodejs

第 6 步 – 将容器中的更改提交到 docker 镜像

默认情况下 docker 文件系统是临时的。如果启动 docker 镜像,您可以像虚拟机一样创建,修改和删除文件。但是,如果您停止容器并重新启动,所有更改将会丢失:之前删除的所有文件现在都将恢复,并且您创建的所有新文件或修改都不会出现。这是因为 docker 镜像比标准虚拟化世界中的图像更像模板。

要了解如何让他们持续通过容器的重启保留在容器内这些变化,你需要使用 docker 的数据量。请参阅如何在 ubuntu 14.04 与 docker 的数据量工作的详细信息。

本节介绍如何将容器的状态保存为新的 docker 镜像。

在 ubuntu 容器中安装 nodejs 之后,现在有一个容器运行一个映像,但容器不同于用来创建它的映像。

要将容器的状态保存为新图像,请先退出该容器:

exit

然后使用以下命令将更改提交到新的 docker 映像实例。- m 开关是提交信息,可以帮助您和其他人知道你做什么样的变化,而 - a 用于指定的作者。容器 id 是您在启动交互式 docker 会话时在教程中前面提到的那个。除非在 docker hub 上创建了其他存储库,否则该存储库通常是您的 docker hub 用户名:

docker commit -m  what did you do to the image  -a  author name  container-id repository/new_image_name

例如:

docker commit -m  added node.js  -a  sunday ogwu-chinuwa  d9b100f2f636 finid/ubuntu-nodejs

注意:当你提交图像时,新的图像保存在本地,也就是您的计算机上。

在本教程的后面,您将学习如何将图像推送到 docker 注册表(如 docker hub),以便您和其他人评估和使用它。

在该操作完成后,列出 docker 图像现在在您的计算机上应该显示新的图像,以及它的旧图像,它派生自:

docker images

输出应类似于:

output
finid/ubuntu-nodejs latest 62359544c9ba 50 seconds ago 206.6 mb
ubuntu latest c5f1cf30c96b 7 days ago 120.8 mb
hello-world latest 94df4f0ce8a4 2 weeks ago 967 b

在上面的例子中,ubuntu 的的 nodejs 是新的图像,将其从 docker 集线器现有的 ubuntu 图像而得。大小差异反映了所做的更改。在这个例子中,更改是 nodejs 已安装。所以,下次你需要运行一个容器使用 ubuntu 的 nodejs 预安装,你可以只使用新的形象。图像也可以从所谓的 dockerfile 构建。但是这是一个非常复杂的过程,完全超出了本文的范围。

第 7 步 – 列出 docker 容器

使用 docker 一段时间后,您的计算机上将有许多活动(正在运行)和不活动的容器。要查看活跃的,使用方法:

docker ps

您将看到类似于以下内容的输出:

output
container id image command created status ports names
f7c79cc556dd ubuntu  /bin/bash  3 hours ago up 3 hours silly_spence

要查看所有的容器 - 活动和非活动,它传递 - a 开关:

docker ps -a

要查看您所创建的最新的容器,它传递 - l 开关:

docker ps -l

停止正在运行或活动的容器就像输入:

docker stop container-id

该 container-id 可以从输出中发现,docker ps 命令。

第 8 步 – 将 docker 映像推送到 docker 存储库

从现有映像创建新映像后的下一个逻辑步骤是与您选择的几个朋友,docker hub 的整个世界或您可以访问的其他 docker 注册表共享它。要将映像推送到 docker hub 或任何其他 docker 注册表,您必须有一个帐户。

本节介绍如何将 docker 镜像推送到 docker hub。要了解如何创建自己的私人 docker 注册表,看看如何建立一个私人 docker 登记在 ubuntu 14.04。

要创建 docker hub 帐户,注册在 docker hub。之后,要推送您的映像,首先登录到 docker hub。系统会提示您验证:

docker login -u docker-registry-username

如果指定了正确的密码,身份验证应该会成功。然后您可以使用以下方式推送您自己的图片:

docker push docker-registry-username/docker-image-name

它需要一段时间来完成,当完成后,输出将类似于以下内容:

output
the push refers to a repository [docker.io/finid/ubuntu-nodejs]
e3fbbfb44187: pushed
5f70bf18a086: pushed
a3b5c80a4eba: pushed
7f18b442972b: pushed
3ce512daaf78: pushed
7aae4540b42d: pushed
..

将图片推送到注册表后,应将其列在您帐户的信息中心上,如下图所示。

如果推送尝试导致此类错误,则可能未登录:

output
the push refers to a repository [docker.io/finid/ubuntu-nodejs]
e3fbbfb44187: preparing
5f70bf18a086: preparing
a3b5c80a4eba: preparing
7f18b442972b: preparing
3ce512daaf78: preparing
7aae4540b42d: waiting
unauthorized: authentication required

登录,然后重复推送尝试。

以上就是关于“Ubuntu 下如何安装与使用 Docker”这篇文章的内容,相信大家都有了一定的了解,希望丸趣 TV 小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计9031字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)