Docker 是一个容器化平台,允许您快速构建,测试和部署应用程序,作为便携式,自给自足的容器,几乎可以在任何地方运行。

Docker 是容器技术的事实上的标准,它是 DevOps 工程师及其持续集成和交付管道的必备工具。

在本教程中,我们将指导您完成在 Debian 9 机器上安装 Docker 的过程,并探索基本的 Docker 概念和命令。

先决条件

在继续本教程之前,请确保以具有 sudo 权限的用户身份登录。本教程中的所有命令都应以非 root 用户身份运行。

在 Debian 上安装 Docker

以下步骤描述了如何从 Docker 的存储库安装最新的稳定版本的过程。

  1. 将已安装的软件包更新到最新版本:

    sudo apt update
    sudo apt upgrade
    1. 安装通过 HTTPS 添加新存储库所需的依赖项:
    sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
  2. 使用以下 curl 命令导入存储库的 GPG 密钥:

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

    键入以下内容,将 Docker APT 存储库添加到系统的软件存储库列表中:

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

    $(lsb_release -cs) 将返回 Debian 发行版的名称,在本例中,它返回 stretch 。

  3. 现在已启用 Docker 存储库,更新 apt 软件包列表并安装最新版本的 Docker CE (Community Edition):

    sudo apt updatesudo apt install docker-ce
    1. 安装完成后, Docker 服务将自动启动。您可以输入以下命令进行验证:
    sudo systemctl status docker
    ● docker.service - Docker Application Container Engine
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
    Active: active (running) since Fri 2018-07-27 17:02:07 UTC; 1min 14s ago
    Docs: https://docs.docker.com
    Main PID: 16929 (dockerd)
    CGroup: /system.slice/docker.service
    1. 在撰写本文时, Debian 9 的当前版本的 Docker 是 18.06.0-ce 。查看 Docker 版本:
    docker -v
    Docker version 18.06.0-ce, build 0ffa825

    在没有 sudo 的情况下执行 Docker 命令

    默认情况下,只有具有管理员权限的用户才能执行 Docker 命令。

    如果您希望以非 root 用户身份运行 Docker 命令而不 sudo 需要预先添加,则需要将用户添加到安装 Docker CE 软件包期间创建的 docker 组。您可以输入以下命令:

    sudo usermod -aG docker $USER

注销并重新登录,以便刷新组成员身份。

要验证您是否可以在不添加 sudo 前缀情况下运行 docker 命令,请运行以下命令(它将下载测试镜像),在容器中运行它,打印 “Hello from Docker” 消息并退出:

docker container run hello-world

输出应如下所示:

Docker 命令行界面

现在我们已经安装了 Docker ,让我们来看看 docker CLI 的基本语法:

docker [option] [subcommand] [arguments]

如果要列出所有可用的命令,请不带参数运行 docker :

docker

如果您需要关于 [subcommand] 的更多帮助信息,可以使用如下所示的 --help 开关:

docker [subcommand] --help

Docker 镜像

Docker 镜像由一系列文件系统层组成,这些文件系统层表现为镜像的 Dockerfile 中的指令,构成可执行软件应用程序。镜像是一个不可变的二进制文件,包括应用程序和运行应用程序所需的所有其他依赖项,如库,二进制文件和指令。

您可以将 Docker 镜像视为 Docker 容器的快照。

Docker Hub 上提供了大多数 Docker 镜像。

Docker Hub 是基于云的注册服务,用于将 Docker 镜像保存在公共或私有存储库中。

搜索 Docker 镜像

要从 Docker Hub 注册表中搜索镜像,请使用 search 子命令。

例如,要搜索 Debian 镜像,您可以键入:

docker search debian

输出应如下所示:

正如你可以看到搜索结果打印的表格有 5 列,NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED

官方镜像是 Docker 与上游合作伙伴共同开发的镜像。

Docker Hub 上的大多数 Docker 镜像都标有版本号。如果未指定任何标记, Docker 将提取最新镜像。

下载 Docker Image

如果我们想要下载 Debian 镜像的官方版本,我们可以使用 image pull 子命令来完成:

docker image pull debian

根据您的 Internet 速度,下载可能需要几秒钟或几分钟。

由于我们没有指定标签,因此 docker 将提取最新的 Debian 9.5 镜像。如果你想拉取一些以前的 Debian 版本,比如说 Debian 8, 你需要使用 docker image pull debian:8

下载镜像后,我们可以通过键入以下内容列出镜像:

docker image ls

输出看起来像这样:

删除 Docker 镜像

如果由于某种原因您要删除镜像,可以使用 image rm [image_name] 子命令执行此操作:

docker image rm debian

Docker 容器

镜像的实例称为容器。容器表示单个应用程序,进程或服务的运行时。

举一个可能不是最合适的类比:如果您是程序员,您可以将 Docker 镜像视为类,将 Docker 容器视为类的一个实例。

我们可以使用 docker container 子命令启动,停止,删除和管理容器。

启动 Docker 容器

以下命令将基于 Debian 镜像启动 Docker 容器。如果您没有本地镜像,将首先下载它:

docker container run debian

乍一看,在你看来,根本没有任何事情发生。嗯,那不是真的。 Debian 容器在启动后立即停止,因为它没有长时间运行的进程,我们没有提供任何命令,因此容器启动,运行空命令然后退出。

选项 -it 允许我们通过命令行与容器进行交互。要启动一个可交互的容器:

docker container run -it debian /bin/bash
root@ee86c8c81b3b:/#

正如您在容器启动时从上面的输出中看到的那样,命令提示符已更改,这意味着您现在正在从容器内部工作:

列出 Docker 容器

要列出活动容器,请键入:

docker container ls

如果您没有任何正在运行的容器,则输出将为空。

要查看活动和非活动容器,请使用选项 -a :

docker container ls -a

删除 Docker 容器

要删除一个或多个容器,只需复制容器 ID (或 或多个 ID)并将其粘贴到 container rm 子命令之后:

docker container rm c55680af670c

结论

您已经学习了如何在 Debian 9 机器上安装 Docker 以及如何下载 Docker 镜像和管理 Docker 容器。本教程几乎没有涉及 Docker 生态系统的表面。在我们的下一篇文章中,我们将继续深入探讨 Docker 的其他方面。

如何在 Debian 9 上安装和使用 Docker的更多相关文章

  1. 如何在Debian 9上安装和使用Docker

    介绍 Docker是一个简化容器中应用程序进程管理过程的应用程序.容器允许您在资源隔离的进程中运行应用程序.它们与虚拟机类似,但容器更便携,更加资源友好,并且更依赖于主机操作系统. 在本教程中,您将在 ...

  2. [译]How to Install Node.js on Ubuntu 14.04 如何在ubuntu14.04上安装node.js

    原文链接为 http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/ 由作者Jacob Nicholson 发表于October ...

  3. GPT分区基础知识及如何在GPT分区上安装WIN7

    大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区 ...

  4. 如何在Linux(Ubuntu)上安装Redmine

    费话就不多说了,本文主要描述如何在如何在Linux(Ubuntu)上安装Redmine.通过这篇文章你将了解如下内容. TL;DR 在Linux(Ubuntu)上安装Redmine的基本流程 配置ph ...

  5. 如何在windows2008/2012上安装启明星系统。

    启明星系统提供多种安装方式.安装包里自带了setup.exe.每个程序的 install下有在线安装(例如请假应用程序为book,则默认为 http://localhost/book/install ...

  6. windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2

    windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2 1.官网下载python3.6.2https://www.python.org/ftp/p ...

  7. Redis进阶实践之三如何在Windows系统上安装安装Redis(转载)

    Redis进阶实践之三如何在Windows系统上安装安装Redis 一.Redis的简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括 ...

  8. Redis进阶实践之二如何在Linux系统上安装安装Redis(转载)(2)

    Redis进阶实践之二如何在Linux系统上安装安装Redis 一.引言 上一篇文章写了“如何安装VMware Pro虚拟机”和在虚拟机上安装Linux操作系统.那是第一步,有了Linux操作系统,我 ...

  9. 如何在GPT分区上安装WIN7

    大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区 ...

随机推荐

  1. github上传本地项目代码

    进入github首页,点击新项目new repository,如下图所示: 然后进入如下页面,填写信息: 最后点击Create repository,生成如下页面: 红色圈圈画的步骤,先点击Clone ...

  2. AppDir【创建缓存目录】【建议使用这个工具类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 创建缓存目录 public static String APP_CACHE = "";// /storage/e ...

  3. Git管理修正(取消跟踪、合并commit)

    本文总结了最近使用Git时候遇到的两个问题: 1. 当将不必要跟踪的文件加入到仓库后如何处理? 2. 提交了多个功能相同的commit后如何处理? 总结经验 在创建仓库的一开始,就要设置号.gitig ...

  4. jhipster技术栈研究

    背景: 公司新的微服务项目都用jhipster脚手架来开发,这篇博客是jhipster里面涉及到技术的汇总目录 一.官方文档中涉及到的技术栈 前端技术栈 Angular / React / Vue R ...

  5. 为什么在定义hashcode时要使用31这个数呢?

    散列计算就是计算元素应该放在数组的哪个元素里.准确的说是放到哪个链表里面.按照Java的规则,如果你要想将一个对象放入HashMap中,你的对象的类必须提供hashcode方法,返回一个整数值. ht ...

  6. SpringBoot + sqlserver+mybatis

    一.maven引入 <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId&g ...

  7. java Excel文件流输出(后台)没有下载提示

    /**方案: *1. *问题源头应该是前端用的是ajax方式请求路径,要想出现下载Excel的弹窗,我个人理解应该是等同于重新打开一个窗口,而ajax默认不动页面直接将值返回,所以没有提升下载. *解 ...

  8. [I2C].I2C总线详解

    转自:https://www.cnblogs.com/BitArt/archive/2013/05/27/3101037.html 一. 基本信息 1. 概述 I²C 是Inter-Integrate ...

  9. MySQL/MariaDB数据库的半同步复制

      MySQL/MariaDB数据库的半同步复制 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL半同步复制概述 1>.MySQL默认的异步复制 默认情况下,M ...

  10. HTML&CSS基础-html注释功能

    HTML&CSS基础-html注释功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.什么是HTML(Hypertext Markup Language) 超文本标记 ...