开始,第 1 部分:方向和设置

欢迎!我们很高兴您想学习 Docker。Docker 入门教程将教您如何:

  1. 设置 Docker 环境(当前步骤)
  2. 生成映像并将其作为一个容器运行
  3. 缩放应用以运行多个容器
  4. 在群集中分发应用
  5. 通过添加后端数据库来堆栈服务
  6. 将应用部署到生产

Docker 概念

Docker 是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用 Linux 容器来部署应用程序称为容器化(containerization)。容器并不是新概念,但通过容器轻松部署应用程序则是最近才实现的。

容器化正在变得越来越流行,因为容器有以下特点:

  • Flexible 灵活性:即使是最复杂的应用也可以放入容器。

  • Lightweight 轻量性:容器利用并共享主机内核。

  • Interchangeable 通用性:可以即时部署更新和升级。

  • Portable 便携性:可以构建本地应用,部署到云端,并在任何地方运行。

  • Scalable 可扩展:可以增加和自动分发容器副本。

  • Stackable 可堆叠:可以即时纵向堆叠服务。

镜像和容器

通过运行镜像启动容器。镜像是一个可执行包,它包括运行应用程序所需的一切内容 -- 代码、运行时、库、环境变量和配置文件。

容器是镜像的运行时实例,执行时镜像在内存中变为什么(即具有状态的镜像或用户进程)。您可以看到运行容器的列表,该列表包含命令 docker ps,就像 Linux 中一样。

容器和虚拟机

容器在 Linux 上本机运行,并与其他容器共享主机的内核。它运行一个离散进程,不会占用比任何其他可执行文件更多的内存,因此它很轻量。

相比之下,虚拟机 (VM) 运行一个成熟的"来宾"操作系统,通过虚拟机管理程序虚拟访问主机资源。通常,VM 提供的环境比大多数应用程序需要的资源更多。

准备 Docker 环境

在受支持的平台上安装维护的 Docker 社区版 (CE) 或企业版 (EE)。

对于完整的Kubernetes集成

  • Docker 桌面上的 Kubernetes 适用于 Mac,提供 17.12 Edge (mac45) 或 17.12 Stable (mac46) 及更高版本。
  • 适用于 Windows 的 Docker 桌面上的 Kubernetes 在 18.06.0 CE (win70) 和更高版本以及Edge通道中可用。

测试 Docker 版本

  1. 运行 docker --version,并确保您具有支持的 Docker 版本:

    docker --version
    
    Docker version 17.12.-ce, build c97c6d6
  2. 运行 Docker info(或 docker version 不带 --),查看有关 Docker 安装的更多详细信息:

    docker info
    
    Containers:  Running:  Paused:  Stopped:  Images:  Server Version: 17.12.-ce Storage Driver: overlay2 ...

为了避免权限错误(和使用 sudo),请将用户添加到 docker 组。

测试 Docker 安装

  1. 通过运行简单的 Docker 镜像 hello-world 来测试您的安装是否正常工作:

    docker run hello-world
    
    Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7 Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker! This message shows that your installation appears to be working correctly. ...
  2. 列出下载到您的计算机的 hello - world 镜像:

    docker image ls
  3. 列出容器 hello-world(由对应镜像产生),它在显示信息后立刻退出了。如果容器仍在运行中,就不需要 --all 参数了:

    docker container ls --all
    
    CONTAINER ID IMAGE COMMAND CREATED STATUS 54f4984ed6a8 hello-world "/hello"  seconds ago Exited ()  seconds ago

概括和备忘单

## List Docker CLI commands
docker
docker container --help ## Display Docker version and info
docker --version
docker version
docker info ## Execute Docker image
docker run hello-world ## List Docker images
docker image ls ## List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq

第一部分的结论

容器化使得持续集成和持续部署(CI/CD)得以无缝实现。例如:

  • 应用程序不再对系统有依赖。

  • 更新可以推送到分布式应用程序的任何部分。

  • 资源密度可以被优化。

使用 Docker,扩展应用程序就是启动新的可执行文件,不运行繁重的虚拟机。

docker 入门1 - 方向 【翻译】的更多相关文章

  1. Docker入门教程(九)10个镜像相关的API

    Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...

  2. Docker入门教程(八)Docker Remote API

    Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...

  3. Docker入门教程(七)Docker API

    Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...

  4. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  5. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

  6. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  7. Docker入门教程(三)Dockerfile

    Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...

  8. Docker入门教程(二)命令

    Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...

  9. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

随机推荐

  1. Java FTP客户端开源类库 edtFTPj

    edtFTPj/Free是免费的流行的Java FTP库,全球公司依靠edtFTPj /Free 为它们的Java应用程序添加FTP客户端功能. (收费的支持SFTP.FTPS的edtFTPj/PRO ...

  2. Spark2.0协同过滤与ALS算法介绍

    ALS矩阵分解 一个 的打分矩阵 A 可以用两个小矩阵和的乘积来近似,描述一个人的喜好经常是在一个抽象的低维空间上进行的,并不需要把其喜欢的事物一一列出.再抽象一些,把人们的喜好和电影的特征都投到这个 ...

  3. JAVA 基础编程练习题34 【程序 34 三个数排序】

    34 [程序 34 三个数排序] 题目:输入 3 个数 a,b,c,按大小顺序输出. 程序分析:利用指针方法. package cskaoyan; public class cskaoyan34 { ...

  4. django的邮件email功能

    注意 测试的时候python manage.py test -p "test_tasks.py" -v 3,默认使用的EMAIL_BACKEND配置为:'django.core.m ...

  5. Caché,Cache数据库连接并查询数据

    1.Caché数据库安装好后,在开始菜单中启动 2.打开管理中心,地址为:http://localhost:57772/csp/sys/UtilHome.csp ,输入用户密码,登录 3.要对表数据进 ...

  6. HashMap和ConcurrentHashMap 源码关键点解析

    第一部分:关键源码讲解 1.HashMap  是如何存储的? a.底层是一个数组 tab b. hash=hash(key) ,然后根据数组长度n和hash值,决定当前需要put的元素对应的数组下标, ...

  7. ES6 javascript 实用开发方法技巧分享

    定义变量/常量 ES6 中新增加了 let 和 const 两个命令,let 用于定义变量,const 用于定义常量 两个命令与原有的 var 命令所不同的地方在于,let, const 都是块级作用 ...

  8. 工具 --- Git使用

    创建远程仓库 Github 首相在GitHub网站创建一个仓库:右上角加号➕,选择new repository 然后创建编辑仓库:名称.说明.是否公开.语言.分支风格等信息.然后创建. 复制仓库地址 ...

  9. C#实现隐藏手机号、邮箱、姓名等敏感信息扩展方法

    还是老惯例,直接上代码. 最终效果图: public static class HideSensitiveInfoExtension { /// <summary> /// 隐藏敏感信息 ...

  10. elasticsearch 映射 dynamic用法